GPU fractal rendering
Most fractal pixels can be evaluated independently, making escape-time rendering a natural Metal GPU workload on Mac and Apple Silicon. The challenge is keeping thousands of threads useful when orbits take very different paths.

Parallel pixels
A compute kernel maps thread coordinates to fractal coordinates and iterates locally. Shared constants describe the viewport, formula and visual settings; output textures carry orbit-derived fields into later color and lighting passes.
Fractal pixels are largely independent and map well to GPU threads. Coordinates, formula parameters and color tables are shared; each thread writes one result. Independence ends with neighborhood effects such as normals, ambient occlusion or bloom. Those should be separate passes with explicit inputs, so changing a gradient does not rerun expensive orbit calculation unnecessarily.
Divergence and workload imbalance
Pixels that escape quickly finish early while boundary pixels may consume the full iteration budget. Threads grouped for execution can wait on the slowest path. Interior tests, adaptive scheduling and progressive tiles reduce wasted work but add complexity.
Near a boundary, some pixels iterate hundreds of times while exterior pixels escape almost immediately. Threads in one group wait for the slowest path. Tile classification, interior tests and compacted active pixels can reduce divergence but add management cost. Profiling across several regions determines whether the complexity pays; a kernel fast only over empty exterior is misleading.
Fast feedback, complete finish
During gestures or slider changes a lower-resolution or lower-sample pass can preserve responsiveness. Once input settles, refinement must replace it with display-matched output. A preview policy becomes a defect if the final pass is never scheduled or is invalidated continuously.
During a gesture, the app can respond immediately at lower resolution or iteration depth. After release, finer passes continue to native display resolution—not indiscriminate Retina on a non-Retina target. Quality state must be separate from input state. Otherwise a slider update can starve the final pass and leave the image on a preview grid four times coarser than the screen.
Apple Silicon and unified memory
On Apple Silicon, Metal addresses an Apple GPU with a unified memory model: CPU and GPU share system memory, although access rules still depend on each resource’s storage mode. This can reduce some copy boundaries, but it does not make orbit iteration, high precision or large textures free. MandelKit’s macOS app runs natively as arm64 and uses this Metal path; actual speed still depends on formula, zoom depth, iterations, output size and active effects.
Unified memory on Apple Silicon does not make CPU and GPU work identical or synchronization-free. Metal storage modes still determine which processor may access a resource and how it is optimized for GPU use. A fractal renderer therefore still needs bounded working sets, suitable texture formats and measurements on real devices. Native arm64 execution describes the architecture; it guarantees neither a fixed frame rate nor the same runtime across every M-series chip.
Sources and further reading
This article summarizes the following specialist sources in original wording. Accessed and editorially reviewed 12 August 2026.
- Metal overviewApple Developer Documentation
- Choosing a resource storage mode for Apple GPUsApple Developer Documentation
- The Science of Fractal ImagesSpringer

