How to easily setup a good water shader in Blender

Piero De Tomi
4 min readJan 4, 2023

--

Water is such a complex material, with specific features like reflection and refraction and building a water shader in 3d programs is not a trivial task.

Today I’ll show you a simple and quick — but still effective — water shader setup in Blender 2.80.

For the demonstration I’ve setup a very basic river bed made of pebbles, with some mud and grass on the sides. I used a fluid simulation to obtain a mesh that will represent our water just to have some movement on the surface, rather than just creating a flat plane that would look boring.
I’ve also setup an HDRI environment map that will give us nice reflections on our water.

In a moment we will create a new material and build our shader to make this water look good and believable.

What we COULD do

Think about water in real life: its main physical features are that it’s transparent and it has a reflective surface at the same time: we could use a transparency node, mix it with a reflection node, add glossiness and other details to build a super-complex setup, but I want to suggest a simplest and quickest way to achieve a nice result that still looks good.

The idea — what we WILL do

Basically the idea is to:

  • Create a Glass shader node
  • Mix the glass node with a Transparent shader node, setting the proper IoR (read: Index of Refraction) of water, which is generally 1.33
  • Tweak the mix factor of the Glass and Transparent nodes to get the right balance between reflectivity and transparency

Let’s see this plan in action.

Walkthrough

Create a Glass BSDF node, change its IOR field to 1.33 and connect it to the Surface socket of the Material Output node.

The result is starting to look nice, but if you look at the surface from the top you’ll notice that there isn’t any transparency on the surface.

So let’s bring the transparency in the game.

Create a new Transparent BSDF node in the graph. Since we have to mix it with the glass node previously added, let’s also create a Mix Shader node in the graph.

Now connect the glass and the transparent nodes to the input sockets of the mix node, and also connect the output socket of the mix node to the material output node.

To see any change in the scene we also have to go under the Surface section of the water material (inside the right panel in Blender) and change the Blend Mode to Alpha Blend.

Now the water is transparent… but it’s TOO transparent, right?

Well, I found that a good mix factor (for me) between the glass and the transparent shader is approximately 0.3.

I suggest you to play further with the mix factor value on the Mix Shader node, ultil you find the right value that completely satisfies your taste.

And that’s it… we have water! :)

Conclusion

I’m aware that this shader won’t suit every use case, but it can save you a lot of time if you just need to have a water material that looks good without spending hours to build a complex shader graph.

Hope you like it!

--

--