GithubHelp home page GithubHelp logo

juampamuc / gvdb-voxels Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nvidia/gvdb-voxels

0.0 1.0 0.0 99.88 MB

Sparse volume compute and rendering on NVIDIA GPUs

License: BSD 3-Clause "New" or "Revised" License

GLSL 0.07% CMake 1.63% C++ 17.90% Cuda 35.33% C 43.70% Python 0.01% TeX 0.31% HTML 0.58% Makefile 0.47% Shell 0.01%

gvdb-voxels's Introduction

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

gvdb-voxels's People

Contributors

danilopeixoto avatar drmateo avatar icoderaven avatar katrinleinweber avatar nathanchrs avatar ramakarl avatar shenberg avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.