This isn't real volumetric fog — it's a flat 2D quad that looks volumetric.
Valve shipped this exact trick in Half-Life 2 back in 2004 (map d1_canals_08).
Twenty years later it still holds up because your brain fills in the rest.
The vertex shader does cylindrical billboarding: a cross product between the camera direction and the beam axis gives a "right" vector, so the quad always faces you but stays locked to its axis. A dot-product fade hides the paper-thin edge when you look straight down the beam.
The fragment shader draws a cone shape via pow(uv.y, 1-curve) width interpolation,
soft edges with smoothstep, and three scrolling noise samples (two for alpha, one for distortion)
that fake drifting dust. World-position offsets give each beam unique noise.
Cost: near zero. One shared shader program, .clone() for per-beam uniforms,
additive blending, no depth writes, procedural canvas noise — no external textures needed.
Raymarching this would murder your framerate; this doesn't.
Original Concept (Godot):
Passivestar Blog Post
Bluesky Thread
PORTED BY TRENT STERLING / TRONT AND GEMINI 3 PRO
A Three.js port of the fake volumetric light beam Valve shipped in Half-Life 2: cylindrical billboarding plus procedural noise on a flat quad, which reads as a solid shaft of light from any angle without any volumetric rendering at all.
One page, no install, and the technique ports straight into other engines. By Tront (Trent Sterling).
More from Tront
All games and tools · Devlog · Discord · Source on GitHub · tront.xyz