Waterfall and foam (breakdown)
Main components
- Watefall shader
- Foam shader
- Particle shader
- GPU instancing
- Custom lighting
- Shadow casting
- Custom vertex streams
Tools used
- Blender (modelling & UV mapping)
- Mixture (noise texutres)
- Unity URP
📝Description
The video shows a breakdown of my waterfall shader and particle systems that go with my water shader. It was made with Unity using URP and HLSL shaders. The waterfall consists of 4 models and 3 different particle systems. The models consists of the following:
- The "water" in the waterfall
- Three foam models
- One at the top to hide the transition between water and waterfall
- One intersecting the waterfall
- And the final one that surrounds the other foam at the bottom and has more clipping to give the impression of foam breaking away
The particle systems are divided as follows:
- One that spawns flow particles for use with the water shader
- One that throws small sprinkles up into the air (a simple billboard particle)
- And one that spawns splash meshes, which have have vertex displacement over lifetime, shading and shadow casting.
That last particle system was more complicated to make, but in the end I got it all working with GPU instancing in URP with an HLSL shader.
📘Acknowledgements
The approach and general look of the waterfall and all the foam is inspired by this talk by Simon Trümpler (aka Simon schreibt), where he talks about VFX in the game Rime including a waterfall.
The water from the waterfall borrows a lot from my water shader, so check that out for more info and acknowledgements on that.