Библиотека Direct3D 12 в современных компьютерных играх работает следующим образом:
- Быстрая подготовка draw call. 1 Это снижает нагрузку на CPU, сокращает время бездействия графического процессора и в результате даёт возможность выводить больше объектов на экран. 1
- Эффективное распределение нагрузки в многоядерной системе. 1 Это происходит благодаря тому, что прослойка API в стеке ПО, управляющем графическим процессором, стала тоньше по сравнению с Direct3D 11. 1 Многие функции, которые в Direct3D 11 выполнялись автоматически (управление памятью, синхронизация между очередями инструкций, поддержание параллелизма нагрузки на GPU и пр.), теперь полностью принадлежат игровому движку. 1
- Новая модель отправки работ. 3 Она основана на списках команд, содержащих всю информацию, необходимую для выполнения определённой рабочей нагрузки на GPU. 3 Так как каждый список команд является автономным и не наследует состояние, драйвер может предварительно вычислить все необходимые команды GPU заранее и в свободном потоке. 3
- Динамическое индексирование ресурсов в шейдерах. 3 Это обеспечивает гибкость и открывает новые методы отрисовки. 3
Таким образом, Direct3D 12 позволяет увеличить количество и геометрическую сложность объектов в сцене, повысить качество эффектов и реализовать совершенно новые (например, трассировка лучей). 2