While AGi32 cannot exactly simulate the propagation of light through participating media such as cloudy (“turbid”) water, it is quite capable of accurately simulating the absorption of light in, for example, swimming pools.

More Information:

Light is scattered in turbid water, but this is a negligible effect in swimming pools.  This leaves absorption, which is wavelength dependent.

Figure 24-1 of the IESNA Lighting Handbook Ninth Edition plots spectral transmittance per meter for various bodies of water. For filtered swimming pool water, let's assume that it is similar in transparency to “ Morrison Springs, Florida ,” whose spectral transmittance per meter is roughly:

450 nm (blue):  95%

530 nm (green):  97% 

600 nm (red):  84%

Displayed on a computer, it is this color:


As an aside, why did we choose these wavelengths? Well, these are the “primary color” wavelengths for blue, green, and red light respectively. If the spectral power distribution is relatively smooth, then the spectral transmittance at these wavelengths is a good approximation of the corresponding color bands.

So, now we know the spectral absorption at one meter. What about other distances? For this we need The Beer-Lambert law. Using this, the spectral transmittance per foot can be computed as:

Blue     0.984

Green  0.991

Red     0.944

This is a very pale color.

For the mathematically inclined:

Beer’s Law explains how absorption in a transparent (but not translucent) medium such as glass or water works. Mathematically, it is:

I / Io = 10^(a*d)

where Io is the intensity of the light beam incident on the medium (such as a glass filter), I is the intensity of the light beam exiting the medium, a is the extinction coefficient, and d is the distance the light travels through the medium.

It follows that,

Log10(I / Io) = ad

We can think of this as a color filter. As we descend into the water, it is equivalent to adding filters to a stack of filters, one filter for each foot of water depth. At three feet, we have: 

Blue:      0.984 * 0.984 * 0.984 = 0.95

Green:   0.991 * 0.991 * 0.991 = 0.97

Red:      0.944 * 0.944 * 0.944 = 0.84

At 100 feet, we have (by multiplying the per-foot values together 100 times):

Blue      0.196

Green   0.389

Red      0.003

Which is this color on a computer screen:


But this is not ocean blue, you say! This is true, it is not – it is the proverbial “sea green.” Remember that the ocean typically reflects a clear blue sky, and that the light is being diffusely reflected from all depths due to slight turbidity. The calculations above are for the color and intensity of the light illuminating an object at a given depth. They do NOT take into account: 

  • Reflections from the water surface.

  • Reflections from various depths due to turbidity.

  • Reflections from swimming pool walls and floor.

  • Absorption of light reflected from a submerged object back to the surface.

But at least this provides an answer to the question, “What is the light level X number of feet below the surface?” Remember the equation for calculating illuminance from RGB values: E = 0.2125 * R + 0.7154 * G + 0.0721 * B. Applying this to the spectral transmittance per foot, we have:

Transmittance at one foot = 0.2125 * 0.944 + 0.7154 * 0.991 + 0.0721 * 0.984 = 0.981

In other words, we lose about 1.9% in light level for every foot we descend below the surface. At two feet, the light level drops to 0.981 * 0.981 = 0.962. In other words, a meaningless 3.8% light loss.

Some background: Our color vision is most sensitive to yellow-green light (peaking at 555 nm), and falls off towards the blue and red limits of the visible spectrum – the CIE photopic curve. For properly calibrated CRT and LCD display monitors, the standard equation for calculating the relative luminous intensity of a given pixel is:

Luminous intensity I = 0.2125 * red intensity + 0.7154 * green intensity + 0.0721 * blue intensity

As a general rule, the light loss in a swimming pool is going to be irrelevant. If you assume an average depth of five feet, you can model the pool surface as a transparent color filter with spectral transmittances: 

Blue:      0.984 * 0.984 * 0.984 * 0.984 * 0.984 = 0.92

Green:   0.991 * 0.991 * 0.991 * 0.991 * 0.991 = 0.95

Red:      0.944 * 0.944 * 0.944 * 0.944 * 0.944 = 0.75

and let the interreflections from the pool walls and floor do the rest. (The light loss at five feet will be 7 percent.)

Note that this approach also correctly models the amount of light reflected from the pool bottom – there is an additional 7 percent loss when the light traverses the water back to the surface, but this is accounted for by its having to go through the color filter again before leaving the pool.

What will be much more important is the reflection of light from the water surface. This is the leading complaint of life guards; the reflection of overhead ceilings and distracting lights obscures the presence of a person lying on the bottom of the pool. 


Thanks to Ian Ashdown for this terrific and very informative article. If you would like to contact Ian, you can email him at

Applies To:

AGi32 - All versions