Skip to content

Milestones

magmacrunchmedia edited this page Aug 28, 2026 · 2 revisions

Milestones

The engine was built as ten milestones, each leaving a runnable example behind. The ladder was deliberate: M0–M2 is a generic small tracer, M3 is the reason the engine exists, M5–M6 are what nothing else does, and M7 makes it a game engine rather than a renderer.

Commit
M0 A window, a quad, and a tested timestep 7bab061
M1 The math, the surfaces, and the oracle's first picture 71b5dc3
M2 The tracer on the GPU, held to the oracle 1ccf19a
M3 Mirrors that recurse, because the rays really bounce 1c05f04
M4 Glass, by the actual Fresnel equations 2e87c95
M5 Light gets a wavelength a5f82d6
M6 Light picks up a Stokes vector 049df60
M7 You can walk around in it now 637f70d
M8 Curved mirrors, quoted the way optics quotes them 0bb9937
M9 Diffraction gratings, and the walk that survives fxc 079b14d

What each one established

M0. The skeleton, and one decision that paid off repeatedly: the fixed timestep was ported verbatim from magnolia along with its 26 tests, so the engine's first module arrived already proven.

M1. The physics modules and the CPU tracer, with the rule that would define the project: every optical law is asserted against a closed-form answer before it renders anything.

M2. The GPU twin, and the oracle diff that binds the two. From here on, a change landing in one tracer and not the other was a failing exit code.

M3. The thesis. Facing mirrors recursing to real depth: the frame screen-space reflection structurally cannot draw, and the reason Crystal Mirror Maze needed an engine of its own.

M4. The real Fresnel equations, s and p separately (which M6 would need apart), and the walk becoming a deterministic ray stack because glass forks light.

M5. The moat opens. Twelve wavelengths, Cauchy dispersion, CIE folding. The test suite computes BK7's Abbe number and gets its catalogue value.

M6. Polarization, and the observation that makes it affordable: sources are unpolarized, so a camera path needs only the first row of its Mueller product. Four floats, not sixteen.

M7. The vertical slice. Capsule collision, input, game hooks; a room of mirrors, glass and a polarizer you walk through in first person.

M8. Conic surfaces in the parameters optical design quotes, and the sun disk that makes focusing visible to a backward tracer.

M9. Gratings in conical form, and a long forensic session against two fxc compiler defects that reshaped the walk into chain and fork. The full account is in Shader constraints.

Also along the way

Relicensing (cfe3342) moved from Apache-2.0 to PolyForm Noncommercial, deliberately unlike magmacrunch's 2D engines. Those are infrastructure for anyone; hologram is the differentiated asset under magmacrunch's own games, so the source stays public to read and learn from while commercial rights stay home.

What is not done

The plan's ten milestones are complete. What remains is not on that ladder:

  • A second backend. The engine is Windows/D3D11 today. sokol-shdc is the route, and it would also lift the fxc constraints; see Architecture § Portability.
  • Sphere and dish colliders. You can currently walk through a glass ball.
  • Curved refractive surfaces. Dishes are mirror or matte; there are no lenses with conic figure.
  • Caustics. Focused light is visible through mirrors (the sun disk trick), but no bright spot lands on a floor.
  • A game. The engine exists; Crystal Mirror Maze's successor does not yet.

Clone this wiki locally