✳

Nebulabrot

ORBIT LAB / 001
CONNECTING GPU
ORBIT DENSITY / COMPLEX PLANE
The classic nebula
● ACCUMULATING
ATTEMPTS0ZOOM1.00×RES—00:00RATE—

Small equation. Infinite paths.

Choose orbit-density views or Mandelbrot, Julia, Multibrot, Tricorn, Nova, and Burning Ship. Standard views use GPU supersampling. Julia Nebula can sample a Gaussian spread of nearby seeds to form a broader cloud; set Cloud seed spread to zero for exact fixed-seed orbit density. Every family also has a Nebula rendering style: escaped orbit density, or travel-weighted converging paths for Nova. Starting samples cover the square −2 to 2 on both complex axes. Converging-path views taper this sampling boundary and weight travel distance to suppress stationary tails. Burning Ship folds both components of z to their absolute values before squaring. The classic view renders per-pixel escape times directly on the GPU.

This is a true orbit-density Nebulabrot: GPU compute shaders trace escaped Mandelbrot orbits and add their visits to three atomic histograms. Soft orbit transitions use fractional escape times and tapered channel weights to reduce cutoff contours, without blurring the image. A second GPU pass turns those densities into light. The optional Denoiser applies an edge-aware spatial filter to the display before exposure and color; accumulated orbit data stays unchanged. It also applies to PNG and EXR exports. Firefly confirmation holds back uncorroborated brightness using four independent orbit streams and a separate evidence mask for each color channel. Repeated visits from one orbit cannot confirm themselves. It is a conservative display estimate: faint features can appear later. The raw 64-bit exposure is retained and can be shown with confirmation, isolated-spike rejection, and denoising Off. Isolated-spike rejection replaces extreme per-channel peaks with supported neighboring density before exposure, preserving lines with two neighboring supports. It can remove genuine isolated highlights. Auto exposure uses absolute log-density percentiles, without a floor tied to the brightest pixel. Its exposure estimate is normalized by attempted orbits, then eased over time with a two-stop-per-second limit to prevent flickering.

Drag to pan, use the wheel or + / − to zoom. On touch screens, drag with one finger, pinch with two fingers to zoom, and twist two fingers to rotate. Screen rotation turns the camera clockwise around the current screen center; navigation and exports use the same angle. Space pauses sampling; R resets the view. Exposure and contrast update without discarding samples.

Requires a browser with WebGPU enabled, on HTTPS or localhost. Sampling uses a salted 64-bit attempt counter and independent random dimensions. RGB contributions accumulate in paired 64-bit integer counters, without periodic decay. Guided sampling learns a hierarchical GPU importance map, from 128 × 128 to 1024 × 1024 as you zoom, with 15% uniform exploration and inverse-probability correction. Orbit hits use subpixel tent reconstruction to reduce pixel-grid aliasing at high zoom. Each weighted contribution is shared among neighboring pixels without creating extra evidence votes. Fine orbit structure remains limited by single-precision arithmetic. During navigation, the previous image is reprojected as a temporary preview while a fresh, weighted density map converges.

GPU benchmark

PROTOCOL 02 / 1024 × 1024 / FIXED SCENES

Around 30 seconds, plus scene preparation. Keep this tab visible. Your current view and accumulated detail are preserved.

Orbit sampling
Full nebula renderer
Burning Ship · supersampled

Method & fixed settings

Nebulabrot “Into the heart”: center (0, −0.25), span 1.4, rotation 0°, RGB limits 2000 / 500 / 50. Uniform sampling with a fixed seed and 16,384 orbits per batch. Each nebula test starts from the same 67,108,864-orbit density. Full rendering includes Strict firefly confirmation, isolated-spike rejection, Balanced denoising, auto exposure and display.

Burning Ship “The flagship”: center (−1.755, 0.035), span 0.08, rotation 0°, 1,024 iterations and 2 × 2 supersampling. All tests render at 1024 × 1024, independent of screen size.

Protocol 2 keeps three bounded bursts in flight, targeting 40 ms of work per burst with 1–64 fixed work units. Four warmup frames and burst calibration are excluded. Three 2.5-second windows count completed work, including the time to drain their queued backlog. Frames render offscreen; the preview updates periodically. Timing readbacks run in parallel with queued work, sampling every eighth frame within each burst. Milliseconds per frame is derived from completed throughput; GPU median and p95 measure sampled work units. Burst completion latency includes queue wait and is recorded separately in JSON. Other GPU activity and temperature can affect results. Protocol 2 scores are not directly comparable with the old serial protocol. JSON results include all settings and queue sizes.

Orbit score v1: 1000 × ∛[(sampling rate / 1,000,000) × (nebula rate / 60) × (Burning Ship rate / 120)]. Each rate is the median completed-work throughput across the three timed windows. The rendering rates count completed frames, independent of monitor refresh. All tests have equal weight. A virtual reference of 1 million orbits/s, 60 nebula frames/s and 120 Burning Ship frames/s scores 1,000 points; doubling every rate scores 2,000. These are fixed scale anchors, not a measured reference GPU. The score includes browser and submission overhead and always uses elapsed timing, including on devices with GPU timestamps. Compare results with the same workload and scoring version. Incomplete runs do not receive a score.