Go back
Getting started
|
22/4/2025

ZibraVDB Glossary

VDB vs. NanoVDB vs. ZibraVDB

VDB (OpenVDB) – Stands for Volumetric Database. VDB is an open data structure and library originally developed by DreamWorks Animation for efficiently storing and manipulating sparse volumetric data. It is optimized for high-quality offline rendering and simulations. It provides detailed volumetric effects like smoke, fire, and explosions with physically accurate lighting and shading but requires significant storage and processing power.

NanoVDB – A GPU-friendly version of OpenVDB also developed by Nvidia, designed to enable efficient GPU access and computation. It features a compact, standalone implementation that optimizes memory layout for GPU architectures, enabling faster processing of volumetric data on graphics hardware. While more efficient than standard OpenVDB for GPU workflows, it maintains compatibility with the core OpenVDB data structures and can be used across different GPU vendors.

ZibraVDB – A highly optimized compressed volumetric data structure developed by Zibra AI. It implements advanced compression algorithms that can reduce file sizes by up to 99% while preserving essential visual details. ZibraVDB features a high-performance real-time decompression system, enabling smooth real-time playback of complex volumetric sequences without preprocessing delays. This technology strikes an ideal balance between computational efficiency, storage optimization, and visual fidelity, making it particularly valuable for applications with resource constraints or when working in environments with limited processing power or bandwidth.

ZibraVDB comparison table

Compression and decompression

Compressor

A component of ZibraVDB that converts volumetric data (VDB sequence) into compact .zibravdb format. ZibraVDB is designed to reduce file size while maintaining high visual quality. It uses lossy compression to optimize VDB files and selectively lower volumes’ resolution without affecting perceived quality. The compression rate depends on the compression quality parameter.

Real-time decompressor

A ZibraVDB component that allows decompression to occur on the fly and enables real-time playback for large volumetric effects. It decodes compressed frames on demand, can stream compressed data and decompress frames in chunks.

Compression Quality

ZibraVDB compression quality parameter controls how well a compressed volumetric dataset retains its original detail, structure, and accuracy after the compression process. It measures the trade-off between reducing the file size and preserving the integrity of the 3D volumetric data. The aim is to achieve the smallest possible file size while maintaining as much of the original quality and resolution as possible.

Per Channel Compression

The Per Channel Compression is an option of ZibraVDB compressor that allows for more efficient compression by handling each data channel (such as density, temperature, and flame) separately. Unlike uniform compression algorithms that apply the same method to all channels, this technique offers greater control and optimization of the compression process.

Volume Channels

Volume channels store different types of data in 3D grids, representing properties of a volume like density, color, or velocity in simulations. Each channel holds specific information that describes the state of the volume at each point.

Types of Volume Channels:

  • Float Channels:
    Store scalar values (single numbers).
    Uses: Represent properties like density (smoke), temperature, or SDF.
    Example: In a smoke simulation, a float channel might store the density of smoke at each voxel.
  • Vector Channels:
    Store vectors, e.g. direction and magnitude (XYZ), color (RGB).Uses:
    Represent properties like color, velocity, or force (in fluid simulations).
    Example: A vector channel might store the direction and speed of particles in a simulation.

For now, ZibraVDB allows compression and decompression of float channels. However, it still allows the compression of vector channels if they are compressed in separate float channels for custom use.

Rendering

Real-time Rendering

It is the process of generating and displaying images or animations for real-time playback, allowing for interactive experiences. It aims to render frames quickly enough (typically 30–60 FPS or higher) so that users can engage with the content without noticeable delays. This is crucial for applications like video games, virtual reality (VR), virtual production, and simulations, where users interact with dynamic environments. Optimizations like GPU acceleration and techniques such as level of detail (LOD), culling, and baking help achieve smooth performance while maintaining visual quality.

Heterogeneous Volume

The concept of heterogeneous volumes as used in computer graphics and simulations, particularly in volumetric rendering, emerged through the development of techniques for simulating and rendering complex, dynamic materials like smoke, fire, and clouds, which have varying properties at different points in space.

Unreal Engine is one of the key platforms that popularized the use of heterogeneous volumes for real-time rendering, especially with the development of its Volumetric Fog and Niagara systems. These systems allow for the simulation of dynamic, spatially varying properties in volumetric effects.

