1 Real-time visualization of large detailed volumes on GPU Cyril Crassin, Fabrice Neyret, Sylvain Lefebvre INRIA Rhône-Alpes / Grenoble Universities Interactive GigaVoxels
2 Volumetric representations for special effects Volumetric special effects [KH05, KAP02] Impressive natural scenes Impressive natural scenes Accurate director vision modeling Realistic and controllable model Voxel engines Voxel engines Realistic global illumination models Effects compositing Particles, fluids, etc. Particles, fluids, etc. Unified rendering Costly rendering solutions Computations time Computations time Memory occupation Memory occupation Source: [Digital Domain]
3 What we do Voxels ray-casting for real-time scenes in Video Games Voxels ray-casting for real-time scenes in Video Games Full scenes representation Full scenes representation Multi-Scale: Large and detailed Multi-Scale: Large and detailed Hyper-texture usage Hyper-texture usage Details enhancement on surface-based scenes Details enhancement on surface-based scenes Procedural amplification Procedural amplification Advantages Advantages Compact representation for very small details Compact representation for very small details Memory and rendering efficiency Memory and rendering efficiency Easy filtering and LOD Easy filtering and LOD 3D Mip-Mapping A lot of tricky effects becomes easy A lot of tricky effects becomes easy Depth Of Field, volumetric light effects
4 Pictures and videos
5 Data structure Hybrid data structure N 3 -tree : Generalized Octree Allow multi-scale subdivision depending on data densities Allow multi-scale subdivision depending on data densities Limit tree depth for rendering performances Acceleration structure Acceleration structure Empty space skipping Dense, empty and detailed zones encoding Dense, empty and detailed zones encoding Small voxel grids in leafs Rendering performances Rendering performances Allow hardware filtering (Tri/Quadri-linear) Mip-Mapping Memory efficiency Memory efficiency Improve storage cost/structure cost efficiency Local density hypothesis in complex zones Data generation and transfer efficiency Data generation and transfer efficiency Regular blocs generation/loading Bloc transfers to the GPU
6Rendering Screen space volume ray-casting Direct N 3 -tree traversal on GPU Direct N 3 -tree traversal on GPU Close to GPU Kd-tree traversal for triangle ray-tracing [EVG04,FS05,HSHH07] Close to GPU Kd-tree traversal for triangle ray-tracing [EVG04,FS05,HSHH07] Kd-Restart is the most efficient on current architectures (G80/G92/GT200) Kd-Restart is the most efficient on current architectures (G80/G92/GT200) Regular bricks rendering in leafs Regular bricks rendering in leafs Volumetric ray-casting [KW03, Sch05] Hardware filtering Hardware filtering Mip-Mapping Mip-Mapping Adaptive sampling Distance dependant Distance dependant Advantages Advantages Good scaling on huge volumes Low dependency on data volume, low overdraw, few geometrical manipulation Low dependency on data volume, low overdraw, few geometrical manipulation Early rays termination Lighting Classical Blinn-Phong per ray sample Classical Blinn-Phong per ray sample On the fly computed or stored gradient data Shadow maps Shadow maps
7 Out-of-core data streaming (1) Produce / Store on GPU only data needed for the current point of view Tree update and bricks loading in real time during exploration Tree update and bricks loading in real time during exploration GPU Cache mechanism Pools of chunks Pools of chunks Implemented in texture memory Sub-Texture update operations Sub-Texture update operations Manually managed LRU mechanism Time stamps updated during rendering Time stamps updated during rendering Via visibility mechanism Tree storage: Nodes-Pool Tree storage: Nodes-Pool Classical pointer-based structure Small size 3D texture Bricks storage: Bricks-Pool Bricks storage: Bricks-Pool Very large 3D texture Usually the whole remaining GPU memory Usually the whole remaining GPU memory
8 Out-of-core data streaming (2) Visibility based loading and LOD Loaded tree branches subdivision/merging Loaded tree branches subdivision/merging Depending on brick distance to the view Depending on brick distance to the view A voxel project to one pixel constraint A voxel project to one pixel constraint Nodes visibility detection Nodes visibility detection Per ray needed nodes information provided by rendering Per ray needed nodes information provided by rendering Screen space Nodes ID buffers Screen space Nodes ID buffers Fast stream compaction operation Fast stream compaction operation Reduced Nodes ID buffer read back to CPU Reduced Nodes ID buffer read back to CPU Progressive loading Upper nodes used while waiting for new data Upper nodes used while waiting for new data Bricks kept in parents nodes Bricks kept in parents nodes Min of 3 levels kept for mip-mapping implementation
9 Results Scenes Lizard Lizard 2048^3 SP FLOAT, 32GB Visible Man Visible Man 2048^3 RGBA8, 32GB Bones field Bones field 8192^3 ALPHA8, 512GB (1GB on disk) Sierpinski sponge Sierpinski sponge 8.4M^3 ALPHA8 Clouds Clouds 512^3 SP FLOAT Hyper-texture usage
10 Visible Man 2048^3 RGBA8, 32GB, 2048^3 RGBA8, 32GB,
11Lizard 2048^3 SP FLOAT, 32GB, 2048^3 SP FLOAT, 32GB,
12 Sierpinski sponge 8.4M^3 ALPHA8 procedural,
13 Bones Field 8192^3 ALPHA8, 512GB (1GB on disk)
14Clouds 512^3 SP FLOAT 512^3 SP FLOAT
15 G80 Reverse Engineering Results Dzdz Dzdz See online: