A while back I was looking into making a nice looking water shader. It took quite some time and experimentation but finally I made a nice node group to easly create a nice water surface.
Before I waste any more of your time:
Yes I did make a paid product, but I also wanted to share a free version of it that has all the basic features thats needed for a nice water.
The free download is here: https://mart0nnn.gumroad.com/l/simplewater
A little breakdow of what I made:
Everything is contained in a shader node group, but I tried to make it so that you can customize the water as much as possible. Also everything is animatable.
And it includes dispersion and caustics as well:
And this is what the water shader looks like from the inside:
I also made a rain ripple generator that outputs a greyscale mask of ripples. To make this I got most of the knowledge from CG Matter in this specific video: https://www.youtube.com/watch?v=1eKkbgOaykw

The flow map was an interesting addition to the shader… So what I did is that I put all the objects that I wanted to affect the water into one collection then using the geometry proximity node in Geometry nodes. Then I transfered that data to the shader nodes. This gave me a greyscale map of proximity data that I could use to drive the vector of a combination of wave and noise textures.
This gave a pretty cool effect where the water surface looked like it was somewhat reacting to the geometry of the selected collection.

Also utilizing the geometry proximity is a geo nodes system that distributes leaves along the shoreline. This is just to add debris close to objects in the water.
I also made a geo node system that spawns raindrops onto the water surface:


This randomly spawns raindrom cards onto the surface of the water, and to add even more features, i made another geo node group which spawns raindrops on the surface of any object in the selected collection. In this I also made sure that the rain is only spawned on the top surface by separating the geometry by its normal Z axis and running it through a compare node.
Anyway… I spent lot of time experimenting and optimizing this project to make it as easy to use as possible. If you do want to get your hands on everything that I put together in this project you can get it on blendermarket for 4 dollars. And as I already mentioned I also made a free simpified version as well.
If you have any questions just feel free to ask!




