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
Host timing; animation preview targets 60 fps.
| Path | Measured FPS | ms/frame | 2004 model | Work | Submitted |
|---|---|---|---|---|---|
| GPU · reflection offMain raster + refracted screen copy | — | — | — | — | — |
| GPU · planar reflectionMain + known mirrored set + refraction | — | — | — | — | — |
| WASM · software ray tracerStatic BVH; primary + reflected rays | — | — | CPU not modeled | — | — |
| GPU · compute ray tracerSame BVH ray workload in WGSL | — | — | Unavailable 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.