# How can I create a water material in Cycles?

I'm creating a scene with large amounts of water that will be readily visible, containing refraction and at various angles. The scene is an indoor long-course swimming pool, about 50 meters, all of which would be seen by a camera above 5 meters above the water's surface. This is being fluid-sim'd, but there are no quickly-moving objects or people, so any water movement is slower and in bulk. The "remove bubbles" option is enabled.

I've tried using a Mix Shader of Refraction BSDF and Reflection BSDF with the factor coming from a Fresnel node, but the results appear either too glossy or too transparent and overly colored. How can I make the water appear realistic? Changes to shaders (refraction to glass)? Or is tweaking colors sufficient?

• This is a good question, but a bit subjective ("What is realistic"). Can you make it a bit narrower in scope/more specific? May 23, 2013 at 3:02
• @RolandiXor I gave specific details on the scene I am creating and what I am trying to achieve. Would this be sufficient now? May 24, 2013 at 1:31
• yeah better now :) May 24, 2013 at 3:45

It is very important to add some small scale displacement to the water surface. This small scale detail is present even in closed spaces due to minor drafts of air, especially in large pools of water. My personal experience is that for best results you can use a combination of animated voronoi textures, like perlin noise does.

This small detail makes it possible to have areas of water that are slightly more refractive or reflective than others. To separate the refraction and reflection parts, you use a standard fresnel factor connected to a mix shader node.

(play with index of refraction to achieve a different ratio of refraction to reflection depending on the angle of viewing)

And this is the resulting water:

Of course on indoor scenes you will need many samples or clever lighting to avoid too many fireflies.

• Could you provide a blend-file pls? I fail to reproduce your example in blender 2.75a. The water is black and the stuff which is behind the water doesn't shine through. Thanks! Aug 5, 2015 at 19:02
• Hey, just to inform you that the pictures used in this answer are not visible. Jun 15, 2016 at 14:11

I've found that using a simple glass glass node works. Also it would help to mix in a refraction node and set the IOR to 1.333, which is the IOR of water. If you want foam use a voronoi crackle texture node and invert the alpha so that the "crackles" give the reflection as white and it looks foamy. You will have to tweak the setting to get it looking the way you want it. The look of your water also depends on your lighting. Always Model, then Light, then create your materials and texture, and finally post processing.

• Ah, the voronoi does help quite a bit. I multiplied it with something a bit grainy to help as well. Jun 9, 2013 at 22:33
• this was my result Jun 9, 2013 at 22:52
• Ah, beautiful. Could you include the .blend file as well? Jun 9, 2013 at 22:52
• You know I did find the .blend. Here it is. It should be in your e-mail inbox. Jun 13, 2013 at 17:19
• I would reccomend you to also add a screenshot of nodes for waves, cause not all people know how to make them(converting noise texture with multiply or in other way) Dec 16, 2014 at 18:56

Large scale water (almost opaque) looks very different than small scale water (very transparent). Fast water(whiter, low reflectivity) also looks very different than slow water(clearer, high reflectivity). So unfortunately there isn't a simple answer.

Since water is transparent, the lighting and environment which it's in is very important. A drop of water in a blank world is going to be invisible. So realistic lighting and proper environment for it to reflect off helps a lot.

• If you're doing a fluid sim, fast/slow won't matter; the reflectivity changes (at least in Blender) are due to the presence of additional surfaces within the water, with the gaps between them causing refractions as they rush past. May 23, 2013 at 15:53

Here is another example for a lake water with very deep and strong reflection; Nodes: Result:

I did not let it render much samples(only 3) so the image is low quality, but you can see so water shader looks amazing;)

Hope this answer helps you to make lakes and rivers;)

The Glass BSDF node offers essentially everything that you want.

The IOR you will want to use is 1.333 (from a Blender Artists post), and you'll pretty quickly get a good look for stationary water. If you want foam, you'll have to get a little bit clever with your implementation, but water by itself works pretty well just with the single shader.

If you're using the newest version of Blender, it is also possible to do SSS to mimic the effect of light in water.

Example: My attempt at making a standard water.

Here's one with SSS; it's not realistic, but could be helpful for portraying deep water (i.e. oceans).

In short, I'd strongly recommend using a simple Glass BSDF for your water, and if you run into issues trying to work around it, rather than trying to build the water from scratch using reflection/refraction. Cubes aren't the best way to show this; I put mine inside a "container" because otherwise you get to see the glass reflecting on itself, but this shouldn't be an issue with a more complex model.

Note that the second render got more samples, so any quality discrepancies are likely due to that.

• Here's a video I rendered out quick of the first shader in action: youtu.be/yGFLFL04TxU May 23, 2013 at 17:02

The Glass BSDF shader in Cycles should work pretty well. Change the IOR: value (index of refraction) to 1.333, and you should get perfectly clear water. If your looking for a murky type look, use a Mix Shader to mix the Glass BSDF with a Diffuse BSDF.

Here take mine. Added stuff from above. Btw. I use EEVEE

• Your answer would be much more useful if you explained the nodes. Just dumping a picture of the node tree, while helpful to some people, is really not the best. Jul 13, 2019 at 14:32

Glass shader and transparent shader goes to mix shader and IOR in glass shader to 1.33. Remember to crank up the transparent value in render setting to around 8 minimum and light bounces to 4 minimum.

• Can you add some more detail with a screenshot of your node setup and render result? Dec 27, 2018 at 17:21