Sparse volume compute and rendering on NVIDIA GPUs
Switch branches/tags
Nothing to show
Clone or download
Latest commit 25ed5f4 Dec 12, 2018



NVIDIA GVDB is a new library and SDK for compute, simulation and rendering of sparse volumetric data. Details on the GVDB technology can be found at:


3/25/2018, GVDB Voxels 1.1

  • Dynamic topology on GPU
  • Multiple contexts and GVDB objects
  • Multiple samples with OptiX support
  • Improved compute and raytrace performance
  • Render from any channel
  • Resampling functions
  • Grid transforms for rendering
  • All limitations in Programming Guide 1.0 addressed

9/19/2017, GVDB Voxels, Incremental fix

5/1/2017, GVDB Voxels, Release 1.0 Created: Rama Hoetzlein, 2017

  • First public release
  • Open source (BSD 3-clause)
  • Samples: g3DPrint, gFluidSurface, gInteractiveGL, gInteractiveOptix, gJetsonTX, gRenderKernel, gRenderToFile, gSprayDeposit
  • Builds on Windows and Linux
  • Runs on Quadro, GeForce, JetsonTX1/2, and Tegra/GRID


NVIDIA Kepler generation or later GPU Windows 7, 8, 10 64-bit Microsoft Visual Studio 2010 or higher CUDA Toolkit 6.5 or higher (Toolkit 8.0 recommended) CMake-GUI 2.7 or later OptiX 3.9.0 or later (InteractivOptix sample only, download from NVIDIA)

GVDB is released as a library with samples. The library and each sample is built separately, using cmake.


  • GVDB VOXELS Library
  • Code Samples
    See the included GVDB_Samples_Description.pdf for detailed sample descriptions.
    • gRenderToFile - Renders a sparse volume to a file using GVDB
    • gRenderToKernel - Renders a sparse volume using a custom user-kernel
    • gInteractiveGL - Interactive rendering of a volume using GVDB and OpenGL
    • gInteractiveOptiX - Interactive rendering of a volume and a polygonal model, with poly-to-poly and poly-to-voxel interactions.
    • g3DPrint - Demonstrates generating cross section slices for 3D printing from a polygonal model
    • gSprayDeposit - Demostrates simulated spray deposition onto a 3D part
    • gFluidSurface - Demostrates a dynamic simulation with surface rendering by GVDB (also point clouds from CPU)
    • gJetsonTX - Simple 3D Printing Driver for the JetsonTX1/2 with volume slicing on Tegra chip
  • GVDB VBX File Specfication
  • GVDB Sample Descriptions
  • GVDB Programming Guide


All interactive samples use the following user input interface Camera rotation -> move mouse Change orientation -> left mouse click Zoom -> right mouse click Panning -> hold middle button A few samples have on-screen GUIs with features that can be toggled by clicking on them.


Install dependencies

  1. Install cmake-gui 2.7 or later
  2. Install CUDA Toolkit 8.0
  3. Install OptiX 3.9.0 or later (for gInteractiveOptix sample)

Build GVDB Library

  1. Unzip the package or clone the git repository
  2. Run cmake-gui.
  • Where is source code: /gvdb/source/gvdb_library
  • Where to build bins: /gvdb/build/gvdb_library
  • Click Configure to prepare gvdb_library
  • Click Generate
  • Open /gvdb/build/gvdb_library/gvdb_library.sln in VS2010/2013
  • Build the solution in Debug or Release mode.
  • For whichever mode, you must build later samples with same build type.
  • The gvdb_library must be built prior to running cmake for any sample.

Build sample(s)

  1. Run cmake-gui.
  • Where is source code: /gvdb/source/g3DPrint
  • Where to build bins: /gvdb/build/g3DPrint
  • Click Configure to prepare g3DPrint
  • You should see that cmake locates the GVDB Library paths automatically
  • Specify any paths that cmake indicated are needed
  1. Click Generate
  2. Open /gvdb/build/g3DPrint/g3DPrint.sln in VS2010/2013
  3. Build the solution
  4. Run the sample! Select g3DPrint as the start up project. Click run/debug


Install Pre-requisites

  1. Install CMake
    • sudo apt-get install cmake-qt-gui
  2. Install the CUDA Toolkit 7.5 or later
    • sudo ./
    • Must be done first, before you install NVIDIA drivers
  3. Install the NVIDIA R367 drivers or later
    • These can be downloaded from the NVIDIA website
  4. Remove the symoblic libGL, which may incorrectly point to the libGL mesa driver.
    • sudo rm -rf /usr/lib/x86_64-linux-gnu/
  5. Link the libGL to the NVIDIA driver
    • sudo ln -s /usr/lib/nvidia-367/ /usr/lib/x86_64-linux-gnu/
  6. Install additional developer dependencies.
    • sudo apt-get install libxinerama-dev
    • sudo apt-get install libxrandr-dev
    • sudo apt-get install libxcursor-dev
    • sudo apt-get install libxi-dev
    • sudo apt-get install libx11-dev

Install OptiX [optional]

  1. OptiX is distributed as a .sh file, which extracts to the current dir.
  2. Create a directory for optix in /usr/lib and move the package there before extracting. - $ sudo mkdir /usr/lib/optix
  • $ sudo mv /usr/lib/optix
  • $ cd /usr/lib/optix
  • $ sudo ./

Set LD_LIBRARY_PATH in bashrc

  1. Open .bashrc. For example: $ emacs ~/.bashrc
  2. Add the following at the end: - export LD_LIBRARY_PATH=/usr/local/gvdb/lib:/usr/lib/optix/lib64 - The first path should be the location of (once installed) - The second path should be the location of
  3. Source the bash (re-run it) - $ source ~/.bashrc

Build GVDB Library

  1. Unpackage the source tar.gz file
  2. mkdir ~/codes/build/gvdb_library # make a folder for the build
  3. cmake-gui # run cmake-gui with the following settings: - source: ~/codes/source/gvdb_library - build: ~/codes/build/gvdb_library - Click Configure, and the nGenerate - cd ~/codes/build/gvdb_library - sudo make
    - sudo make install # default install is to /usr/local/gvdb

Build sample(s)

  1. Unpackage the source tar.gz file
  2. mkdir ~/codes/build/g3DPrint # make a folder for the build
  3. cmake-gui # run cmake-gui with the following settings: - source: ~/codes/source/g3DPrint - build: ~/codes/build/g3DPrint - Click Configure, and the nGenerate - Note: If GVDB is not found, set the GVDB_ROOT_DIR to /usr/local/gvdb - or your preferred gvdb install location from step 4. - cd ~/codes/build/g3DPrint - make - make install # remember to do 'make install' to get all files
  4. Run the sample! ./g3DPrint


========================== BSD 3-clause. Please refer to License.txt

2017 (c) NVIDIA