I'm a bit tired of faking it and I'd like to craft a physically accurate water shader in cycles that works in most situations with minimal tweaking. I haven't found a solution yet and i'd appreciate help. Some properties the water shader has to have:

Glass- like appearance in small quantities enter image description here

Volume and green tint in low depth enter image description here

Blue colour underwater, darker the lower you go, reflective surface at top, Ability for volumetric rays, even with sun enter image description here

Snell's window enter image description here

What i know is impossible with cycles: caustics

I have figured out some of these but can't make them work together. Render times are not an issue, i just want to create an all purpose water shader, i don't intend to use it all the time.

  • 1
    $\begingroup$ the green tint is usually made by the sea floor or the algae, it's not a specific property of the water $\endgroup$ – Tareyes Oct 3 '19 at 10:54
  • $\begingroup$ The volumetrics are mostly an effect of tiny particles floating in unclear water and are only a minor property of the water. $\endgroup$ – Leander Oct 3 '19 at 12:06
  • 2
    $\begingroup$ @Tareyes The green tint is most definitely a water thing. Water absorbs the red wavelengths the most. Red things look greenish then blueish the deeper you go. Colors get desaturated also. $\endgroup$ – Jaroslav Jerryno Novotny Oct 3 '19 at 12:22
  • 2
    $\begingroup$ A single shader with all absorption effects will be unnecessarily heavy and lead to noisy scenes in situation where volumetrics will have negligible visual presence, unless you use additional tricks to filter by ray length that add extra complexity to the material $\endgroup$ – Duarte Farrajota Ramos Oct 3 '19 at 12:25

Most (all?) of those effects can be easily replicated using the standard Principled Shader and Principled Volume shader, with the surface shader providing the IOR and surface interactions (eg, reflectivity, refraction, etc.) and the volume providing any scattering and absorption (but at a suitably low density).

At small scales the volumetric effects are negligible, making the water appear almost clear, the skewed absoption colours (set it with higher Blue, medium Green and low Red) give the different colors at different depths, the scatter can give volumetric rays and the IOR (again) will give 'Snell's window' effects when viewed from within.

This just needs something like the following (note the low Roughness, high Transmission, low(ish) volume Density, blueish volume absorption). I've also added Displacement for adding distortion to the surface.

generic water

You might want to tweak the settings slightly to get realistic behaviour with a specific scale - you should always ensure you model at 'real world' scales to ensure it's more physically accurate. In particular, the absorption and scattering (so the volumetric density) will be sensitive to scale.

  • 1
    $\begingroup$ Thanks. One issue with this is that the volumetric rays will be uniform and lack detail. The displacement, which would drive the detail in the volumetrics in the real world, does not affect the rays, making the volumetrics look like fog glow. Is there any way to accurately add that detail? $\endgroup$ – Walter Oct 3 '19 at 13:46
  • 2
    $\begingroup$ @Walter I think what you are referring to is effectively the caustics, projected through the volume - so it would be extremely computationally intensive (and you did kind of exclude caustics). To implement that effect would be back to faking again, which you wanted to avoid. However, one option to achieve this would be to fake the 'rays' at the light source, rather than relying on the caustics from the distorted surface - to achieve that you would need to vary the emission strength based on some noise that you could then vary to introduce movement of the rays, faking the effect. $\endgroup$ – Rich Sedman Oct 3 '19 at 13:57

Here is a faked caustics + rays water material, description has a tutorial you don't have to buy anything. I am not affiliated with this person just found it in my search.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.