AMD презентовала собственную технологию трассировки лучей, которая позволяет значительно снизить потребление памяти и вычислительных ресурсов. Об этом сообщил научный сотрудник AMD Хольгер Груен в статье GPUOpen, опубликованной 17 сентября.
Новая разработка основана на использовании тетраэдрических ячеек, что позволяет трассировать лучи в реальном времени для сотен миллионов независимо анимированных треугольников без больших накладных расходов на структуры ускорения (BVH). Технологию продемонстрировали на масштабной сцене с ландшафтом, которая содержала 25 тысяч анимированных растений. При максимальном уровне детализации одно растение состояло примерно из 2,8 миллиона треугольников, а всего в сцене трассировалось около 500 миллионов анимированных треугольников в каждом кадре с применением основных и теневых лучей. Демонстрация работала со скоростью более 60 FPS в разрешении 1080p на видеокарте Radeon RX 9070 XT.
Главным достижением разработки стало существенное уменьшение объёма памяти, необходимой для структур ускорения, и времени на их обновление. Традиционно для трассировки лучей независимо анимированные объекты должны поддерживать и обновлять собственные BVH, что при росте сложности сцены становится ресурсоёмким. AMD предложила хранить сложную геометрию в более простых деформированных тетраэдрических ячейках. Вместо обновления каждой вершины и связанной с ней структуры ускорения анимируется только окружающая ячейка, а плотная геометрия и её BVH остаются пригодными для повторного использования. Перед проверкой пересечения лучи возвращаются в исходную систему координат.
По данным AMD, это позволяет сократить объём памяти для структур ускорения примерно в 47 раз, а время обновления BVH — более чем в 90 раз. При этом тетраэдрические ячейки уступают в точности контроля над анимацией отдельных вершин, поэтому подходят преимущественно для густой растительности, травы, толпы или персонажей на расстоянии, но не для задач, где требуется точная деформация и изменение топологии сетки.
AMD также работает над примерами трассировки лучей для DirectX (DXR) и библиотекой C++ с открытым исходным кодом, чтобы помочь разработчикам интегрировать новую технологию в собственные рендеринг-конвейеры. В настоящее время это лишь демонстрация, а не готовая к внедрению функция, однако она открывает перспективу создания сложной геометрии без необходимости в мощных видеокартах с большим объёмом VRAM.

