Unity Compute Shader Driven Wave Graph Animation
Note: The following project preview represents work in progress. While the general concept and underlying technical implementation are in place, the sequenced animation is far from complete and further creative direction / look development of the main Wave Graph actor and surrounding scene elements are pending.
Please do not share this link outside of your organisation without prior permission from the author :)
The animation above was created in Unity with the Universal Render Pipeline. GPU Instancing is used to procedurally render a dynamic surface made up of 1,000,000 individual cubes, positions for which are stored in a compute buffer and passed to the GPU along with a library of mathematical wave functions and a compute shader responsible for calculating updated values on each frame. An additional set of morphing functions allow for smooth interpolation between individual wave shapes.
In addition to exploration of the above technical concepts was the intention to create expressive visual content for an accompanying musical track. As such, various other input parameters are implemented to further modulate the resulting Wave Graph. These include depth control, a graph ’slicing’ function and the option to introduce various types of noise. These parameters are then exposed for modulation either via real-time user input or animated via the the Unity Timeline sequencer.
This projects builds on basic concepts (and maths) outlined in Jasper Flick’s excellent series of articles on Compute Shaders and Mathemetical Surfaces.