Как проходит геометрия
В типичном графическом проходе input assembler подаёт вершины и индексы. Vertex shader преобразует вершины; дополнительные стадии могут выполнять тесселяцию или геометрические операции. Rasterizer определяет покрытие экранных выборок примитивами, pixel shader вычисляет выходные значения. Output merger применяет связанные с глубиной, трафаретом и смешиванием правила.
Эта последовательность объясняет, почему число полигонов не описывает всю нагрузку. Маленькая по геометрии плоскость с дорогим полноэкранным материалом может требовать много вычислений, тогда как многочисленные простые объекты упираются в подготовку команд или переключения состояний. Для диагноза нужны измерения отдельных проходов.
Device и context
Объекты ресурсов и шейдеров создаются через устройство, а контекст задаёт состояние и команды. Модель позволяет менять многие части графического состояния отдельно. Runtime и драйвер выполняют часть управления, которую более явные API передают приложению. Это упрощает некоторые сценарии разработки, но скрытая работа тоже имеет стоимость.
При большом числе маленьких объектов CPU может тратить заметное время на подготовку однотипных вызовов. Тогда полезны пакетирование, instancing и сокращение лишних изменений материалов. Покупка более быстрого GPU не устраняет автоматически ограничение в CPU-подготовке кадра; художнику стоит проверить количество отдельных объектов и материалов.
Шейдеры и вычислительные проходы
HLSL описывает программируемые операции. Один и тот же художественный материал обычно превращается в несколько вариантов программ: для теней, основного освещения, прозрачности или специальных режимов. Compute shader позволяет обрабатывать данные вне обычного рисования треугольников, например выполнять фильтрацию или подготовку промежуточных буферов.
Наличие compute не означает, что любой алгоритм заработает быстро. Организация памяти и объём записываемых данных остаются существенными. Равным образом Direct3D 11 не следует отождествлять с конкретной системой GI: движок может применять запечённые карты, экранные эффекты или иные реализованные разработчиком методы.
Что означает совместимость
Название API и доступные аппаратные возможности нужно проверять вместе. Движок может требовать определённый feature level или формат ресурса, а не просто наличие установленного DirectX. Возможности редактора также не всегда совпадают с режимом опубликованного приложения. Для рабочего проекта фиксируют версию программы, ОС, GPU и драйвера.
Практическая рекомендация: если приложение предлагает D3D11 и D3D12, сначала сверяйте список доступных в каждом режиме функций. Выбор более старой модели может быть осознанным решением для совместимости существующего проекта. Он не доказывает худшего изображения, но может исключать отдельные современные возможности конкретного движка.
Когда переход на D3D12 оправдан
Переход имеет смысл при конкретной инженерной задаче: уменьшить расходы подготовки команд, управлять очередями или использовать возможности нового backend. Он требует переработки ресурсов и синхронизации, поэтому простая замена вызовов не гарантирует ускорения. Microsoft отдельно описывает различия управления состояниями и временем жизни памяти.
Для визуализатора полезный тест состоит из одинаковых камер, разрешения, материалов и целевого качества. Проверяют время кадра, устойчивость анимации, появление артефактов и доступность функций. Если проект меняет одновременно API и алгоритм освещения, результаты уже характеризуют всю конфигурацию, а не чистое сравнение интерфейсов.