Caustics is an advanced but expensive engine feature adding to the realism of the scene. Pool caustics is one of those things that take the image to the next level. Let us see how to setup the scene, create the water material, and change the render settings to take caustics into account.
Fig. 1: Pool caustics creation process
A FEW NOTES ON ADAPTIVE TRACING
Since version 3.0, the Thea Presto engine can produce reflective and refractive caustics coming from point lights (e.g. Sun) with the addition of Adaptive Tracing.
If you are not familiar with Adaptive Tracing, watch the video to get an idea of the benefits in using it.
ENABLING ADAPTIVE TRACING
Adaptive Tracing is in the Render Settings tab. To enable it, tick the “Enable” checkbox and make sure that the “Caustics” option is also enabled. You can see the difference when Adaptive Tracing is on in the image below where the Sun actually goes through the water surface.
Thea Sun passing through the water surface
MODELING THE POOL
The recommended way to create the water surface is to create it as one-sided (e.g., a simple plane). Below is a section of the scene that we will be using for our tests. Download links for the scene can be found here.
Fig. 5: Section of the scene
CREATING THE WATER MATERIAL
To create the water material we will go through the following steps:
- Add a “Glass Layer”
- Click on the Advanced Settings icon
- Select “IOR(n) + (k)” from the pop-up menu
- Change the “Index of Refraction (N)” value to 1.33 (water’s IOR)
Fig. 6: Basic Water Material
Adding a Glass Layer and changing the IOR to 1.33
The next step is to add Absorption to the water material to get a blueish tint. In the next paragraph, we will explain the difference between Transmittance and Absorption and explain how to switch between the two.
Transmittance turns to Absorption when the Absorption value is anything other than 0. If we increase the Absorption value, you will immediately notice that Absorption takes the place of the Transmittance value.
Transmittance controls the amount of light that passes through a material. So, in a way, it makes the material more or less transparent based on the color or texture assigned. Using a color in Transmittance will color the surface evenly regardless of its volume (Fig. 5).
In contrast, Absorption considers the thickness of the object and is controlled by the absorption value. As you can see in the example below, the absorption color depends on the thickness of the pool surface beneath the water (Fig. 5), and this is the reason why the bottom of the pool has a darker shade than the rest.
Fig. 7: Difference between Transmittance & Absorption
Above: Transmittance – Below: Absorption
Considering the difference between Transmittance and Absorption, we will use a light blue color and increase the absorption value to start seeing the effect in the rendered image.
Fig. 8: Enabling Absorption
ADDING A NORMAL MAP
As a last step, we will be adding a normal map to the Bump channel to add a few fine details to the surface. To do that, follow the steps below:
- Click on the “checker” icon of the Bump channel
- Select the Normal Map
- Click on the “bitmap” icon next to the Normal Map
- Select “Normal Map (OpenGL)” from the pop-up window.
- Adjust the Bump strength accordingly
Fig. 9: Adding a normal map to the Bump channel
Here is how the scene looks like with the addition of a normal map.
Fig. 10: Water surface with the addition of the normal map
Fig. 11: Applying the technique on a different project