OpenVDB, an open source software project of the Academy Software Foundation (ASWF), has adopted NanoVDB to improve performance, ease development, and support GPU acceleration. Developed at NVIDIA by OpenVDB inventor Ken Museth, NanoVDB will be maintained by the OpenVDB community going forward.
OpenVDB is an industry standard library for manipulating, simulating and rendering the sparse dynamic volumes that VFX studios use to create realistic volumetric images such as water/liquid simulations and environmental effects like clouds and ice. OpenVDB creates VDB files, which are the volume database files containing data used to simulate these volumetric effects.
It has been used on films and television programs including ‘Frozen 2’, ‘Fantastic Beasts: The Crimes of Grindelwald’, ‘Stranger Things’ and ‘How to Train Your Dragon: The Hidden World’. The library is maintained by the ASWF, a collaborative effort to advance open source software development in the motion picture and media industries.
OpenVDB is also highly customisable, designed for high performance, and has been adopted by Houdini 3D animation tools, Pixar RenderMan, Solid Angle Arnold and Next Limit Technologies RealFlow, among many other visual effects and animation applications and methods. The library includes a hierarchical, dynamic data structure and tools for efficiently storing sparse volumetric data on three-dimensional grids.
GPU Acceleration and Rendering
A LevelSet rendered using NanoVDB on CUDA. Level set methods are used to change voxel values, deforming the-surface for a specific result.
One of OpenVDB challenges is that it was not designed for use with GPUs. Its dependency on external libraries has made it difficult to access and use its VDB data on GPUs. “OpenVDB’s decade of success has always been limited by its inability to leverage the computational advantages offered by modern GPUs,” said Ken Museth, Senior Director in Simulation Technology at NVIDIA and Chair of the OpenVDB Technical Steering Committee (TSC).
The NanoVDB library, however, creates a simplified representation that is compatible with the core data structure of OpenVDB. Using a compact, linearised, read-only representation of the VDB tree structure that is suitable for fast transfer and traversal of the tree hierarchy, the data stream is aligned for efficiency and can be used on GPUs and CPUs.
NanoVDB allows GPU acceleration of OpenVDB workflows such as ray tracing, filtering and collision detection, while maintaining compatibility with existing pipelines. It has no external dependencies, works with different graphics APIs including CUDA, OptiX, OpenCL, OpenGL and DirectX, and supports both voxel and point data. Because NanoVDB grids produce a compact, read-only VDB tree, they work well for rendering tasks.
It is able to convert between the NanoVDB and the OpenVDB data structures, back-and-forth, and create and visualise the data. Ken said, “NanoVDB opens the door to real-time applications of certain VDB workflows. While the initial focus of NanoVDB is real-time rendering, we’re confident its adoption marks a new and exciting era for the OpenVDB project as it finally taps into the potential of GPUs.”
Cloud OpenVDB dataset rendered on the GPU using NanoVDB.
NanoVDB is open source and available for download on the OpenVDB GitHub.
"OpenVDB is a large part of our VFX pipeline. NanoVDB offers exciting new potential for asset storage, simulation and rendering. It allows us to design more GPU-tailored VDB tools for faster and more responsive artist workflows,” said Nick Avramoussis, FX R&D Programmer at DNEG and member of the OpenVDB TSC. “We're now investigating how NanoVDB can be combined with OpenVDB AX to provide an artist-friendly interface for customisable GPU kernels throughout our pipeline.”
OpenVDB Version 7.1
The OpenVDB community has also released OpenVDB Version 7.1. The main updates include new fast sweeping methods that improve on existing techniques for computing signed distance fields as well as supporting velocity extension. The CMake build system, which configures the build files holding the commands and dependencies for OpenVDB components has been upgraded, and fixes applied to the core library and Houdini toolkit. www.aswf.io