Microsoft ускорила рейтрейсинг в DirectX 12 за счёт переупорядочивания лучей — прирост скорости до 90 %

Читать в полной версии

Microsoft на мероприятии Game Developers Conference 2025 представила обновление графической платформы DirectX: в компоненте DXR (DirectX Raytracing) 1.2 стала доступной технология Shader Execution Reordering (SER). Это способ оптимизировать задачи трассировки лучей, отвечающей за реалистичное освещение, отражение и тени в современных играх.

Источник изображения: microsoft.com

В привычном исполнении задачи трассировки лучей выполняются «хаотичным» образом. При прорисовке сцены одни лучи света могут быстро пересечься с другими объектами, а другие — пройти длинный путь, который потребует сложных вычислений. В результате графический процессор выполняет разнородные задачи вперемешку, и эффективность параллельной обработки данных, которой славятся видеокарты, сокращается. SER помогает решить эту проблему: разработчик прямо в коде шейдера теперь может указывать оборудованию, какие вычисления схожи между собой, и их следует сгруппировать. Видеокарта собственными силами упорядочивает выполнение потоков, в результате чего общая её производительность возрастает.

Ранее DXR позволял драйверу распределять нагрузку самостоятельно, теперь на этот процесс может влиять и разработчик. С SER в языке шейдеров HLSL появились примитивы, через которые разработчик запрашивает новый порядок обработки потоков. Поддержка SER стала обязательным компонентом стандарта Shader Model 6.9. Это значит, что драйверы в обязательном порядке корректно обрабатывают такой код, хотя эффективность мер оптимизации может зависеть от оборудования.

Практический эффект от SER продемонстрировали на примере игры Alan Wake 2. В сочетании с технологией микрокарт прозрачности (Opacity Micromaps — OMM) механизм SER помог повысить производительность в трассировке лучей примерно на треть. Для игроков это значит, что можно рассчитывать на повышение частоты кадров, а для разработчиков — возможность добавлять дополнительные графические эффекты.

Традиционный алгоритм просчёта трассировки лучей предполагал связку двух этапов: собственно трассировки и сбора информации о попадании лучей, а также дополнительной обработки этой информации шейдером. С SER разработчик может сначала провести первый этап по всей сцене, собрать схожие результаты попадания лучей, сгруппировать их и только после этого запустить их дальнейшую обработку в пакете. Это помогает оптимизировать расход системных ресурсов. В тестовом примере на видеокарте Nvidia GeForce RTX 4090 технология SER дала прирост кадров на величину около 40 %, а на некоторых видеокартах Intel Arc серии B — до 90 %.