Cloud Renderer

Voxel cloud raymarcher based on Nubis

Role | Research · Rendering · Optimisation

Grade: 97/100

Overview

For BUAS Y2 block B, I did a research project.
For this project I chose to create a volumetric renderer, since I was very interested in how they work and their pretty results.

For this project I did a lot of research into different techniques, and ended up writing a technical article that explains the specifics.

Article Source

The disney cloud

Research

I researched multiple sources and techniques for this project.
I ended up mostly following the voxel technique in Nubis^3
since that aligned most with what I wanted, I explained more about my choices in my article

This allowed me to give a lot of artistic control to the clouds

Rainbow cloud kraken cloud Space Nebula Cloud with lightning

Optimisation

Rendering clouds is quite expensive so performance was a big concern while making this project
During the project I ran scalability tests and profiled using multiple tools like Pix and NSight

I implemented multiple high and lower level optimisations including:
- Adaptive sampling based on distance fields
- Caching of lighting data
- Block Compression
- Temporal, i.e. Reprojection, Jittering

Here is a document detailing some of my optimisations

Video showing runtime performance
Running on a RTX 4060 Laptop GPU at 1080p
Volumetric pass is under "Volumarcher: ..."

Usability

Since I planned on porting this to next block's custom engine team project Usability was a important factor.
For this I made the API simple to use, mainly having to supply settings and existing scene targets.

I also communicated with artists to make sure it would be usable for them to make clouds,
From this I created a houdini asset to generate VDB files to be rendered.

Clouds in houdini Same clouds in renderer

Showcase