Physically-Based Volumetric Renderer
Pyroclastic Sphere Wedge
Project Overview
I developed a physically-accurate volumetric rendering system in C++ for creating visual effects commonly used in feature film production. The pipeline utilizes a ray marching algorithm to evaluate implicit volumes and deep shadow maps, generating realistic atmospheric effects including noise clouds, pyroclastic volumes, wisps, terrain elements, and level sets.
Technologies: C++, OpenImageIO, OpenEXR, SWIG
Technical Implementation
The rendering pipeline utilizes a multithreaded ray marching approach with physically-based scattering and shadowing models. Key technical components include:
Flexible rendering: Users can render within a sparse grid for bounded rendering or utilize unbounded volume evaluation depending on production requirements.
Dual ray marcher architecture: Separate ray marchers to evaluate deep shadow maps and render volumetric features, enabling physically-accurate light with shadow and scattering properties.
Adaptive step-size optimization: Dynamic step adjustment to balance performance optimization with rendering quality
Gallery
Below are three core effects that demonstrate the renderer’s capabilities with implicit volumes and procedural noise:
Fractal-Summed Perlin Noise
Perlin Noise that can be modified and animated to mimick nature known as Fractal-Sum Perlin Noise. Includes modifiable parameters such as frequency, amplitude, roughness, frequency jump, and octaves to create more complex effects.
Fractal-Sum Noise Slice
Pyroclastic Effects
Pyroclastic noise fields combined with implicit functions using iterative closest-point to create trailing smoke, cloud formations, and explosive noise.
Pyroclastic Sphere Slice
Wisps
Particle-based volume generation where millions of particles are stamped and baked into a density grid to create wispy, flowing volumes. These particles can also be constrained to spline paths and contribute to water-like or magical effects.
Wisp Slice