1 real-time visualization of large detailed volumes on gpu cyril crassin, fabrice neyret, sylvain...
TRANSCRIPT
11
Real-time visualization of large detailed volumes on GPU
Cyril Crassin,Cyril Crassin, Fabrice Neyret, Sylvain LefebvreFabrice Neyret, Sylvain Lefebvre
INRIA Rhône-Alpes / Grenoble UniversitiesINRIA Rhône-Alpes / Grenoble Universities
Interactive GigaVoxels
22
Volumetric representations for Volumetric representations for special effectsspecial effects
Volumetric special effectsVolumetric special effects [KH05, [KH05, KAP02]KAP02]
Impressive natural scenesImpressive natural scenesAccurate director vision modelingAccurate director vision modelingRealistic and controllable modelRealistic and controllable model
Voxel enginesVoxel enginesRealistic global illumination modelsRealistic global illumination modelsEffects compositingEffects compositing
Particles, fluids, etc.Particles, fluids, etc.Unified renderingUnified rendering
Costly rendering solutionsCostly rendering solutions Computations timeComputations time Memory occupationMemory occupation
Source: [Digital Domain]
33
What we doWhat we do Voxels ray-casting for real-time scenes in Voxels ray-casting for real-time scenes in Video GamesVideo Games
Full scenes representationFull scenes representation Multi-Scale: Large and detailedMulti-Scale: Large and detailed
Hyper-texture usageHyper-texture usage Details enhancement on surface-based scenesDetails enhancement on surface-based scenes Procedural amplificationProcedural amplification
AdvantagesAdvantages Compact representation for very small detailsCompact representation for very small details
Memory and rendering efficiencyMemory and rendering efficiency Easy filtering and LODEasy filtering and LOD
3D Mip-Mapping3D Mip-Mapping A lot of tricky effects becomes easyA lot of tricky effects becomes easy
Depth Of Field, volumetric light effectsDepth Of Field, volumetric light effects
44
Pictures and videosPictures and videos
55
Data structureData structureHybrid data structureHybrid data structure
NN33-tree : Generalized Octree-tree : Generalized Octree Allow multi-scale subdivision depending on data Allow multi-scale subdivision depending on data
densitiesdensitiesLimit tree depth for rendering performancesLimit tree depth for rendering performances
Acceleration structure Acceleration structure Empty space skippingEmpty space skipping
Dense, empty and detailed zones encodingDense, empty and detailed zones encoding
Small voxel grids in leafsSmall voxel grids in leafs Rendering performances Rendering performances
Allow hardware filtering (Tri/Quadri-linear)Allow hardware filtering (Tri/Quadri-linear)Mip-MappingMip-Mapping
Memory efficiencyMemory efficiencyImprove storage cost/structure cost efficiencyImprove storage cost/structure cost efficiencyLocal density hypothesis in complex zonesLocal density hypothesis in complex zones
Data generation and transfer efficiencyData generation and transfer efficiencyRegular blocs generation/loadingRegular blocs generation/loadingBloc transfers to the GPUBloc transfers to the GPU
66
RenderingRenderingScreen space volume ray-castingScreen space volume ray-casting
Direct NDirect N33-tree traversal on GPU-tree traversal on GPU Close to GPU Kd-tree traversal for triangle Close to GPU Kd-tree traversal for triangle ray-tracing [EVG04,FS05,HSHH07]ray-tracing [EVG04,FS05,HSHH07]
Kd-Restart is the most efficient on current Kd-Restart is the most efficient on current architectures (G80/G92/GT200)architectures (G80/G92/GT200)
Regular bricks rendering in leafsRegular bricks rendering in leafsVolumetric ray-casting [KW03, Sch05]Volumetric ray-casting [KW03, Sch05]
Hardware filteringHardware filtering Mip-MappingMip-Mapping
Adaptive samplingAdaptive sampling Distance dependantDistance dependant
AdvantagesAdvantagesGood scaling on huge volumesGood scaling on huge volumes
Low dependency on data volume, low overdraw, Low dependency on data volume, low overdraw, few geometrical manipulationfew geometrical manipulation
Early rays terminationEarly rays termination
LightingLighting Classical Blinn-Phong per ray sampleClassical Blinn-Phong per ray sample
On the fly computed or stored gradient dataOn the fly computed or stored gradient data Shadow mapsShadow maps
77
Out-of-core data streaming (1)Out-of-core data streaming (1)Produce / Store on GPU only data needed for the current Produce / Store on GPU only data needed for the current point of viewpoint of view
Tree update and bricks loading in real time during explorationTree update and bricks loading in real time during exploration
GPU Cache mechanismGPU Cache mechanism Pools of chunksPools of chunks
Implemented in texture memoryImplemented in texture memory Sub-Texture update operationsSub-Texture update operations
Manually managed LRU mechanismManually managed LRU mechanism Time stamps updated during renderingTime stamps updated during rendering
Via visibility mechanismVia visibility mechanism
Tree storage: Nodes-PoolTree storage: Nodes-PoolClassical pointer-based structureClassical pointer-based structureSmall size 3D textureSmall size 3D texture
Bricks storage: Bricks-PoolBricks storage: Bricks-PoolVery large 3D texture Very large 3D texture
Usually the whole remaining GPU memoryUsually the whole remaining GPU memory
88
Out-of-core data streaming (2)Out-of-core data streaming (2)Visibility based loading and LODVisibility based loading and LOD
Loaded tree branches subdivision/mergingLoaded tree branches subdivision/merging Depending on brick distance to the viewDepending on brick distance to the view
A voxel project to one pixel constraintA voxel project to one pixel constraint Nodes visibility detectionNodes visibility detection
Per ray needed nodes information provided by renderingPer ray needed nodes information provided by rendering Screen space Nodes ID buffersScreen space Nodes ID buffers
Fast stream compaction operationFast stream compaction operation Reduced Nodes ID buffer read back to CPUReduced Nodes ID buffer read back to CPU
Progressive loadingProgressive loading Upper nodes used while waiting for new dataUpper nodes used while waiting for new data Bricks kept in parents nodesBricks kept in parents nodes
Min of 3 levels kept for mip-mapping implementationMin of 3 levels kept for mip-mapping implementation
99
ResultsResults
Scenes Scenes LizardLizard
2048^3 SP FLOAT, 32GB2048^3 SP FLOAT, 32GB Visible ManVisible Man
2048^3 RGBA8, 32GB2048^3 RGBA8, 32GB Bones fieldBones field
8192^3 ALPHA8, 512GB (1GB on disk)8192^3 ALPHA8, 512GB (1GB on disk) Sierpinski spongeSierpinski sponge
8.4M^3 ALPHA88.4M^3 ALPHA8 CloudsClouds
512^3 SP FLOAT512^3 SP FLOATHyper-texture usageHyper-texture usage
1100
Visible ManVisible Man 2048^3 RGBA8, 32GB, 20FPS@512^22048^3 RGBA8, 32GB, 20FPS@512^2
1111
LizardLizard 2048^3 SP FLOAT, 32GB, 15FPS@512^22048^3 SP FLOAT, 32GB, 15FPS@512^2
1122
Sierpinski spongeSierpinski sponge8.4M^3 ALPHA8 procedural, 80FPS@512^38.4M^3 ALPHA8 procedural, 80FPS@512^3
1133
Bones FieldBones Field8192^3 ALPHA8, 512GB (1GB on disk)8192^3 ALPHA8, 512GB (1GB on disk)
1144
CloudsClouds 512^3 SP FLOAT512^3 SP FLOAT
1155
G80 Reverse EngineeringG80 Reverse Engineering
ResultsResults
DzdzDzdz
See online:See online: http://www.icare3d.org/GPU/CN08http://www.icare3d.org/GPU/CN08