Microsoft опубликовала предварительную версию кластерной геометрии DirectX Raytracing (DXR) и разделенных структур ускорения верхнего уровня (PTLAS), которые обеспечивают значительный прирост производительности и экономию памяти по сравнению с существующими конвейерами. Эти функции обещают значительно повысить производительность и эффективность трассировки лучей, что существенно снизит требования к видеопамяти.
В отличие от растеризации, при которой графический процессор обрабатывает каждый треугольник по отдельности, трассировка лучей требует дополнительных вычислений, чтобы определить, как миллионы световых лучей смешиваются и пересекаются с треугольниками. Чтобы снизить вычислительные затраты, игровые движки используют иерархию ограничивающих объемов (Bounding Volume Hierarchy, BVH), которая позволяет вкладывать мелкие объекты в более крупные. Возьмем, к примеру, чашку внутри коробки, которая стоит в грузовике: луч проходит через большой грузовик, затем через меньшую коробку внутри него, пока не достигнет точного треугольника чашки.
Традиционно DXR разделяет их на два уровня: структуру ускорения нижнего уровня (Bottom-Level Acceleration Structure, BLAS), которая определяет геометрию отдельного объекта (например, модели персонажа), и структуру ускорения верхнего уровня (Top-Level Acceleration Structure, TLAS), которая определяет расположение всех этих объектов в виртуальном мире. Графический процессор должен перестраивать или обновлять оба уровня каждый раз, когда объект перемещается или анимируется. Достаточно сказать, что в современных масштабных открытых мирах использование этой структуры ускорения верхнего уровня (TLAS) может привести к значительному увеличению требований к видеопамяти и вычислительным ресурсам.
Чтобы решить эту проблему, Microsoft внедряет в свой API DXR технологию Partitioned TLAS (PTLAS), которая позволяет при трассировке лучей фокусироваться на изменениях в конкретной области, сохраняя при этом данные структуры ускорения в других областях. PTLAS разбивает игровой мир на отдельные зоны, поэтому, если в одной из них происходит изменение, графический процессор пересчитывает и перезаписывает данные только для этой конкретной области.
Microsoft также внедряет технологию Clustered Geometry для решения проблемы с библиотекой BLAS, что должно сократить нерациональное использование видеопамяти. Эта функция позволяет игровому движку повторно использовать одни и те же предварительно созданные кластеры модели, а не дублировать данные для высокодетализированных и низкодетализированных (LOD) версий. Таким образом, по утверждению Microsoft, использование видеопамяти сокращается на целых 90 %.
Чтобы было понятно: мы говорим не об общем использовании видеопамяти в игре, а исключительно о трассировке лучей. Тем не менее это впечатляющая оптимизация. Более того, кластерная геометрия и PTLAS могут работать как вместе, так и по отдельности, без каких-либо ограничений.
Чтобы перевести все это в цифры, Microsoft продемонстрировала тестовую сцену на AMD Radeon RX 9070, где при включении кластерной геометрии и PTLAS время построения сократилось с 788 мс до 3,11 мс. Это примерно в 254 раза меньше, что неплохо. В результате частота кадров выросла с 1,2 до 79 кадров в секунду, то есть в 66 раз. В то же время использование видеопамяти сократилось на 89,7 % — с 774 до 7519 МБ.
И самое приятное во всем этом то, что кластерная геометрия и разделенные структуры ускорения верхнего уровня (PTLAS) совместимы с современными графическими процессорами. По данным Microsoft, эти функции будут поддерживаться видеокартами Nvidia GeForce RTX 50-й серии, AMD Radeon RX 9000-й серии, Intel Arc B-серии, процессорами Intel Core Ultra (серии 200V и Series 3) и однокристальными системами Qualcomm Snapdragon после выхода соответствующих драйверов.


