The League of Legends modding suite built for VFX.
Recolor particles, port effects between champions, extract from the game, and repath a finished mod — all in one window.
Quartz is a modding suite aimed squarely at League of Legends VFX work. Where most tools stop at extracting files, Quartz gives you the whole loop — pull the assets out of the game, recolor and randomize particles, port emitters and vfxsystems between champions, then repath and ship the result.
This is the Rust rewrite. The original Electron build lives on the
electron-legacy
branch; everything here runs on Tauri 2 with a native Rust backend, so no
external CLIs or bundled Python are required.
- Paint — the core recoloring workflow. Random colors, hue shift that preserves lightness and saturation, generated shade ranges, blend-mode selection, custom saved palettes, and inline texture previews on hover.
- Port — load a target and a donor BIN, then drag whole vfxsystems or individual emitters across. Textures are copied into your project automatically; add persistent effects, matrix transforms, child emitters, or empty vfxsystems to nest into.
- VFX Hub — community-powered vfxsystem sharing, with images and the full Port toolset on top.
- Randomizer — randomize VFX particle parameters across an entire skin in one pass.
- FakeGear — wires up an in-game
Ctrl+5toggle so your skin can swap between VFX variants.
- WAD Explorer — explore WAD archives with live 3D model and texture preview.
- Asset Extractor — pick a champion and skin ID and extract straight out of the game's WADs, with auto-detection of your Champions folder, optional voiceover extraction, and automatic repathing on the way out.
- Sound Banks — extract, edit, and repack BNK / WPK / WEM audio for custom sound mods.
- Image Recolor — batch hue/saturation/brightness across a folder of DDS or TEX files, with a live preview before you commit.
- RGBA — adjust RGBA channels on DDS and TEX textures, and generate League-format color codes with full alpha support.
- Upscale — AI upscaling for DDS and PNG textures, powered by Upscayl.
- Bin Editor — edit BIN parameters like
birthscaleandscaledirectly, in bulk, across selected emitters or vfxsystems. - AniPort — port animations between champions and skins, including
AtomicClipDataand event maps. - Bumpath — repath a mod's file references using the integrated hash database.
- File Handler — bulk file processing in two modes: randomize textures across a folder (great for custom emotes), or add and strip prefixes/suffixes for map mods.
- Tools — drop your own executables in and drag folders onto them to run custom fixes.
Every League file Quartz touches is parsed in Rust by
RitoShark Crates — the
ritoshark workspace of rs_* crates written for this ecosystem, where the
contract is correct and lossless round-trips. Quartz uses it for:
| Crate | Used for |
|---|---|
rs_bin |
BIN read/write — the backbone of Paint, Port, VFX Hub, Bin Editor and Bumpath |
rs_wad |
WAD archives — Asset Extractor and WAD Explorer |
rs_tex |
TEX / DDS decode and encode — Image Recolor, RGBA, Upscale, texture previews |
rs_hash |
WAD and BIN hash resolution against the LMDB hash database |
rs_mesh / rs_anim |
SKN / SKL meshes and animations — 3D preview and AniPort |
rs_troybin / rs_luabin |
Legacy VFX and script formats |
Because parsing lives in the library rather than the app, a format fix lands once
and every RitoShark tool gets it. src-tauri/crates/quartz-lib/ is a thin wrapper
over those crates; the command modules in src-tauri/src/commands/ stay thin on
top of that. No ritobin CLI, no Python sidecar, no shelling out.
Just want to use it? Download the latest installer and run it. Quartz auto-updates itself from there.
git clone https://github.com/RitoShark/Quartz
cd Quartz
npm install
npm run tauri devPrerequisites
| Tool | Version |
|---|---|
| Rust | 1.75+ (rustup) |
| Node | v20+ (nodejs.org) |
| OS | Windows 10 / 11 |
Build a release installer
npm run tauri buildOutput: src-tauri/target/release/bundle/nsis/Quartz_<version>_x64-setup.exe
src/— React frontend:pages/,components/,lib/api/(typedinvokewrappers),lib/stores/(Zustand),lib/types/,styles/src-tauri/— Rust backend:src/commands/(one module per domain),src/core/,crates/quartz-lib/(the format layer over the RitoShark crates)
Quartz ships a theme creator with a live preview, and the whole UI is driven by CSS variables. To theme it by hand, override the accent palette from src/styles/theme.css:
:root {
--accent-primary: #3fa6f4; /* Quartz blue */
--accent-hover: #66b8f6;
--accent-secondary: #0f90f1;
--accent-muted: #1e5681;
}PRs welcome. Keep commits conventional — feat:, fix:, perf:, refactor:, docs: — they feed the changelog via git-cliff.
git checkout -b feat/your-feature
# hack hack hack
git commit -m "feat(scope): short imperative message"- FrogCsLoL — creator of Quartz.
- SirDexal — Helped with the rust tauri port
- Wiko — an maintainer. Reach out to him about updates and new releases.
- RitoShark Crates — the Rust format library doing all of Quartz's BIN, WAD, TEX, mesh and animation parsing.
- LtMAO by tarngaina — one of the most impressive toolpacks in League modding. Quartz would not exist without it.
- Jade by Bud — the BIN editor Quartz hands files off to.
- Upscayl and upscayl-ncnn — the free and open source AI upscaler behind the Upscale page.
- bnk-extract-GUI by Morilli — made full
.bnk/.wpksupport possible. - LeagueToolkit — the C# toolkit that remains the reference for League file formats.
Custom Open Source License. You can do what you like with this code, on three conditions: credit Quartz, keep your derivative open source and forkable, and grant the original author the right to use improvements from your fork.
League of Legends, all champion art, and all referenced game assets are property of Riot Games, Inc. Quartz is an unofficial community tool and is not endorsed by or affiliated with Riot Games.
