We'll explore NVIDIA GVDB Voxels, a new open source SDK framework for generic representation, computation, and rendering of voxel-based data. We'll introduce the features of the new SDK and cover applications and examples in motion pictures, scientific visualization, and 3D printing. NVIDIA GVDB Voxels, based on GVDB Sparse Volume technology and inspired by OpenVDB, manipulates large volumetric datasets entirely on the GPU using a hierarchy of grids. The second part of the talk will cover in-depth use of the SDK, with code samples, and coverage of the design aspects of NVIDIA GVDB Voxels. A sample code walk-through will demonstrate how to build sparse volumes, render high-quality images with NVIDIA OptiX integration, produce dynamic data, and perform compute-based operations.
We introduce GVDB Sparse Volumes as a new offering with NVIDIA DesignWorks to focus on high quality raytracing of sparse volumetric data for motion pictures. Based on the VDB topology of Museth, with a novel GPU-based data structure and API, GVDB is designed for efficient compute and raytracing on a sparse hierarchy of grids. Raytracing on the GPU is accelerated with indexed memory pooling, 3D texture atlas storage and a new hierarchical traversal algorithm. GVDB integrates with NVIDIA OptiX, and is developed as an open source library as a part of DesignWorks.
We present a novel technique for visualization of scientific data with compute operators and multi-scatter ray tracing entirely on GPU. Our source data consists of a high-resolution simulation using point-based wavelets, a representation not supported by existing tools. To visualize this data, and consider dynamic time-based rendering, our approach is inspired by OpenVDB from motion pictures, which uses a hierarchy of grids similar to AMR. We develop GVDB, a ground-up implementation with tree traversal, compute, and ray tracing via OptiX all on the GPU. GVDB enables multi-scatter rendering at 200 million rays/sec, and full-volume compute operations in a few milliseconds on datasets up to 4,200^3 entirely in GPU memory.
The future of computing is parallelism, and good parallelism is achieved by knowing how to optimize your code. In this talk, I will cover some common best practices for CUDA that give large amounts of parallelism while being both easy to write and optimize. While established optimization techniques will be covered, we will also explore some more esoteric best practices that are now commonly available on newer hardware. CUDA provides a programming model that rewards attention to details to give great performance. This talk will cover practices, such as memory transactions and atomic ops, that are focused on giving you the tools you need to get the most out of your parallel code.