-
Notifications
You must be signed in to change notification settings - Fork 0
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 |
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.
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.
The plan's ten milestones are complete. What remains is not on that ladder:
-
A second backend. The engine is Windows/D3D11 today.
sokol-shdcis 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.
Reference
Guides
History