Here's an easy way to make an interactive waterfall, by rendering particles to a render texture via an orthographic projection that's aligned with the waterfall surface. These particles define the negative space part of the waterfall - the gaps created by the objects blocking the water.
It uses very basic collision with the waterfall volume, emitting particles at the centre of each collider. It also adjusts the particle size based on the collider size, which works well for sphere colliders, but won't look great for box or mesh colliders. I'll have to implement a better collision system for particle spawning if we need support for more collider types.

There are three main parts to the effect.
Firstly and most importantly, is the Projector object, with the ProjectRendererToTexture component on it. This creates the render texture and defines an orthographic projection based on the scale of the object, so just make sure that the box fits around the areas of the waterfall where you want interaction to happen. It also draws a list of renderers to that render texture via a command buffer, in this case a particle system renderer, but it can be any renderer at all. Finally it sets the render texture to the waterfall material, as well as the orthographic projection matrix so that the mapping lines up.
Next is the WaterfallParticleEmission component, on the waterfall itself. This just checks for collision with objects in a certain layer (you might need to make sure you set the InteractionLayer layermask to match the objects when you import it into your project), and spawns particles.
Finally there's the waterfall material, which samples the render texture and uses the channels in that to draw the interaction effect.
I also added some splash particles around the interaction point.
There's a lot of ways to improve this effect, such as improving the collider support, which I'll be exploring in the future.
Note: For the SRP (URP and HDRP), command buffers don't currently allow you to set a custom projection matrix, they always use the main camera projection, which stops this from working. To get around that I expect you'd have to implement the particle drawing with the Custom Pass system. I hope Unity improves this support in the future.
You might also notice there's an inactive camera on the projection object, which calls
Camera.SetupCurrent(thisCamera);
This is required for rendering the particles in the command buffer correctly, otherwise they won't be properly aligned to the view. It's a completely undocumented function, but it works :P
I hope the code is all relatively self documenting and straight forward, but I'll do a proper write up of this technique when I have more time in the new year.
Thanks for your support.