
Команда DirectX представила самое масштабное обновление подсистемы трассировки лучей с момента ее запуска в 2018 году. В превью-версии Agility SDK 1.722 разработчикам открыли доступ к кластерной геометрии и разделяемым структурам ускорения верхнего уровня (PTLAS). Нововведения устраняют давнее узкое место DXR, когда постоянный пересчет BVH для насыщенных динамических сцен приводил к большим потерям производительности. Параллельно с этим Microsoft выпустила версию Agility SDK 1.620, которая принесла инструменты отладки DirectX Dump Files и оптимизации шейдеров.
Проблема BVH
В базовой архитектуре DirectX Raytracing геометрия сцены организуется в двухуровневое дерево ограничивающих объемов (Bounding Volume Hierarchy — BVH). Структуры нижнего уровня (Bottom-Level Acceleration Structure — BLAS) содержат фактические полигональные данные отдельных мешей, а структура верхнего уровня (TLAS) объединяет экземпляры этих объектов в глобальном пространстве кадра.
В высокодетализированных сценах с плотными сетками, постоянным стримингом ассетов и скелетной анимацией этот подход создает «бутылочное горлышко»: при малейшей деформации модели движку приходится либо выполнять затратную полную перестройку BLAS на GPU, либо применять операцию рефита, которая сохраняет топологию, но быстро деградирует по плотности охвата лучей. В результате растеризация давно научилась отображать микрополигональную геометрию без просадки частоты кадров, а подсистема трассировки упиралась в нехватку видеопамяти и времени на пересчет ограничивающих контейнеров.
Источник.
Кластерная геометрия и структуры PTLAS
Для устранения этих ограничений Microsoft внедрила в Agility SDK 1.722 Preview интерфейс Clustered Geometry. Геометрия дробится на небольшие независимые кластеры (до 256 треугольников и вершин в каждом). Вместо создания монолитных деревьев для каждого крупного объекта движок компонует структуры ускорения нижнего уровня из этих стандартизированных кластеров. При локальных изменениях или анимациях перестраиваются только затронутые блоки, а не полигональный массив целиком. Такой подход позволяет рендереру использовать один и тот же детализированный меш как для стандартного пайплайна растеризации, так и для структур трассировки лучей.
В паре с кластеризацией представлена технология Partitioned TLAS. PTLAS позволяет изолированно модифицировать конкретные секторы глобальной сцены без полного пересчета всего графа TLAS. Обе операции поддерживают сборку полностью на стороне GPU: отпадает необходимость задействовать центральный процессор и гонять данные через PCIe перед диспетчеризацией лучевых шейдеров.
Результаты тестов и аппаратная совместимость
Разработчики продемонстрировали улучшения на примере тестового стенда D3D12RaytracingClusteredGeometry, запущенного на видеокарте AMD Radeon™ RX 9070.
Источник.
Переход от обычного ребилда BLAS к кластерной модели сократил время построения структур ускорения с 788 мс до 3,11 мс (то есть ускорение примерно в 254 раза), а общее время выполнения трассировки сократилось с 72,6 мс до 9,27 мс. Потребление видеопамяти под финальные структуры ускорения снизилось с 7 519 МиБ до 774 МиБ (экономия почти 90%). Платой за параллелизм стало увеличение требований к промежуточной рабочей памяти: под построение статичных кластеров потребовалось 526 МиБ против 1,83 МиБ в классическом сценарии. Итоговая частота кадров в демонстрационном тесте выросла с 1,2 FPS до 79 FPS.
В Microsoft подчеркивают, что этот синтетический тест смоделирован для условий, где кластеризация максимально эффективна, поэтому в реальных играх прирост будет «варьироваться».
Источник.
Microsoft подчеркивает, что кластеризованный пайплайн не требует новых аппаратных инструкций сверх уже реализованных в чипах с поддержкой DXR. Ранее похожие техники применялись вендорами изолированно — примером служит проприетарная технология RTX Mega Geometry от NVIDIA, показанная в Gears of War: E-Day. Текущее обновление стандартизирует подход на уровне API DirectX 12. На этапе предварительного тестирования заявлена поддержка на видеокартах семейств NVIDIA® GeForce RTX®, AMD Radeon™ RX 9000, ускорителях Intel® Arc™ B-Series и встроенной графике процессоров Core™ Ultra при наличии актуального драйвера.

Арендуйте сервер с доставкой на вашу площадку
Предоставим мощные серверы для запуска проекта on-premise с помесячной оплатой, полным контролем над железом на этапе запуска и возможностью выкупа.
Арендовать →
Оптимизация компиляции шейдеров и стабильный Agility SDK 1.620
Помимо экспериментальных функций DXR в предварительной сборке, Microsoft выпустила стабильный релиз Agility SDK 1.620 с улучшениями в подсистеме Advanced Shader Delivery.
Основное нововведение — «частичные графические программы». Механизм позволяет компоновать и повторно использовать предварительно скомпилированные шейдерные модули в различных конфигурациях графического конвейера. Это решает проблему раздувания бинарных файлов и минимизирует микрофризы во время фоновой jit-компиляции на этапе загрузки локаций. Пока оптимизация доступна только на адаптерах Radeon™ RX 7000 и RX 9000, но в будущих релизах вендоры добавят поддержку на других архитектурах.
В релиз 1.620 также включены специализированные файлы дампов DirectX Dump Files для анализа аварийных завершений видеодрайвера, барьеры синхронизации Fence Barriers Tier 1, интерфейсы пакетирования команд Batched Asynchronous Command List и API компилятора DirectX Compute Graph для ускорения инференса машинного обучения. Финальная версия компилятора с поддержкой Shader Model 6.10 запланирована к выходу в составе декабрьского Agility SDK 1.621.
А что вы думаете по поводу такого обновления? Делитесь мыслями в комментариях.
Источник: habr.com