Accelerating OpenVDB on GPUs with NanoVDB

Originally published at: https://developer.nvidia.com/blog/accelerating-openvdb-on-gpus-with-nanovdb/

OpenVDB is the Academy award–winning, industry standard library for sparse dynamic volumes. It is used throughout the visual effects industry for simulation and rendering of water, fire, smoke, clouds, and a host of other effects that rely on sparse volume data. The library includes a hierarchical, dynamic data structure and a suite of tools for…

How does it compare to a solution like GVDB ? Will NanoVDB replace GVDB ?

André

NanoVDB primarily targets non-dynamic workflows like simulation-sourcing, rendering and collision-detection, as the VDB structure is streamed into a pointerless buffer.

However, GVDB’s dynamic functionality, such as points-to-grid and voxelization, will be handled by an, as yet unannounced, project which will be compatible with NanoVDB workflows. Stay tuned.

1 Like

Will GVDB no longer be supported moving forward? GVDB had a few useful features that I’m curious if NanoVDB or this unannounced project will support, such as explicit raytracing (3DDA raytracing from any point to another point, custom kernels to pass into ray traces, etc). Are there plans to support these in the future?

NanoVDB supports raytracing with custom kernels. Because it is a C++ library, you can simply construct a Ray and write a simple algorithm to trace and sample the volume however you choose.

For levelsets, helper functions already exist, e.g. nanovdb::ZeroCrossing(…)

There are some minimal examples doing both of these techniques in the library.

Any forthcoming project will also support this kind of functionality, and it will be a superset of GVDB features. Thanks for your interest.