Skip to content

Rendered fresh in pure C#

A fleet of physics boards, each with real lights, cast shadows and moving parts.

Fourteen playable boards from seven separate engines - two boards apiece: knockout billiards and a molten foundry, a dune rover and a peg arena, a moat keep and a casting forge, a brick-breaker and an ice causeway, a Sokoban yard and a ray-traced pachinko, colored-shadow vaults and a sentry breach, pinball and a sinkage vale. Every one runs a live rigid-body simulation and its own from-scratch light-transport renderer: point and directional lights, Cook-Torrance surfaces, and shadows traced against the actual geometry - never faked with blobs. No game engine, no GPU, no external assets. Every pixel is C# on the CPU.

7engines
14boards
0external assets
100%CPU / C#

The boards

Seven engines, fourteen boards

Two boards from every engine, plus two bonus camera angles - sixteen renders in all.

Knockout Orrery: balls scatter across a felt table with soft ray-traced shadows under a warm point light.
Knockout Orrery

Physics knockout billiards - a cue ball breaks a rack of target and trap balls across a six-pocket felt table.

Lighting: Cook-Torrance (GGX) ray tracer, warm point + cool directional fill, disc-sampled ray-traced soft shadows plus hemisphere AO - the balls truly occlude the light.
Engine 1 - KnockoutOrrery - 360x225
Prism Foundry: molten alloy cast across sand and snow terrain, shown as a stacked play view over a low cinematic view.
Prism Foundry

A casting board - an autopilot shoots ingots across sand, snow and pond terrain to fill molds. The frame stacks the play view over a low cinematic camera of the same solve.

Lighting: Cook-Torrance (GGX + Smith-Karis + Schlick-Fresnel) with point and directional lights, area-light disc soft shadows, and per-channel Beer-Lambert transmittance so molten and water occluders throw colored, attenuated shadows.
Engine 1 - PrismFoundry - 220x300 (dual view)
Dust March: a rover crosses dune terrain lit by sun, headlamp and flare, each throwing a ray-cast shadow.
Dust March

A rover crosses soft dunes toward a goal, sinking into loose soil (Bekker sinkage) and skirting the pond.

Lighting: three dynamic lights - sun, headlamp and flare - shading a 3D terrain grid with real per-pixel segment-vs-occluder ray-cast shadows from every source.
Engine 2 - DustMarch - 240x160
Lumen Arena: balls ricochet off glowing pegs while a paddle keeps them alive, each peg casting a real 2D shadow.
Lumen Arena

A lit peg arena - balls launch and bounce off glowing target pegs (breaking them) while a reactive paddle keeps them in play; clear every peg before the lives run out.

Lighting: linear-space per-pixel cast-shadow occlusion where every peg and ball is a circle occluder throwing a real 2D ray-cast shadow, with inverse-square falloff over Lambert plus Blinn-Phong specular.
Engine 2 - LumenArena - 320x226
Dust March shown as a synchronized multi-camera mosaic of the same rover run.
Dust March - camera rig

One rover run, several synchronized cameras framing the same world state at once.

Bonus angle: a multi-camera mosaic off a single simulation tick - every panel shares the same lighting and cast-shadow pass.
Engine 2 - DustMarch (rig) - 240x160
Crucible Forge: glowing molten metal poured into sand molds, casting warm colored shadows.
Crucible Forge

An autopilot ladles molten metal from a crucible into sand molds - five castings before the heat bleeds out.

Lighting: per-light ray-marched cast shadows against cylinder occluders; glowing transparent molten pours throw colored, attenuated Beer-Lambert shadows under a forge-glow plus skylight rig.
Engine 3 - CrucibleForge - 480x360
Lumen Keep: a marble routes around a moat and causeway collecting glowing orbs, torch and sun shadows with soft penumbras.
Lumen Keep

A moat-ringed keep - an autopilot marble routes around pits and over the north causeway to collect every glowing orb, then reaches the goal, with a live water surface.

Lighting: a directional sun plus a point torch, both casting real ray-marched shadows whose penumbra width is a true geometric solve - super-sampling each light's physical disc, not a blur filter - with inverse-square falloff.
Engine 3 - LumenKeep - 480x380
Brickfall Arena: balls smashing crates while an orbiting light sweeps hard cast shadows across the board.
Brickfall Arena

A physics brick-breaker - launch balls to shatter procedurally placed crates, each with its own hit points.

Lighting: a single punctual point light deliberately orbited every step, so real per-pixel ray-occlusion shadows sweep across the board, softened by a multi-sample area-light penumbra.
Engine 4 - BrickfallArena - 220px wide
Causeway Forge: a cart crosses sand and mud as forge heat melts open an ice causeway, colored shadows under a warm forge glow.
Causeway Forge

