Water caustics traced onto a pool floor
In your harnessProcedural textureMIT
Generate tileable maps of caustic light focused by a wavy water surface onto a floor: rays refracted through a periodic surface are splatted onto pool tiles, rippled sand, rock or a grey card, and the emissive map holds the light. Use for pools, shallow seas, aquariums and as a projected light cookie.

What it takes and gives
- Entry point
- generate
- Maps
- albedo, normal, roughness, height, ao, emissive
- Parameters
- wave_cells, focus, ripples, light, floor, tiles_across, hue_shift, saturation and 1 more
- Presets
- default, sandy_shallows, deep_reef, light_cookie
- Tileable
- yes
- Command line
- python water_caustics.py --size 1024 --seed 7 --preset NAME --out DIR [--width W --height H] [--set NAME=VALUE] [--directx-normal] [--orm]
- Godot material
- material.tres
- Blender builder
- blender_material.build_material(folder)
Limits. One still frame, not an animation. Refraction uses the paraxial approximation (ray offset proportional to the surface slope), light falls straight down and there is no dispersion, absorption or depth-dependent blur, so it is an approximation of real caustics rather than a light transport simulation. Brightness comes from four rays per output pixel and a light smoothing filter, so the finest lines are about a pixel wide at any size. The floor types are simple; the emissive map holds colour only, so the engine sets the emission strength.
Details
- Kind
- Procedural texture
- Engine
- Python 3.10 or later
- Files
- 12 files, 229.8 KB
- Licence
- MIT
- Declared effects
- runs commands, writes files
- Checked with
- Godot 4.7.2, gl_compatibility
- Checks
- command line generates declared maps, maps decode, maps have declared size and channels, maps tile without a seam, normal vectors unit length facing out, maps carry detail, godot imports the maps, godot material template loads every map, godot compatibility render, capture shows the textured surface, blender builds the material
- Techniques
- Paraxial refraction of vertical light through a height field, Photon splatting: ray density by bilinear deposition with wrap-around, Fractional Brownian motion on two incommensurate lattices for the water surface, Separable 1-2-1 smoothing filter, Height to tangent-space normal by central differences, Cavity occlusion from blurred height
- Tags
- texture, pbr, tileable, water, caustics, emissive, pool, underwater
- Identity
library.supply.creative_originals.69b5c3626ccae353a8afb006.7db14c0c564b9aa6- Version
7db14c0c564b9aa61f612d186cc55396196c5adc8a0e5951391706dac7b95448
The version is the SHA-256 of the item your harness downloads; every file in it names its own checksum.
Something wrong with this item, its rights or its safety? Report it on the support page, or from your harness after a download.

