damiavicens/mandelbrot-deep-zoom
Mandelbrot deep zoom — GPU renderer and 4K60 film A single continuous, uncut 4K60 zoom into the boundary of the Mandelbrot set, rendered on one NVIDIA RTX PRO 6000 Blackwell with rescaled-delta perturbation theory. 180.000 s, 10 800 frames, 3840×2160 @ 60 fps, HEVC 10-bit Final radius 1e-24 — magnification 1.60e24, 80.4 doublings Centred on a minibrot nucleus of period 10 589 (|Z_p| = 1e-219.6) Method Perturbation theory with Zhuoran rebasing around one… See the full description on the dataset page: https://huggingface.co/datasets/damiavicens/mandelbrot-deep-zoom.
Mandelbrot deep zoom — GPU renderer and 4K60 film
A single continuous, uncut 4K60 zoom into the boundary of the Mandelbrot set, rendered on one NVIDIA RTX PRO 6000 Blackwell with rescaled-delta perturbation theory.
- 180.000 s, 10 800 frames, 3840×2160 @ 60 fps, HEVC 10-bit
- Final radius 1e-24 — magnification 1.60e24, 80.4 doublings
- Centred on a minibrot nucleus of period 10 589 (|Z_p| = 1e-219.6)
Method
Perturbation theory with Zhuoran rebasing around one arbitrary-precision reference orbit, with every pixel iterated as a float delta. Because the card measures FP64:FP32 = 1:38.4, the deltas are float32 — which only works with rescaled arithmetic: a mantissa plus a shared power-of-two exponent per pixel, so nothing underflows at depth (unscaled f32 dies below a view radius of ~1e-16).
Colour is authored as closed loops in Oklch, gamut-mapped by reducing chroma at fixed lightness and hue, baked to a 16 384-entry LUT, and combined over three octaves as Oklab vectors. Relief shading comes from the distance estimate. Output is dithered with a triangular PDF before 10-bit encoding.
Contents
Notes worth reading before reusing this
Three things cost real time to discover and are documented in report.md:
dps >= -log10(radius) + 30is a floor, not the binding precision constraint. What binds is that the reference orbit must survivemax_iter.- BLA is a net loss above ~1e-40 on this hardware (0.78× over the path to 1e-24), because every loop iteration that finds no valid level still pays the level scan. It is 60× at 1e-200. Depth-gate it.
- Colour normalisation must be a deterministic function of depth, not a stateful EMA, or block-parallel rendering leaves a visible colour seam at every block boundary.
