Mostly accomplished via a fragment shader that draws a radial gradient with overlay blending using grab pass.
Standard-issue god ray sprites using overlay emphasize direct sunlight from above. The other lights have a teal hue to fake bounce from the water.
First, a gradient at the bottom. Then some wiggle by animating a uv offset quantized to texels. Offset direction changes every other pixel column:
floor(i.uv.x * _MainTex_TexelSize.z) % 2 * 2 - 1
Lower the waterfall's alpha to complete the distorted/watery vibe 🌊
Streams are added with the same UV tricks as the wiggle, but fancier. I had tons of params like speed, size, color, etc. so I could experiment and tweak things just right 👌
The curve is the interesting bit and it's just texelDistanceFromCenter^2 * curveAmount
As they appear in the GIF (from top to bottom), I added particles for:
- sunlight reflections on top
- water splashes on rocks
- sunlight on edges
- 4 fixed position streams in falls
- long streams randomly in falls
- spray at the bottom
(also, wobbly mist sprites)