Организация Khronos Group анонсировала выпуск нового кроссплатформенного расширения Vulkan под названием VK_EXT_ray_tracing_invocation_reorder. Эта технология, также известная как переупорядочивание выполнения шейдеров (Shader Execution Reordering или SER), призвана повысить производительность трассировки лучей за счет оптимизации работы графического процессора. Ранее аналогичная функциональность была доступна только в рамках расширения от NVIDIA.
Проблема, которую решает SER, заключается в дивергенции — явлении, когда потоки в одной группе на GPU начинают выполнять разные задачи. В трассировке лучей это происходит постоянно: после первого отскока от поверхности лучи разлетаются в случайных направлениях, попадают на разные материалы и требуют вызова разных шейдеров. В результате GPU вынужден последовательно обрабатывать множество мелких и разнообразных задач, что снижает общую эффективность.
Технология Shader Execution Reordering позволяет разработчикам бороться с дивергенцией. Ее ключевая идея — разделить процесс трассировки на несколько этапов. Вместо одного вызова функции traceRayEXT теперь используется последовательность из трех: hitObjectTraceRayEXT для трассировки и поиска пересечения, reorderThreadEXT для перегруппировки потоков и hitObjectExecuteShaderEXT для непосредственного вызова шейдера материала. Функция reorderThreadEXT приостанавливает выполнение и дает графическому процессору возможность отсортировать потоки так, чтобы те, которым предстоит выполнить одинаковую работу (например, вызвать один и тот же шейдер), оказались в одной группе. Это значительно повышает когерентность вычислений.
Эффективность нового подхода уже подтверждена в реальных проектах. В технодемо Black Myth: Wukong использование SER ускорило проход трассировки глобального освещения в 3.7 раза. Разработчики Indiana Jones and the Great Circle сообщили об ускорении от 11% до 24% после внедрения и оптимизации технологии. В Alan Wake 2 комбинация SER с другими техниками оптимизации позволила снизить затраты на трассировку лучей примерно на 39%. Синтетические тесты Microsoft также показывают прирост частоты кадров от 40% до 90% в зависимости от GPU.
Что касается поддержки, то полное аппаратное ускорение SER доступно на видеокартах NVIDIA GeForce RTX 40 и 50 серий. Модели RTX 20 и 30 серий также поддерживают расширение, но без функции переупорядочивания. Intel обеспечивает поддержку на графике Arc B-серии и процессорах Core Ultra второго поколения. AMD планирует добавить поддержку расширения в будущих выпусках драйверов.
похоже это реально крутая тема. интересно как будет с большим количесвом отскоков.