Physical Water

by Joshua Jennings in Surfacing


Instructions:

Although the material is designed to be as plug-and-play as possible, it does require some initial setup. After appending in the material from the appropriate downloaded blend file (they'll be two copies of the material as part of the demo scenes, just append the first one), check off the following:

First, the object must have unwrapped UV's to work properly. They do not need to be particularly sophisticated, though obvious seams may cause shearing in the displacement, but they must exist and be unwrapped.

Second, for the depth based absorption and scattering to work properly, the object's origin must be placed on the topmost surface of the object in world space. Easiest way to do this is to either access the origin with ctrl > period/full stop and snap it to a vertex or face at the top of your object, or, hold shift and right click the 3D cursor to a top face (any topmost face will do) and then right click > Set Origin > Origin to 3D Cursor. The material uses the difference between the origin and the bottom of the bounding box to calculate the depth of the object in world space, hence the need for this step.

Third, after any rotating and/or scaling, make sure to apply either/both.

Fourth, it's worth noting that the reflected caustics are only visible as reflected rays, same as real life, but that does mean they are completely at the mercy of the recipient's material roughness. As there's no way in Blender to override another material's roughness via nodes, the higher it is, the more diffused and blurred out the caustics are, same as any reflection. So essentially at anything higher than 0.4. Also due to the way the caustics are generated, a roughness of 0 will also not show anything, somewhat ironically. None of this has any bearing on refracted caustics.

Fifth, optionally, if you want to confine the water displacement to a specific region of your mesh, you can vertex paint the desired area white (making sure the rest is black) and assign the colour attribute/vertex colour to the colour attribute node already in the shader editor, sat right next to the water shader node group. Both the node and its requisite socket are clearly labelled "Custom Vertex Colour Displacement Map", so you can't miss it. Simply connect the colour to the socket to its immediate right. If you're unfamiliar with vertex painting, there's plenty of great tutorials online (and is quite straightforward).


Bonus tip/advice: use adaptive subdivision in the subsurf modifier for displacement resolution, accessed by switching the Cycles Renderer feature set from supported to experimental in the render settings. Also, under the subdivision section further down, set a dicing camera (probably your main rendering camera) and, unless you know your scene relies heavily on reflections, shadows, and general indirect lighting from the water (which may indeed be a factor in regards to reflective caustics, for instance), crank the offscreen scale to something like 20. This will lead to a significant reduction in render times whilst leaving your camera view of the water unchanged. This also pairs well with the fifth instruction, as Blender will not tessellate geometry whose displacement is zero, hence using vertex painting to isolate displacement to only where you need it.


Finally, it's worth noting that this material is somewhat more geared towards Cycles rather than Eevee, as Eevee does not support proper volumetrics, displacement, or raytracing. Eevee will still look good overall, but the volumetrics will fill up the entire bounding box of the object, for instance; nor do reflective caustics work. Turning on screen space reflections, refraction, and ambient occlusion in the render settings will take much better advantage of the material properties, however. The material's blend and shadow modes are set to alpha blend and alpha clip respectively for performance's sake, but these too can be set to alpha hashed for extra quality if you really want.

Sales 10+
Dev Fund Contributor
Published 10 months ago
Blender Version 2.83, 2.9, 2.91, 2.92, 2.93, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6
Render Engine Used cycles, eevee
License GPL
Have questions before purchasing?

Contact the Creator with your questions right now.

Login to Message