A haul-the-ore board - drive a cart across sand, mud and ore terrain while forge heat melts open a frozen ice causeway, then deliver the ore to the forge.

Lighting: Cook-Torrance (GGX + Smith-Karis + Schlick-Fresnel) lit by a sun plus a disc-radius point light for soft shadows, with per-channel Beer-Lambert shadow rays - block red and cyan bleeds through - and an ACES color pipeline.
Engine 4 - CausewayForge - 200x140
Foundry Yard: a crate-push puzzle on a sand field with colored PBR shadows and reflections.
Foundry Yard

A Sokoban crate-push puzzle on a Bekker sand heightfield that furrows underfoot, beside a wave-equation pond.

Lighting: a ray-cast PBR path (GGX + Lambert, linear/ACES) whose shadow rays carry per-channel Beer-Lambert transmittance through transparent occluders - projected colored shadows plus reflections.
Engine 5 - FoundryYard - 200x150
Pachinko RT: balls fall through a peg field into scoring slots, shown as front and three-quarter ray-traced views side by side.
Pachinko RT

A ray-traced pachinko board - balls fall under gravity through a fixed peg field (analytic circle collisions, restitution and friction) into scoring slots. Front and three-quarter views run side by side.

Lighting: a real-time ray-caster firing one primary plus one shadow ray per light, with true per-light shadow-ray visibility, inverse-square range falloff and Blinn-Phong, lit by a moving carried light, an emissive bulb and colored slot up-lights.
Engine 5 - PachinkoRT - 420x190 (dual view)
Thermal Vault: a marble rolls toward a goal under three colored lights that each cast a tinted shadow.
Thermal Vault

A skee-ball marble shot - roll a marble across sand, mud and stone terrain into the vault goal.

Lighting: three point lights evaluated per color channel, so blocking red leaves a cyan remainder - true colored projected shadows over a Cook-Torrance BRDF with ACES tonemap.
Engine 6 - ThermalVault - 400x240
Vault Breach: a steel marble is launched at a vault door past shadow-casting sentry pillars under one overhead lamp.
Vault Breach

A pinball/skee-ball breach - launch a steel marble at the vault-door goal while threading shadow-casting sentry pillars and bumping physics-driven crates (Box2D-Lite sequential-impulse solver).

Lighting: a library Cook-Torrance BRDF lit by one overhead point lamp, with real per-pixel cast shadows - each 2D board box is extruded to a 3D AABB and one slab ray-box shadow ray is fired per pixel toward the lamp.
Engine 6 - VaultBreach - 480x288
Thermal Vault re-rendered from a low chase camera, same colored-shadow lighting.
Thermal Vault - low camera

The same vault shot, re-rendered from the low chase camera in the engine's multi-camera rig.

Bonus angle: an alternate viewpoint resolving the identical colored-shadow lighting solve - proof the shadows are 3D, not painted into one view.
Engine 6 - ThermalVault (cam 2) - 400x240
Lumen Pinball: a ball ricochets around a walled arena, its cast shadow moving with it under one point light.
Lumen Pinball

A seeded procedural pinball arena - one dynamic ball ricochets off walls and bumpers.

Lighting: a Cook-Torrance point light (Lambert + GGX + Schlick Fresnel) with real geometric cast shadows via ray-segment-vs-box occlusion and inverse-square falloff - the shadow slides as the ball moves.
Engine 7 - LumenPinball - 240x320
Ember Vale: a marble rolls across a sinking terrain grid past a pond, colored shadows through transparent occluders under an ACES pipeline.
Ember Vale

A terrain marble board - roll a marble across a Bekker pressure-sinkage grid (live sink, moisture, temperature and pressure fields) past a pond toward the goal, from a third-person chase camera.

Lighting: a GGX Cook-Torrance surface with per-channel Beer-Lambert colored shadows through transparent (glass) occluders, resolved once through an exposure to ACES (Narkowicz) tonemap to sRGB pipeline.
Engine 7 - EmberVale - 200x150

How they are made

Simulate, trace, cast, repeat.

Each board is a standalone console program. It steps a rigid-body world - balls, crates, marbles, a rover - then hands the frame to a hand-written renderer that shades every pixel with a physically based BRDF and fires shadow rays at the real scene geometry. The frames are packed into a GIF on the way out. The colored shadows in Crucible Forge, Thermal Vault, Foundry Yard, Prism Foundry, Causeway Forge and Ember Vale come from evaluating light visibility per red / green / blue channel through transparent occluders - block one wavelength and its complement bleeds through.

Nothing here reaches outside the .NET base class library: no graphics API, no shader compiler, no image files, no fonts. The renders on this page were produced fresh from source on a desktop CPU.