AMD показала «тетраэдральные клетки» для рейтрейсинга анимированной геометрии

AMD показала «тетраэдральные клетки» для рейтрейсинга анимированной геометрии

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

Центральная идея статьи, разделить стоимость анимации и число треугольников. Вместо того чтобы анимировать каждый треугольник напрямую, метод строит низкополигональную тетраэдральную клетку (cage) вокруг исходного, неанимированного меша. На этапе предобработки меш разбивается на маленькие непересекающиеся куски, привязанные к тетраэдрам клетки, и для этих кусков один раз строятся статичные мини-BLAS (мини-структуры ускорения), которые затем переиспользуются. В рантайме анимируется только клетка. Луч, попадающий в анимированный тетраэдр, преобразуется в соответствующее пространство исходной («покоящейся») позы меша, где и пересекается со статичной геометрией. Получаемое движение, приближение: смещение вершин задаётся кусочно-линейной деформацией, которую задаёт клетка, а не гладким глобальным изгибом или полной покадровой анимацией каждой вершины.

Подход особенно выгоден для массивных сцен, где много копий одного и того же ассета анимируются каждая по-своему: под каждую уникальную деформацию нужна своя анимированная клетка, но все копии могут делить одни и те же статичные мини-меши и мини-BLAS исходной позы. Авторы показали это на деревьях, пятнах травы и лягушках и продемонстрировали объединённую сцену примерно с 585 миллионами анимированных треугольников при 60 кадрах в секунду на видеокарте AMD Radeon RX 9070 XT в разрешении 1080p. Метод совместим с частичными (partitioned) верхнеуровневыми структурами ускорения по спецификации Microsoft DirectX Raytracing (DXR) и может сосуществовать с кластерными структурами ускорения.

Компромисс метода, качество против производительности. Более грубая клетка дешевле и компактнее, более тонкая, точнее следует исходной анимации. Подход лучше всего подходит для анимации, сохраняющей связность геометрии: покачивающаяся растительность, трава, толпы, дальние персонажи, уровни детализации анимации (animation LOD). Он хуже подходит там, где визуально важны изменения топологии, очень мелкомасштабное движение или резкие деформации персонажей. Авторы также упоминают параллельную независимую работу Luton и Tricard (2026), которая исследует похожую идею тетраэдральной адресации, но использует несколько аппаратных лучей и без этапа отсечения (clipping).

AMD сообщает, что сейчас готовит примеры для DXR и header-only библиотеку на C++ для построения качественных тетраэдральных клеток для скиннинговых объектов, объектов с покадровой (keyframe) анимацией и статичных объектов, то есть публикация инструментария ещё не состоялась, готовится.

Ключевые факты

  • Статья Gruen с соавторами «Ray Tracing Massive Amounts of Animated Geometry» заняла 3-е место и получила Wolfgang Straßer Award (Best Paper) на High-Performance Graphics 2026
  • Метод строит низкополигональную тетраэдральную клетку вокруг статичного меша; в рантайме анимируется только клетка, а статичные мини-BLAS отдельных кусков меша переиспользуются
  • Демо: объединённая сцена с деревьями, травой и лягушками, около 585 млн анимированных треугольников при 60 кадрах/с на AMD Radeon RX 9070 XT в 1080p
  • Подход подходит для сохраняющей связность анимации (трава, листва, толпы, дальние персонажи, LOD анимации) и хуже, для смены топологии, мелкого движения и резких деформаций персонажей
  • AMD готовит (но ещё не выпустила) DXR-примеры и header-only C++ библиотеку для построения таких клеток для скиннинговых, keyframe-анимированных и статичных объектов

Почему это важно

Рейтрейсинг в реальном времени давно стал практической частью игровой графики, но плотная анимированная геометрия, трава, листва, толпы, существа, упирается в проблему масштабирования: в классическом пайплайне каждый уникально анимированный меш требует обновления и вершин, и своей структуры ускорения (BVH) каждый кадр, а стоимость растёт вместе с числом треугольников и объёмом памяти. Идея отвязать стоимость анимации от количества полигонов, переанимировать только грубую клетку вокруг меша, а не каждую вершину, снимает именно это узкое место и открывает дорогу сценам, которые раньше было слишком дорого обновлять каждый кадр.

Кому это важно

В первую очередь это интересно разработчикам игр и движков реального времени, которые работают с рейтрейсингом на GPU AMD и спецификацией Microsoft DirectX Raytracing (DXR), особенно в проектах с плотной растительностью, толпами персонажей или множеством уникально анимированных существ (открытые миры, массовые сцены). Так как AMD готовит header-only C++ библиотеку и примеры для DXR, аудитория, инженеры графики, которые смогут применить технику напрямую, а не только читать про неё в статье.

Как это применить

На этапе предобработки статичный (неанимированный) меш разбивается на небольшие непересекающиеся куски, привязанные к тетраэдрам низкополигональной клетки, и для этих кусков один раз строятся статичные мини-BLAS, которые затем переиспользуются между кадрами и даже между разными копиями одного ассета с разной анимацией. В рантайме анимируется только клетка; луч, попавший в анимированный тетраэдр, преобразуется в пространство исходной позы меша и там пересекается со статичной геометрией. Разработчик выбирает разрешение клетки как компромисс между точностью следования исходной анимации и стоимостью/памятью. Метод совместим с частичными верхнеуровневыми структурами ускорения DXR и кластерными структурами ускорения. Готовые DXR-примеры и C++ библиотека для построения клеток под скиннинг, keyframe-анимацию и статичные объекты, по словам авторов, находятся в разработке.

Можно ли доверять

Работа, рецензируемая научная статья, занявшая 3-е место и получившая награду Wolfgang Straßer Award (Best Paper) на профильной конференции High-Performance Graphics 2026, и опубликована через собственный ресурс AMD для разработчиков GPUOpen. Заявленный результат, не абстрактная оценка, а измеренный бенчмарк на реальной видеокарте AMD Radeon RX 9070 XT (около 585 млн анимированных треугольников при 60 кадрах/с в 1080p). Авторы также ссылаются на параллельную независимую работу Luton и Tricard (2026) в том же направлении тетраэдральной адресации, что указывает на сложившееся направление исследований, а не единичный изолированный результат.

Риски и подводные камни

Метод даёт приближённое движение: смещение вершин описывается кусочно-линейной деформацией по клетке, а не гладкой глобальной анимацией или точным покадровым движением каждой вершины, поэтому он хуже подходит там, где визуально важны изменения топологии, очень мелкомасштабное движение или резкие деформации персонажей крупным планом. Более грубая клетка дешевле, но менее точно следует исходной анимации, разработчику придётся балансировать качество и производительность под конкретную сцену. Наконец, готовый к использованию инструментарий, DXR-примеры и header-only C++ библиотека, на момент публикации ещё не выпущен, а лишь анонсирован как то, над чем AMD «усердно работает».