Bifteki Taxi radioMEZE RUN
The dimly lit cryo compartment aboard WAKE’s procedural ship.Actual in-game frame · WebGL 2

Work 002 / space-horror prologue

WAKE

You come out of cryo alone.
Nobody else woke up.

Follow a failing ship toward the bridge. Something is waiting outside, and the light is already finding its way in.

Enter the ship▶

Desktop keyboard + mouse · WebGL 2 · headphones
Horror atmosphere, darkness, flashing alarms and sudden sound.

Inside the implementation ↓
354 KiBone self-contained HTML file
3 revealsone shared ship and story
No engineWebGL 2 + GLSL + Web Audio
No asset downloadsgeometry, materials and sound generated

Implementation notes

The expensive part was inside the ship.

Procedural surfaces are costly even when the room looks simple. The renderer avoids hidden material work, limits the exterior to visible windows, and gives distant detail a smaller budget.

01 / Shade less

Depth before detail.

A depth-only pass establishes the visible surfaces before the expensive procedural interior shader runs. The colour pass uses equal-depth testing, avoiding repeated material work behind nearer walls.

02 / Spend pixels where they matter

No window, no sky pass.

The renderer projects the ship’s viewports to screen-space rectangles and scissors the half-resolution exterior to those bounds. Away from a visible window, it skips that pass entirely.

03 / Keep the light connected

Two pixels describe what is outside.

Each anomaly supplies a tiny GPU probe with a light direction and colour. The same interior can respond to three different skies; window intersection tests decide where that light reaches the ship.

← Back to Notes
04 / Trade detail, not the scene

Resolution can recover.

The render scale drops when the frame budget stays under pressure, then rises again when there is headroom. Distant surfaces also use fewer noise octaves: tiny material detail should not cost more than the pixels that can show it.

A passage through WAKE’s generated ship, lit by its interior light rig.
Inside the ship. The reveals stay in the experience.

The details that give it weight

Darkness needs structure.

The ship is voxelised at startup; vertex-level hemisphere sampling bakes occlusion into the geometry. Corners have weight before the moving lights arrive.

Generated planes also get a winding audit. A normal can light a wall correctly while its triangle order makes it disappear from the side you meant to see.

The sound is part of the space.

Web Audio generates the ship’s layers and one-shots, with positional emitters, surface-dependent footsteps and story-driven intensity. There are no recordings hidden behind the soundtrack.

Before you enter

Give it headphones and a mouse.

W A S D move · mouse look · E interact · F head lamp · Shift run · Esc return to the game menu.

Click inside the game to capture the mouse. Use “Stop & return to WAKE” above the player to unload the experience and its audio. Touch controls are not implemented.

WebGL 2 is required. The renderer uses floating-point HDR when available and falls back to an 8-bit buffer otherwise.

Enter the ship▶