Sharks! The subject matter for our underwater scene
In this tutorial, we will cover lighting and rendering an underwater scene with a school of sharks. We will setup the scene with fog to achieve an under water feel to the scene. We will cover lighting the scene using a gobo to create a fake caustic effect. We will also go through creating the sea material using vector displacement.
We will start off by creating some fog for our underwater scene. Open the Render Settings window. Under the Environment attributes, change the Atmosphere from none to Fog.
You should see the Fog attributes in the attribute editor. Increase the Distance a small amount to something like 0.02 and render the scene. You should get something that looks like this:
Default fog settings. Ground point is Z by default.
Ground Normal 1 (Y-Axis)
Distance increased to 1
![]() |
Now we need to cast some light in the scene. We will use a spotlight. This will enable use to add some light filters to it that will give us more control of the lighting in the scene.
Next, we will create a fake caustic effect that is projected through the light source. To do this, we will add a gobo light filter to the spotlight. Select Light Filters under the Arnold section of the spotlight and add a gobo light filter.
Connect a file texture to the Slide Map attribute. We are going to use a texture map consisting of a caustic pattern. The texture map below is used as a fake caustic effect connected to the gobo.slide_map.
Caustic texture connected to 'Slidemap' attribute of aiGobo
![]() |
![]() |
Gobo Scale S T set to 1. The caustic pattern is too small. | Lowering the Gobo Scale S T to 0.5 creates a larger caustic effect |
Density decreased to 0.5
Next, create a polygon plane and scale it up so that it covers the entire scene. We want the sea plane to be transparent. Therefore we must deselect Opaque within the Arnold attributes for the plane. Assign an Ai Standard material to it and rename it to 'Sea'. Lower the Base Weight to 0. Increase the Specular Weight to 1 and lower the Specular Roughness to 0. Under Transmission, increase the Transmission Weight to 1. Change the IOR to 1.3 (where air meets water). Even though 1.3 is the physically accurate value used for the index of refraction of water, you may want to cheat this value according to taste.
Polygon plane used for the sea surface
To get a more realistic wave effect, we will use a vector displacement map to displace the sea waves. This will displace the sea geometry around a direction different from the normal, unlike a traditional displacement map which displaces the geometry in one direction only. More information about creating an ocean surface can be found here.
Texture map used as the Vector displacement for the sea
Arnold subdivision settings for sea polygon plane
![]() |
![]() |
Below you can see the final render from Arnold (left image) and after it has been tone mapped and color corrected (right image):
![]() |
![]() |
That concludes this tutorial for creating an underwater fog scene. Environment effects such as fog are a simple way to add convincing ambiance to a scene. Also, the gobo light filter can be used to cheat real-world lighting effects such as caustics and give you more control, and are cheap to render.
Below are some alternative example renders using other nodes such as atmosphere_volume and a skydome_light for further control of the underwater effect.
Ai Gobo caustic effect