An Odin/Slang port of Vizza, a collection of interactive GPU-accelerated simulations for fun and beauty. The port keeps the original simulations as the behavior reference while replacing the Tauri, Svelte, Rust, and WebGPU stack with a native SDL3/Vulkan app and a project-owned immediate-mode UI.
Download the latest package from the releases page.
- For macOS: download
vizza-<version>-macos.zip, unzip it, and openVizza.app. - The packaged app targets macOS 13 or newer and bundles its shaders, assets, SDL3, Vulkan loader, and MoltenVK runtime files.
- For Windows: download
vizza-<version>-windows-x64.zip, unzip it, and runVizza.exe. - The Windows package bundles its shaders, assets, SDL3, HarfBuzz, Freetype, and Vulkan loader runtime files. It still requires a Vulkan-capable GPU driver.
- Windows releases also include
vizza-<version>-windows-x64.msixfor Microsoft Store submission or signed sideloading.
For the original cross-platform Tauri app, download Vizza from the original releases page.
Screenshots below come from the original Vizza app where matching README images already exist.
Agent-based simulation where creatures follow trails to create emergent transport networks.
Reaction-diffusion simulation modeling chemicals that create cellular islands, waves, and turbulent organic patterns.
Multi-species particle simulation with attraction and repulsion interactions.
Particles trace a changing vector field, revealing direction through layered motion trails.
Lightweight 2D particle physics with density, collisions, gravity, and image-like emergent texture.
Create and inspect color ramps used by the simulations and post-processing passes.
Nearest-site Voronoi regions with drifting points, color-map modes, and optional borders.
Interference patterns from layered wave fields, offsets, distortion, and procedural image sampling.
Vector-field inspection for direction, magnitude, and dense line rendering.
Particle motion organized by local density, soft attraction, and primordial clustering.
- Odin
make,cc,git, andpkg-config- SDL3, Vulkan loader, HarfBuzz, and Freetype development packages
- On macOS: MoltenVK and Homebrew packages matching the release workflow:
odin,sdl3,molten-vk,vulkan-loader,harfbuzz,freetype,pkg-config, andimagemagick - On Windows: Visual Studio Build Tools, vcpkg packages for
sdl3,harfbuzz,freetype, andvulkan-loader, plus Git Bash for shader builds - Slang compiler on
PATH, or usemake install-slangcto install the pinned compiler into.tools/slang
make deps
make install-slangc
make runmake deps downloads the pinned third_party/tomlc17 checkout and builds the
local text-shaping shim. make run compiles shaders, builds the app, and runs
build/vizzaodin.
make build
make package-macos
pwsh ./scripts/package_windows.ps1 -Msixmake build writes the native executable to build/vizzaodin.
make package-macos creates dist/Vizza.app and
dist/Vizza-macos.zip; signing and notarization are configured through the
environment variables documented in docs/release.md.
scripts/package_windows.ps1 creates dist/Vizza-windows/,
dist/Vizza-windows.zip, and, with -Msix, dist/Vizza-windows.msix.
make check
make test
make fmt
make shaders
make mcp
make theme-preview
make theme-preview-mcp
make run-steam
make build-steam
make steam-upload-preview VERSION=0.1.0
pwsh ./scripts/package_windows.ps1 -Msix
scripts/release.sh 0.1.0Steam commands default to app ID 4945920; override with STEAM_APP_ID=...
for test apps or alternate branches. SteamPipe uploads use app ID 4945920
and macOS depot 4945922 from packaging/steam/targets.env.
To smoke-test a local SteamPipe upload package, first build the app bundle with Steam support, then run the preview uploader:
SKIP_SIGN=1 SKIP_NOTARIZE=1 scripts/package_macos.sh --steam
scripts/steam-upload.sh --preview --local 0.1.0For a real upload from a GitHub release asset:
STEAM_BUILD_USER=vizza_ci scripts/steam-upload.sh --beta 0.1.0See docs/steam-uploads.md, docs/mcp.md, docs/gpu-profiling.md, and docs/ui-theme-preview.md for the Steam upload, MCP, profiling, and UI preview workflows.
src: executable entrypoint and integration testspackages/game: app flow, simulations, settings, render graph, render worker, Steam integration, video recording, and MCP bridgepackages/engine: queues, Vulkan context/resources, shader lookup, screenshots, logging, profiling, and UI renderingpackages/ui: renderer-agnostic immediate-mode UI primitives and widgetsassets: Slang shaders, LUTs, fonts, and app mediadocs: architecture, release, MCP, profiling, and dependency notes
- Language: Odin
- Window/input: SDL3
- Graphics and compute: Vulkan through
vendor:vulkan - Shaders: Slang compiled to SPIR-V
- UI: project-owned immediate-mode GUI
- Settings and presets: TOML via pinned
tomlc17 - Packaging: Make plus signed/notarized macOS app bundles, Windows zip archives, and Windows MSIX packages
See docs/dependency-map.md for the dependency translation from the original Tauri/Svelte/Rust project.






