One scene · four render paths

Water is not
one effect.

A second raster view does not require a second scene graph—or even a second general culling traversal when the reflected set is known.

01 / One measured comparison

Raster, software rays, GPU rays

A · refraction only B · planar reflection

Loading WASM and WebGPU renderers…

Host timing; animation preview targets 60 fps.

PathMeasured FPSms/frame2004 modelWorkSubmitted
GPU · reflection offMain raster + refracted screen copy
GPU · planar reflectionMain + known mirrored set + refraction
WASM · software ray tracerStatic BVH; primary + reflected raysCPU not modeled
GPU · compute ray tracerSame BVH ray workload in WGSLUnavailable in 2004

The GPU raster paths use static triangles, CPU visibility lists, vertex transforms, depth testing, a screen copy for refraction and one reflection texture. Preview readback and animation are outside timed measurements. The “2004 value GPU” option is an explicit budget model based on the 1.0 Gtexel/s, 6.4 GB/s GeForce FX 5200 figures in NVIDIA’s product line card—not cycle-accurate emulation. GPU compute rays are marked unavailable because that command path did not exist.

02 / What the counters establish

View count is not scene-graph count.

Reflection off renders the main view once and reuses its screen image for distorted refraction. Planar reflection adds one mirrored GPU view from the authored set; it does not add another scene graph. The submerged rod segments remain visible through the refracted copy while the sky, gate and walls arrive from the reflected view.

The ray tracer has no cost “per plane,” but it is not flat: its counters rise with traced pixels, secondary rays and BVH/AABB traversal. RT cores accelerate that work; they do not erase it.

03 / Historically accurate boundary

GPU ray tracing existed in 2004 research. An RT pipeline did not.

Researchers ran ray tracing on Radeon 9700 Pro-era GPUs by encoding scene data and ray state in textures and executing multipass fragment programs. There were no RT cores, hardware BVH traversal, compute shaders or DXR-like commands. Contemporary reported GPU throughput was roughly 0.3–4 million rays per second; custom SaarCOR hardware reached real-time primary-ray results in selected scenes.

That makes “Valve used something more expensive than ray tracing, which only works on a plane” indefensible as a statement about 2004. The limitation describes what the raster technique can represent; it does not reverse the contemporary cost comparison. One coherent raster view of one known water plane was a normal shipping workload. General ray traversal was research.

Source SDK 2013 exposes game-side code under Valve’s non-commercial Source 1 SDK license; it is not a permissively open-source release of Half-Life 2 and does not grant a clean right to republish the retail canal maps and assets in this standalone page. The canal here is original procedural geometry.