ZirbaVDB has its own rendering material, which works faster. However, you can switch it to Heterogeneous Volume for Path Tracing Rendering when needed.

Path Tracing Rendering

It is a rendering technique that simulates realistic lighting by tracing the paths of light as they interact with surfaces in a scene. It accounts for direct and indirect lighting, including reflections, refractions, and shadows, creating photorealistic images. Path tracing is computationally intensive, producing noisy results initially, which requires denoising. It’s mainly used in offline rendering for film and high-quality visual effects, but advancements in hardware are allowing real-time use in video games and simulations.

In ZibraVDB plugin for Unreal Engine, you can enable the Use Heterogeneous Volume parameter, this will allow the volume to be rendered with Path Tracing.

{{path-tracing="/components"}}

Ray Marching

It is a technique used in game engines to render complex volumetric effects like smoke, fog, or clouds, and to simulate implicit surfaces such as fractals or distance fields. The method involves casting rays into a scene and progressively stepping along their path, sampling the environment at each point to accumulate data (e.g., color, opacity).

How Ray Marching Works:

  1. Ray Casting: A ray is cast from the camera into the scene.
  2. Ray Marching Step Size: At each step along the ray, a predefined distance is traveled. The step size determines how far the ray moves between samples. A smaller step size increases detail but requires more computations.
  3. Ray Marching Step Count: The step count refers to the total number of steps the ray takes before terminating. More steps lead to finer detail, but also greater computational cost.
  4. Ray Marching Filtering: After sampling, filtering is often applied to the collected data to smooth out noise, reduce artifacts, or refine the visual output, such as by softening transitions in volumetric effects or blending light absorption and scattering.

In ZibraVDB plugin for Unreal Engine you can control Ray Marching Main Step Size and Ray Marching Max Main Steps for Illumination. As well as Ray Marching Self Shadow Step Size and Ray Marching Max Self Shadow Steps for shadows.

{{real-time-rendering="/components"}}

Illumination Resolution defines the level of quality of lighting, shadows, and light interactions that are represented and processed in a scene. It directly influences both the visual quality and performance of rendering.

Higher illumination resolution results in more realistic lighting and shadows but requires more memory and processing power. Lower resolution boosts performance but reduces visual fidelity, making lighting and shadows appear less detailed or blurred.

In ZibraVDB plugin for Unreal Engine, the default illumination resolution is ¼, but since this parameter is exposed you can change the Illumination Resolution to your liking. *changing illumination resolution to 1 may drop your scene performance significantly.

Channel Scales, Scattering, and Absorption Colors are key parameters in volumetric rendering that affect how light interacts with a medium.

  • Scattering Color defines the hue of light that is redirected by the particles, such as blue scattering in the sky.
  • Absorption Color controls which wavelengths (colors) of light are absorbed by the medium, affecting its final appearance.
  • Density/Temperature/Flame Scale controls opacity of the channels for rendering

Together, these parameters define how a volumetric material behaves when light passes through it.

You are welcome to play with these parameters in ZibraVDB plugin for Unreal Engine.

Ambient Lighting is a type of non-directional light that evenly illuminates a scene without a specific source or direction. It simulates the natural light that fills a space, bouncing off surfaces and diffusing to reach all areas, creating a uniform light level.

In 3D rendering and game engines, ambient lighting helps ensure that objects are visible even in shadowed areas. However, it lacks shadows and depth, which can make the scene appear flat unless supplemented with other light types like directional or point lights.Ambient lighting is often adjusted to provide a balanced, subtle light that prevents areas from being too dark, without overpowering the scene’s primary light sources.

You can enable and change ambient light intensity, and contrast in ZibraVDB plugin for Unreal Engine.

{{ambient-lighting="/components"}}

Emission Masking controls which areas of a volume emit light or energy in simulations like fire or explosions, allowing selective illumination within the volume. It helps focus emission in specific regions by removing it from low density areas. This technique enhances visual realism by mimicking natural light behavior and improves performance by reducing unnecessary lighting calculations.

You can enable and select channels for Emission Masking in the ZibraVDB plugin for Unreal Engine. The parameters Mask Center, Width, Intensity, and Mask Ramp allow you to achieve the specific look you're aiming for.

{{emission-masking="/components"}}