Golden Ratio Fractal Engine

Golden Ratio Fractal Engine · Build dossier

A pass over the project’s own repository: what is implemented, what is partial, what stayed on paper.

A browser application: React 19, TypeScript and Vite; WebGL2 rendering with optional WebGPU; state kept in localStorage. There is no server side and the build is static.

2 implemented · 3 partial · 1 on roadmap

Concept illustration: Golden Ratio Fractal Engine. Not a product screenshot

What the code says

  • 431 fractal type indices (0–430) with no gaps, dispatched from 477 mapper arms

    Source app/src/engine/fractalMappers.ts

  • 131 hand-written distance estimators in the WebGL2 shader; the WebGPU dispatch stops at index 130

    Source app/src/shaders/

  • 666 palettes = 26 authored + 640 procedural (80 themes × 8 variations)

    Source app/src/palettesProcedural.ts

  • 10 render styles, 8 composite operations, 4 camera modes, 4 slice axes

    Source app/src/engine/fractalMappers.ts

  • The described catalog covers 145 of the 431 types, across 11 category files

    Source app/src/data/categories/

  • Shipped build: 16 files, 1.04 MB, zero external URLs

    Source app/dist

Module state

  1. implemented

    WebGL2 core: fragment-shader ray marching

    A 4,318-line module holding the march loop and per-index dispatch.

    Source app/src/shaders/webglShaders.ts

  2. partial

    WebGPU: 131 of 431 types are distinct

    Dispatch ends at 130 and falls through to a shared phyllotaxis default; the variant paths have no WGSL equivalent.

    Source app/src/shaders/webgpuShaders.ts

  3. implemented

    Lazy shader splicing and a program cache

    A per-fractal minimal shader, an LRU cache of 8 programs and in-flight compile dedupe.

    Source app/src/engine/ShaderManager.ts

  4. partial

    Auto-explore over 61 curated forms

    113 eligible ids minus a 52-entry exclusion set; the remaining 318 ids are never selected by the UI.

    Source app/src/engine/NeuroAestheticsEngine.ts

  5. partial

    Palettes: 26 of 666 are browsable in the interface

    Procedural palettes are reachable through auto-selection and hash links, not a browsable list.

    Source app/src/components/ControlsPanel.tsx

  6. on roadmap

    WebXR, video export, PWA and a mobile app

    Phases 6–8 of the whitepaper; no matching modules exist in the source.

    Source app/WHITEPAPER.md

How this was checked

  • CI gates every push with typecheck, build and two test suites

    Workflow chain: npm ci → tsc --noEmit → build → test:unit → test.

  • The full visual sweep of the catalog is documented

    418/431 valid renders, with 13 recorded as intentionally sparse.

  • A headless render report exists

    294/294 combinations (42 forms × 7 styles), 0 black screens, 0 console errors.

  • The built bundle makes no third-party requests

    A scan for http(s) across app/dist returns 0 hits in JS and CSS.

Limits of these claims

  • 431 counts indices, not algorithms: the project's own audit collapses them to ~146 distinct mechanisms, and the UI only ever selects indices 0–130.
  • Recorded render defects remain: the 4D polytope collapses to a blob and part of the camera-inside-fog group is a framing issue.
  • The mobile audit job in CI does not block a push (continue-on-error).
  • The 718/1875 assertion totals are CI-executed claims; they were not re-run in this audit.
  • The interface is English-only; there is no localisation layer inside the app.
  • Per-device performance is unmeasured: a benchmark script exists, saved results do not.

Live build

Live buildswype-imagine.moonsugar.space ↗

Revision
1dbbfd5
Build directory
app/dist

The build contains no third-party requests: once loaded the page works offline. WebGL2 is required; WebGPU is opt-in and covers part of the catalog. Audio starts from a user action, never automatically.

The page itself does not confirm availability: the host is checked when the build is published.

Back to the project overview ↗