Skip to content

Graphics demo - SI-unit machine hall

Water to wattage, fire to motion

A physics-first industrial showcase: water to wheel to generator to lamp, and fuel to boiler to steam to piston to crank to train - one deterministic, seamlessly looping ray-traced animation driven entirely by a real SI-unit simulation. Nothing is hand-animated: every visible motion is a pure function of the frame index.

Ray-traced Grand Power Hall - turning water wheel, generator, lamp, boiler and creeping locomotive
Beauty view

A water wheel turns under a falling jet and belt-drives a copper-coil generator; the lamp brightens as more lamps switch on, and the wheel visibly slows under the added electrical load. The firebox heats the boiler, pressure builds, the piston and crank turn the drive wheel, and the loco creeps forward on its rails. Steam, flame, water glow and the pressure-gauge needle are additive world-space overlays projected on top of the ray-traced solids - they annotate, they never fake the lighting.

Debug panel - live physics, thermal, electrical, pressure and safety readouts with loop curves
Debug view

The same instant of the same sim with the full physics, thermal, electrical, pressure and safety panel: WATER, ELEC, STEAM (phase HEAT to BUILD to RUN to RUN-RELIEF), ENGINE and SAFETY sections, plus a pressure-over-loop and wheel-speed-over-loop curve with a white current-frame marker. The marker proves the render is a pure function of the phase clock.

water / hydraulic firebox / flame steam plume electrical / lamp

Two causal chains - every stage is real SI physics

ChainWhat the sim proves (visible in both views)
Water to electricity 382 W hydraulic input from a 20 L/s jet at 3 m head yields only ~98 W at 1 lamp, 160 W at 2, 200 W at 3 - tens and hundreds of watts, not kilowatts. Generator back-torque is a real reflected load, so the wheel drops from 7.5 to 6.7 to 6.1 to 5.5 rad/s as lamps come on.
Steam to motion The boiler must heat before the pistons move: during the HEAT phase the crank is frozen; only past ~35% of the 8-bar relief setpoint does the engine wake and the loco creep from rest. Ideal-gas pressure, piston force F = P * A, crank torque, and adhesion-capped traction.
Pressure safety The relief valve holds 8 bar, so hoop stress is ~28 MPa and the safety factor is ~9 (SAFE). Burst logic (sigma > sigma_ultimate) is implemented and watched but never fires - precisely because the valve does its job.

How it renders

Ray traced

Recursive closest-hit shader, per-light shadow rays, Fresnel reflection + Snell refraction with Beer-Lambert glass and water.

3 lights

Golden-hour key, cool blue fill, firebox point light, plus the lamp as its own emissive source.

72 frames

Seamless loop; state is a pure function of SetFrame(f) - no RNG, no clock.

~140-171 ms

Per frame on a 4-thread CPU trace; ~22 s to render both GIFs on this machine.

Solids are ray-traced (shadows are a visibility question, never painted); steam, flame, water glow and the gauge needle are additive world-space overlays. The mechanical motions are rescaled so the loop's total lands on a whole visual period (wheel on its 8-fold spoke symmetry, crank on whole revolutions, loco on a whole drive-wheel circumference), so the wrap seams cleanly while the relative motion under load stays visible.