As a final project for my DirectX class, a small group of peers and I decided to try to emulate high-end cloud
effects using voxels and billboards. The idea was to use voxels, or virtual boxes, to give each cloud a sense of volume.
Light coming through would pass through each box and dim itself based on how many boxes it passed through, creating the
effect of depth. Billboards would be scattered throughout the volume of the cloud to give it a visible texture.
Normally you would have to use a large amount of billboards to achieve the same effect, which is extremely inefficient
in the usual case where you have many clouds in your sky.
My role during this project was to develop a custom Perlin noise algorithm to scatter the billboards throughout the cloud.
I was also responsible for scattering the individual clouds throughout the sky with a similar algorithm.
Progress

With what little time we had to achieve this goal, we managed to create a decent looking result that implemented the voxel method, as well as a few custom-made post process effects, such as dynamic and atmospheric lighting, scattering, and bloom.
How It Works
Pictured here are the individual voxels rendered in green. The brightness of each ray of light is reduced by a scalar amount when passing through any one of the boxes. In order to achieve simulated perlin noise to place the billboards around these boxes, I created a simple 2D noise function that finds two noise numbers based on an x and y position. I then gather a few of the noise points around that position and use an interpolate function to smooth them out. This results in a smooth, turbulent, and random distribution.
