The Light That Shouldn't Exist

You're ten meters below the surface and something is moving across the sand. Bright veins, shifting, folding into each other like a net being shaken by someone you can't see. Your eye accepts it instantly. Your brain files it under water and moves on.

It's almost entirely fake. The fakery is genuinely brilliant.

Real caustics form when curved water surfaces focus and scatter refracted light, each photon bending at a slightly different angle depending on exactly where it hits. The result is that shimmering web of bright and dark patches. Physically accurate, and computationally catastrophic. Simulating it properly requires tracing millions of individual light paths per frame, sixty frames per second, across a dynamic surface that never stops changing shape. Even high-end hardware taps out. So engines don't do that. They do something smarter.

Deciding What's Worth Faking

The first decision any rendering system makes is brutally pragmatic: which pixels are even candidates for caustic lighting?

This is where visibility culling and depth budgeting come in. A modern engine carves the scene into regions and asks, for each one, whether it falls within the refractive influence of a water surface above it. Geometry that's too far from a light source, occluded by opaque objects, or outside the player's view frustum gets dropped immediately. In a tropical ocean exploration game, that might eliminate 70 to 80 percent of scene geometry before any lighting math happens at all.

What's left gets a second filter: distance from the water surface. Caustic intensity falls off with depth. A sandy patch one meter below the surface gets the full treatment. The same sand at fifteen meters gets a heavily attenuated approximation, because real caustics scatter and fade with depth, and players have internalized that intuitively even if they've never once thought about why.

The engine is making editorial judgments, not physical ones.

The Texture Trick That Does the Heavy Lifting

For the geometry that passes those filters, the dominant real-time technique is projected caustic textures, sometimes called caustic maps. Pre-rendered or procedurally generated scrolling textures, animated to mimic the ripple patterns of a specific surface, get projected downward from the water plane onto scene geometry below.

Think of it like holding a slide projector above a fish tank. The projector isn't simulating optics. It's throwing a pattern that looks like what optics would produce, which is a completely different thing, and somehow works.

The texture itself is usually a tiling 512x512 or 1024x1024 grayscale image. Multiple layers scroll at slightly different speeds and directions to break up obvious repetition: two layers moving at 2cm/s and 3cm/s in perpendicular directions produce an interference pattern that reads as convincingly chaotic to the human eye. Some engines add a third layer at an oblique angle for shallow water, where the pattern would be sharper and more structured.

This is not physically correct. The bright spots won't be in exactly the right place. But they'll be in a plausible place, and at 60fps, plausible is indistinguishable from correct.

When the Scene Gets Complicated

Flat sand is easy. A sunken shipwreck with curved metal beams, porthole frames, and interior shadows is not.

Projected textures break down on complex geometry because projection assumes a flat receiver. Wrap a caustic projection around a curved hull and you get stretching and warping that reads as wrong in about half a second. This is where engines have to choose between techniques, and the choice depends almost entirely on the hardware budget available.

One approach is screen-space caustics. Rather than projecting onto geometry in world space, the engine approximates caustic contributions entirely in 2D, in the final rendered image. It samples the depth buffer and the surface normal map of the water above, estimates where refracted light would land, and brightens those pixels accordingly. Cheaper, yes. Also wrong whenever one object passes in front of another, because the algorithm has no idea what's actually behind what. Artifacts appear. Developers tune the blend weights to make those artifacts small enough that players don't consciously register them.

A higher-fidelity alternative is photon splatting. The engine traces a limited number of photons (sometimes as few as 4,000 to 8,000 per frame) from the light source through the water surface, finds where they'd land on scene geometry, and draws small bright quads at those positions. Those quads get blurred together. At low photon counts the result is grainy and unconvincing, so developers layer it on top of a base caustic texture. The combination reads as detailed and dynamic in a way neither technique achieves alone.

Consider two games built on the same engine: one ships with photon splatting at 6,000 rays per frame targeting 30fps on mid-range hardware, the other caps rays at 2,500 to hit 60fps on the same machine. Players of the first describe the underwater lighting as gorgeous. Players of the second barely mention it. The difference is 3,500 simulated photons. That's the budget, made visible.

What People Assume Is Happening (And Isn't)

The common assumption is that ray tracing, which has become a reliable marketing fixture in hardware launches, solves all of this.

It doesn't. Not in real time, not yet.

Hardware-accelerated ray tracing reduces the cost of path tracing dramatically compared to software, but accurate caustics still require thousands of traced rays per pixel per frame to converge to a clean image. At playable frame rates, that's not feasible on any consumer hardware currently available. Ray-traced caustics in games are almost always a hybrid: a handful of traced rays that provide directional hints, combined with the same projected-texture approximations that have been running since the early 2000s.

The engine isn't doing physics. It's doing theater. It asks what result the physics would have produced, then produces something that looks like that result using whatever shortcuts fit inside a 16-millisecond frame budget.

So does knowing all this make your favorite underwater game feel less magical? It really shouldn't. The fact that a team of engineers convinced your visual cortex that millions of photons refracted correctly through a dynamic fluid surface, using a scrolling grayscale texture and some blurred bright squares, is one of the stranger quiet achievements in software. Real water took billions of years to look right. These approximations had about three years of development time and a GPU that also had to render everything else in the scene.

Close enough is a form of genius.