Компания Microsoft объявила об официальном релизе технологии Shader Execution Reordering (SER), которая стала важным дополнением к API DirectX Raytracing (DXR). Данная функция призвана решить одну из главных проблем современной трассировки лучей — дивергентное (расходящееся) выполнение шейдеров и нерегулярный доступ к данным, что негативно сказывалось на производительности графических процессоров из-за стохастической природы вычислений.

SER предоставляет разработчикам новые примитивы на языке HLSL, которые позволяют коду приложения напрямую информировать оборудование о том, как находить согласованность между лучами. Благодаря этому видеокарта может эффективно сортировать потоки и выполнять их параллельно. Ключевую роль в этом процессе играет концепция HitObject, которая отделяет обход структуры лучей (включая шейдеры AnyHit) от финальных стадий ClosestHit и Miss. Это дает невероятную гибкость, позволяя выполнять произвольный код генерации лучей между обходом, переупорядочиванием и обработкой попаданий/промахов.
Технология SER стала обязательной частью спецификации Shader Model 6.9, а это значит, что драйверы всех производителей видеокарт должны уметь принимать соответствующий шейдерный код. Для работы потребуется AgilitySDK 1.619 и компилятор DXC с поддержкой Shader Model 6.9. Microsoft уже подготовила простой пример D3D12RaytracingHelloShaderExecutionReordering в репозитории DirectX-Graphics-Samples, демонстрирующий впечатляющие результаты. Внутренние тесты показали прирост частоты кадров на 40% при использовании NVIDIA RTX 4090 и до 90% на некоторых конфигурациях с видеокартами Intel Arc B-Series по сравнению с отключенным SER.