Ray tracing massive amounts of animated geometry using tetrahedral cages - AMD GPUOpenRay tracing massive amounts of animated geometry using tetrahedral cages - AMD GPUOpen
AMD FSR™<br>AMD FSR SDK AMD FSR Upscaling AMD FSR Frame Generation AMD FSR Ray Regeneration AMD FSR Radiance Caching AMD FidelityFX SDK Super Resolution 3 (FSR 3) Super Resolution 2 (FSR 2) Super Resolution 1 (FSR 1) AMD FidelityFX SDK v1 Blur Breadcrumbs library Brixelizer/GI Ambient Occlusion (CACAO) Contrast Adaptive Sharpening (CAS) Denoiser Depth of Field (DoF) Lens HDR Mapper (LPM) Parallel Sort Downsampler (SPD) Screen Space Reflections (SSSR) Variable Shading TressFX Developer testimonials FidelityFX Naming Guidelines
Cauldron Framework AMD FSR Naming Guidelines<br>Hybrid Shadows Hybrid Stochastic Reflections
Tools<br>What Tools Do We Have? Radeon Developer Tool Suite Radeon™ GPU Detective Radeon™ Raytracing Analyzer Radeon™ GPU Profiler Radeon™ GPU Analyzer Radeon™ Memory Visualizer Radeon™ Developer Panel
GPU Reshape Compressonator Frame Latency Meter OCAT
SDKs<br>What SDKs Do We Have? AMD Radeon Anti-Lag 2 SDK AMD Driver/Hardware SDKs AMD GPU Services AMD Device Library eXtra Advanced Media Framework Streaming SDK GPU Performance API
Content Creation Radeon™ ProRender Suite Radeon™ ProRender SDK GPUOpen MaterialX Library Radeon™ Rays
Vulkan® Memory Allocator Direct3D®12 Memory Allocator HIP Ray Tracing Orochi Capsaicin Framework (GI-1.0) Render Pipeline Shaders Brotli-G SDK Dense Geometry Format SDK
Platform Support<br>Unreal Engine FSR Unreal Engine 5 plugin Unreal Engine Performance Guide AMD Schola (Unreal NPCs)<br>Unity Unity CPU Profiling Guide<br>Vulkan® Radeon™ Vulkan® Drivers Version Table Developing Vulkan® Applications<br>DirectX®12 DirectX®12 Ultimate Developing DirectX®12 Applications
Docs/Research<br>Meet all our blogs Getting Started Getting Started with our Software Getting Started with Development How to Become a Graphics Programmer General Developer Tech Articles
Popular articles Integrating Anti-Lag 2 SDK Matrix Compendium Mesh Shaders Work Graphs Crash Course in Deep Learning (Graphics)
Our Publications Advanced Rendering Research Group AMD Lab Notes (HPC)<br>AMD RDNA™ Performance Guide AMD GPU Architecture Machine-readable ISAs AMD Ryzen™ Performance Guide CPU Performance and Optimization<br>Software Manuals Presentations Samples
News/Events<br>Latest Developer News Recent Software Releases Hot new articles AMD FSR 'Redstone' SDK + the neural rendering future AMD FSR Upscaling 4.1 RDNA 3 support now available Latest Radeon Developer Tool Suite update AMD Schola v2: Next-gen RL for Unreal Engine Generative AI model for GI effects Neural Networks for Geometric Representation Generative AI on AMD Radeon GPUs
Events All Events GDC Digital Dragons Other events
Watch Our Videos
Share on Bluesky Share on Mastadon Share on LinkedIn Share on Twitter/X Share on Reddit Share on Facebook Share on Whatsapp Share via Email
Ray tracing massive amounts of animated geometry using tetrahedral cages
Originally posted: July 22, 2026
Holger Gruen
The animation scaling problem
Ray tracing has become a practical part of real-time graphics, but animated geometry still presents a difficult scaling problem. The paper Ray Tracing Massive Amounts of Animated Geometry by Gruen et al., winner of the third-place Wolfgang Straßer Award (Best Paper) at High-Performance Graphics 2026, tackles a common production case: scenes with many complex objects that all deform differently. In a conventional ray-tracing pipeline, every uniquely animated mesh may require both its vertices and its acceleration structure to be updated each frame. That computational cost grows with triangle density, so geometrically dense foliage, grass, crowds, or creatures can quickly consume the frame budget. As each unique animated object may need to store its own set of bounding volume hierarchy, memory consumption may become prohibitively high.
Figure 1. Animated scene with roughly 585 million animated triangles @ 60 frames per second (AMD Radeon™ RX 9070 XT GPU at 1080p)
Decoupling animation and triangles
The central idea of the paper is to decouple animation cost from triangle count. Instead of applying animation directly to every triangle, the method builds a low-resolution tetrahedral cage around the original, non-animated mesh. During preprocessing, the mesh is split into small, disjoint pieces associated with the tetrahedra. Static mini-BLASes are then built for these pieces once and reused. At runtime, only the cage is animated. Rays that enter an animated tetrahedron are transformed into the corresponding rest-pose space, where they can intersect the static geometry. The resulting motion is an approximation: vertex movement is represented by a piecewise-linear deformation induced by the cage, rather than by a smooth global bend or by full per-vertex animation.
This makes the approach especially attractive for massive scenes where many copies of the same asset are...