An offline, GPU-accelerated fractal art generator for iPhone & iPad. Watch fractals grow from a single seed, tune colour and motion, then save the artwork as a wallpaper — all rendered on-device with Metal, with zero network access.
Fractal Wallpaper turns escape-time fractal mathematics into living artwork. Type a seed phrase (or hit Surprise), and the app animates a fractal as it "grows" from a single point — iteration by iteration — with an optional cinematic zoom-in. Pinch to explore the infinite detail, recolour with curated palettes, and set the result as your home- or lock-screen wallpaper.
Everything happens locally: the fractals are computed in a Metal compute/shader pipeline on the device's GPU and are never transmitted off the device. No account, no tracking, no network calls.
- 🌀 Six fractal families — Mandelbrot, Julia, Burning Ship, Tricorn, Phoenix, and Celtic.
- 🌱 Growth animation — fractals form from a single seed over a tunable number of iterations, with adjustable speed and a "cinematic zoom-in" framing mode.
- 🎨 Eight colour palettes — Aurora, Inferno, Ocean, Neon, Sunset, Viridis, Candy, and Mono.
- 🔤 Seed phrases — type any text (e.g. nebula) to deterministically derive a fractal, or roll Surprise for a random one.
- 🔍 Pinch-to-zoom exploration of infinite fractal detail.
- 🖼️ Set as Wallpaper / Save / Share — export artwork straight to Photos with a built-in wallpaper guide.
- ⚙️ Live controls — simulation speed, max run time, zoom amount, and replay/stop.
- 📱 Universal — adaptive layouts for iPhone and iPad.
- 🔒 Privacy-first — no data collected, no tracking, fully offline (see
PrivacyInfo.xcprivacy).
| Layer | Technology |
|---|---|
| Language | Swift 6.0 (strict concurrency) |
| UI | SwiftUI |
| Rendering | Metal (Fractals.metal compute/fragment shaders) |
| Architecture | MVVM (FractalViewModel driving Metal view) |
| Min. target | iOS / iPadOS 18.0 |
| Project gen | XcodeGen (project.yml) |
| Photos | PhotoKit (NSPhotoLibraryAddUsageDescription) |
FractalApp/
├── App/ # App entry point (FractalApp.swift)
├── Models/ # FractalType, ColorPalette, FractalParameters, FractalPreset
├── Renderer/ # Metal: FractalRenderer, Fractals.metal, MetalFractalView
├── ViewModels/ # FractalViewModel (state + growth driver)
├── Views/ # SwiftUI screens: Home, Controls, Settings, About, Feedback, …
├── Utilities/ # SeedGenerator, FormationDriver, PhotoSaver, Theme, Constants
└── Resources/ # Assets.xcassets, PrivacyInfo.xcprivacy
The view model holds the FractalParameters (type, palette, seed point, zoom, iterations) and
hands them to FractalRenderer, which dispatches the Metal shaders in Fractals.metal. The
rawValue ordering of FractalType and ColorPalette is kept in sync with the shader's
fractalValue() / paletteColor() switches.
- macOS with Xcode 16+ (iOS 18 SDK)
- XcodeGen —
brew install xcodegen - A Metal-capable device or simulator
git clone https://github.com/alfredang/fractalapp.git
cd fractalapp
# Generate the Xcode project from project.yml
xcodegen generate
# Open and run
open FractalApp.xcodeprojSelect the FractalApp scheme and run on a simulator or device (⌘R).
The
.xcodeprojis generated fromproject.ymland is intentionally git-ignored — runxcodegen generateafter cloning.
Fractal Wallpaper collects no data, performs no tracking, and makes no network requests. Photo Library access is requested only when you choose to save artwork. See the bundled privacy manifest.
Built by Alfred Ang at Tertiary Infotech Academy Pte Ltd.
© 2026 Tertiary Infotech Academy Pte Ltd. All rights reserved.
