INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds...
Transcript of INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds...
![Page 1: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/1.jpg)
Rama Hoetzlein, NVIDIA Corporation July 27th 2016Ken Museth, Dreamworks Animation & SpaceX
INTRODUCING GVDB SPARSE VOLUMES
![Page 2: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/2.jpg)
2
SIMULATION IN MOTION PICTURESIncreasing detail and complexity..
Property of DreamWorks Animation
![Page 3: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/3.jpg)
3
THE SOLUTION: VOXELSSimulations are easier to perform on voxels
![Page 4: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/4.jpg)
4
OPENVDB: SPARSE VOLUMESKen Museth, Lead Developer of OpenVDB
Ken Museth, VDB: High-resolution sparse volumes with dynamic topology, Transactions on Graphics, 2013
![Page 5: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/5.jpg)
5
INTRODUCING
NVIDIA® GVDB SPARSE VOLUMES
Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation
![Page 6: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/6.jpg)
6
INTRODUCING
NVIDIA® GVDB SPARSE VOLUMES
Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation
![Page 7: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/7.jpg)
7
INTRODUCING
NVIDIA® GVDB SPARSE VOLUMES
Each Blue Brick is 83 = 512 voxels. Total Size: 3344 x 568 x 3384 = 5.5 GB (24 GB dense)
![Page 8: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/8.jpg)
8
What is GVDB?
NVIDIA® GVDB is a GPU-based framework for VBD data structures inspired by the award-winning software library OpenVDB used for motion picture visual effects and modelling, with tools to enable full volume compute operations and high quality raytracing.
INTRODUCING
NVIDIA® GVDB SPARSE VOLUMES
![Page 9: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/9.jpg)
9
High Quality Raytracing
INTRODUCING
NVIDIA® GVDB SPARSE VOLUMES
NVIDIA® GVDB integrates with NVIDIA® OptiX to deliver efficient, generalized raytracing of sparse volumes with global illumination.
GVDB Raytracing on GPU is 10x-30x faster than CPU rendering
![Page 10: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/10.jpg)
10
NVIDIA® GVDB WITH NVIDIA® OptiX integration enables interactive editing of materials and lighting of volumes.
![Page 11: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/11.jpg)
11
NVIDIA® GVDB direct raytracing of level set surfaces and volumetric data with CUDA kernels.
![Page 12: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/12.jpg)
12
NVIDIA® GVDB SPARSE VOLUMES
Compatibility with OpenVDB
Features:
• Spatial layout and numerical values identical to OpenVDB
• Uses fast VBX cache format internally, yet able to translate to and from OpenVDB files
• Run-time configuration of VDB topology
![Page 13: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/13.jpg)
13
NVIDIA® GVDB SPARSE VOLUMES
Compute Operations
Sparse volume compute operations are supported with CUDA using a single kernel launch over all bricks.
User-created kernels can easily access neighbors.
![Page 14: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/14.jpg)
14
API Library UsageExample Host code: Example Kernel code:
NVIDIA® GVDB is focused on motion picture developers.
gvdb.SetCudaDevice ( devid ); // Optional
gvdb.Initialize (); // Start GVDB
gvdb.LoadVBX ( scnpath ); // Load volume
// Screen pixels
gvdb.AddRenderBuf ( 0, w, h, 4 );
cuModuleGetFunction ( &cuRaycastKernel,
cuCustom, “my_raycast_kernel" )
// Custom render
gvdb.RenderKernel ( cuRaycastKernel );
unsigned char* buf = malloc ( w*h*4 );
gvdb.ReadRenderBuf ( 0, buf );
save_png ( “out.png", buf, w, h, 4 );
#include "cuda_gvdb.cuh“..
__global__ void raycast_kernel ( uchar4* outBuf )
{
int x = blockIdx.x * blockDim.x + threadIdx.x;
int y = blockIdx.y * blockDim.y + threadIdx.y;
if ( x >= scn.width || y >= scn.height ) return;
rayMarch ( gvdb.top_lev, 0, scn.campos,
rdir, hit, norm ); // Trace ray into GVDB
if ( hit.x != NOHIT ) {
float3 R= normalize ( reflect3 ( eyedir, norm ) );
float clr = tex3D ( envmap, R.xy );
} else {
clr = make_float3 ( 0.0, 0.0, 0.1 );
}
outBuf [ y*scn.width + x ] = make_uchar4(
clr.x*255, clr.y*255, clr.z*255, 255 );
}
NVIDIA® GVDB SPARSE VOLUMES
![Page 15: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/15.jpg)
15
NVIDIA® GVDB SPARSE VOLUMES
Upcoming Release
API Library with multiple samples
Based on CUDA
Integration with OpenVDB and NVIDIA® OPTIX
Open Source with BSD 3-clause License
Available in late September 2016
![Page 16: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/16.jpg)
16
“ GVDB is a new rendering engine for VDB data,
uniquely suited for NVIDIA GPUs and perfectly
complements the CPU-based OpenVDB standard
while improving on performance. I am excited to take
part in the future adoption of GVDB in the open-source
community for visual FX.”
— Dr. Ken Museth, Lead Developer of OpenVDB (DreamWorks Animation & SpaceX)
![Page 17: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/17.jpg)
17
NVIDIA® GVDB SPARSE VOLUMES
Application Areas
Scientific Visualization
See GTC 2016 talk: Raytracing Scientific Data in NVIDIA OptiX with GVDB Sparse Volumes
Motion Pictures
3D Printing
![Page 18: INTRODUCING GVDB SPARSE VOLUMES · 7/27/2016 · Volume rendering 5GB surface in GVDB in 5 seconds Data Property of DreamWorks Animation. 7 INTRODUCING NVIDIA® GVDB SPARSE VOLUMES](https://reader033.fdocuments.net/reader033/viewer/2022050400/5f7e1c0477c41b18192534b9/html5/thumbnails/18.jpg)