Cosmic Sludge

Shader/texture-based infection growth study.

cosmic_sludge_fr0044_4k.jpeg
cosmic_sludge_fr0077_4k.jpeg

 Overview

I revisited some old Nuke-based displacement techniques to generate an evolving growth texture which I could read into a ground shader in 3D for displacing and colouring.

My original demo of the Nuke setup was here:

Setup

The setup essentially uses vectors generated from a moving image to distort itself. The vectors are modified with noise and a couple of iterations of displacement/vectorblurring to break up the uniform gradients.

The base image going into the setup is driven by a simple point infection system in Houdini. I used those points to emit volumes in a 2D solver to create a volume that follows a growth path. That way you get some nice random path growth but with nice swirling and morphing qualities.

infection.gif
volume.gif

I then rendered that out and brought it into Nuke to create the main displacement effect.

The 2D distortion of the pyro render is driven by vectors generated from the render itself. By running the blurred alpha from the image through a sobel convolution filter, you can generate vectors which describe the average graduation. Feeding that into an idistort will then displace the image out radially. I broke the result up with some standard fBm noise.

volume_disp_01.jpeg
volume_disp_02.jpeg
volume_disp_03.jpeg

I then used them to displace a grainy noise pattern to create radial lines which I could then mult by the original vectors. This in turn generates a broken up displacement map that displaces the original image with radial rays.

Base noise texture

Base noise texture

Displaced/smeared to create radial lines

Displaced/smeared to create radial lines

Sobel vectors broken up with rays radiating outwards from each feature centre.

Sobel vectors broken up with rays radiating outwards from each feature centre.

accum.gif

Although the effect grows naturally from the volume going into the setup, I used a pattern of accumulating noise to randomly add bursts of growth and displacement throughout the texture, which creates the bubble bursting motion and drives the emission channel as well.

Nuke is extremely limited for this kind of thing, the only way to really accumulate values over time is to use the TimeEcho set to 'plus'. It's incredibly slow once the number of frames racks up, so I had to use a down-res'd texture of 256x256, then scaled back up to 4k after precomping the result out.



Input base texture

Input base texture

volume_disp_08.jpeg

Displaced texture

volume_displaced.gif
This is the emission map (which was multed by the beauty texture in shader). This was the result of the length of the current frame subtracted from the past few frames averaged together and averaged again with a TimeEcho.

This is the emission map (which was multed by the beauty texture in shader). This was the result of the length of the current frame subtracted from the past few frames averaged together and averaged again with a TimeEcho.

Final scene geo - just a plane displaced with some noise deformers, and coloured/displaced with the maps from the Nuke setup.

Final scene geo - just a plane displaced with some noise deformers, and coloured/displaced with the maps from the Nuke setup.

I’ll probably try and simplify this into a single point attribute setup in Houdini at some point, and bypass Nuke entirely.

Previous
Previous

End of a Species

Next
Next

Spectre