Skip to content

Sparse volume compute and rendering on NVIDIA GPUs

License

Notifications You must be signed in to change notification settings

ramakarl/gvdb-voxels

 
 

Repository files navigation

NVIDIA(R) GVDB VOXELS Release 1.1

OVERVIEW

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: http://developer.nvidia.com/gvdb

RELEASE NOTES

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

REQUIREMENTS

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.

WHAT'S IN THE PACKAGE?

  • 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

SAMPLE USAGE

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.

WINDOWS - QUICK INSTALLATION

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

LINUX - QUICK INSTALLATION

Install Pre-requisites

  1. Install CMake
  • sudo apt-get install cmake-qt-gui
  1. Install the CUDA Toolkit 7.5 or later
  2. Install the NVIDIA R367 drivers or later
  • These can be downloaded from the NVIDIA website
  1. Remove the symoblic libGL, which may incorrectly point to the libGL mesa driver.
  • sudo rm -rf /usr/lib/x86_64-linux-gnu/libGL.so
  1. Link the libGL to the NVIDIA driver
  • sudo ln -s /usr/lib/nvidia-367/libGL.so /usr/lib/x86_64-linux-gnu/libGL.so
  1. 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 itself in a desired directory. (Here ~/packages/optix)

Set up build environment

  1. Clone the repository/unpack the source compressed file into a local directory (Here ~/packages/gvdb)
  2. Create a build directory
mkdir -P ~/packages/gvdb/build && cd ~/packages/gvdb/build

Build cuDPP Library

  1. Create a build directory for cudpp
mkdir shared_cudpp && cd shared_cudpp
  1. Configure cudpp and install to local install directory (since the CMakeLists is currently wonky)
cmake -DCUDA_SDK_ROOT_DIR=/usr/local/cuda-9.2/samples -DCMAKE_BUILD_TYPE=Release ../../source/shared_cudpp/ -DCMAKE_INSTALL_PREFIX=./install

make install
  1. Copy over the include files for cudpp since the CMakeLists isn't correctly configured right now
cp -r ../../source/shared_cudpp/include/ ./

Build GVDB Library

  1. Create a build directory for gvdb_library
cd .. && mkdir gvdb_library && cd gvdb_library
  1. Invoke cmake to generate config files (Using the appropriate CUDA version) and pointing to above build/install of shared_cudpp, and installing the library in a new root level install directory
cmake -DCUDA_SDK_ROOT_DIR=/usr/local/cuda-9.2/samples -DCMAKE_BUILD_TYPE=Release ~/packages/gvdb/source/gvdb_library  -DCUDPP_ROOT_DIR=~/packages/gvdb/build/shared_cudpp -DCMAKE_INSTALL_PREFIX=../../install

make install

Build sample(s)

  1. Follow a similar procedure for creating build directories for samples. The appropriate cmake command looks like (an additional command pointing to the extracted optix directory is needed for samples that use optix)
cmake -DCUDA_SDK_ROOT_DIR=/usr/local/cuda-9.2/samples -DCMAKE_BUILD_TYPE=Release ~/packages/gvdb/source/gFluidSurface/  -DCUDPP_ROOT_DIR=~/packages/gvdb/build/shared_cudpp -DGVDB_ROOT_DIR=~/packages/gvdb/install -DCMAKE_INSTALL_PREFIX=~/packages/gvdb/install -DOPTIX_ROOT_DIR=~/packages/optix

Running the samples

  1. Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/packages/gvdb/install/bin:~/packages/optix/SDK-precompiled-samples
  1. Run the sample!
cd ~/packages/gvdb/install/bin
./gDepthMap

License

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

2017 (c) NVIDIA

About

Sparse volume compute and rendering on NVIDIA GPUs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 43.7%
  • Cuda 35.3%
  • C++ 17.9%
  • CMake 1.6%
  • HTML 0.6%
  • Makefile 0.5%
  • Other 0.4%