Cosmic Sludge
Shader/texture-based infection growth study.
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.
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.
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.
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.
Displaced texture
I’ll probably try and simplify this into a single point attribute setup in Houdini at some point, and bypass Nuke entirely.