← На главную

Тетраэдральный каркас тянет 585M треугольников в 60 fps на RX 9070 XT

23.07.2026 13:10 · hackernews

Рендеринг с трассировкой лучей стал обычным делом в реальном времени, но анимированная геометрия по-прежнему упирается в апдейты структур ускорения. Статья Ray Tracing Massive Amounts of Animated Geometry от Gruen и коллег, получившая третье место Wolfgang Straßer Award (Best Paper) на High-Performance Graphics 2026, предлагает решение для сцен, где множество объектов деформируются по-своему. В обычном конвейере каждый уникально анимированный меш требует покадрового обновления вершин и bounding volume hierarchy — затраты растут с плотностью треугольников, и густая листва, трава, толпа или существа быстро съедают кадровый бюджет. Память тоже под ударом: каждому объекту нужна своя BVH.

Ключевая идея — отвязать стоимость анимации от количества треугольников. Вместо того чтобы анимировать каждый треугольник напрямую, вокруг исходного статичного меша строится низкоразреженный тетраэдральный каркас (cage). На препроцессинге меш режется на маленькие непересекающиеся куски, привязанные к тетраэдрам, и для этих кусков заранее собираются статичные мини-BLAS — они переиспользуются каждый кадр. В рантайме анимируется только сам каркас. Лучи, попавшие в деформированный тетраэдр, преобразуются в rest-pose пространство, где пересекают статичную геометрию. Движение вершин получается аппроксимированным: кусочно-линейная деформация от каркаса вместо гладкого глобального изгиба или полной per-vertex анимации.

Это особенно выигрышно, когда один и тот же ассет анимирован по-разному во множестве экземпляров. Для каждой уникальной деформации нужен свой каркас, но все они разделяют одни и те же rest-pose мини-меши и мини-BLAS. Авторы показывают сцену примерно с 585 млн анимированных треугольников, летающих на 60 кадрах в секунду на AMD Radeon RX 9070 XT при 1080p, — деревья, трава, лягушки. Их месседж не в том, что тетраэдральные каркасы заменяют остальные техники анимации, а в том, что это дополнительный дешёвый инструмент, когда бутылочным горлышком становятся обновления acceleration structure, время анимации или память. Параллельно схожую работу на тетраэдральной индирекции, но без стадии clipping, ведут Luton и Tricard (2026). Каркасные анимации можно сочетать с Microsoft DirectX Raytracing (DXR) Functional Spec, Part 2 — например, с партицированными top-level acceleration structures, — и они уживаются с cluster level acceleration structures.

Качество versus производительность регулируются степенью грубости каркаса: он дёшевле и компактнее, либо тоньше повторяет оригинальную анимацию. Подход лучше всего раскрывается на связных деформациях — качающейся растительности, траве, толпе, дальних персонажах и анимационных LOD. Там, где топология меняется, нужны очень мелкие движения или резкие деформации персонажей в фокусе, он не столь уместен. Команда GPUOpen уже готовит DXR-примеры и header-only C++ библиотеку для построения качественных тетраэдральных каркасов под скиннед-объекты, кейфреймы и статику.

Читать оригинал →