Author post-processing and sprite effects with presets or raw GLSL.

Shader Editor

The Shader Editor (Asset Manager → Shaders) is how you author visual effects — colour grading, vignettes, pixelation, scanlines, glow — and apply them to the whole screen, a zone, a sprite, or a VFX layer. It has two modes, and a live preview that renders a sample sprite through your compiled shader with time animating.

Two Authoring Modes

ModeFor
StackNo code. Add ordered preset nodes and tune their parameters with sliders and colour pickers
GLSLWrite a raw fragment shader, then Compile & Validate — errors are reported inline, and a failed compile clears the preview instead of breaking anything

Preset nodes

The stack library ships with: color-adjust, tint, gradient-map, vignette, pixelate, chromatic-aberration, wave, glow-lite, scanlines, grayscale, and flash-pulse. Nodes are ordered, individually enabled, and each exposes typed parameters (float, vec2, colour) — including animatable curves.

Scopes

A shader declares where it can be applied:

ScopeApplies to
FullscreenThe whole screen — colour grading, CRT looks, damage flashes
ZoneEverything rendered in a zone — an underwater or poisoned-swamp look
LayerOne render layer
Entity / SpriteA single character or sprite — a frozen or burning target
TileTerrain tiles
VFXA visual-effect layer

Each shader also declares a quality tier (low / medium / high / ultra) so heavy effects can be skipped on weak hardware, and per-entity scopes are subject to a runtime budget that warns and skips rather than tanking the frame rate.

Authoring a shader — step by step

1. Open Asset Manager → Shaders and create a shader. Give it a Name. 2. Choose the Mode (Stack or GLSL) and the Scope (where it can apply). 3. Tick the quality tiers it's allowed to run on, and leave Enabled off until it looks right. 4. Stack mode: click to add preset nodes, drag to reorder them (order matters — they run top to bottom), toggle each on/off, and tune the sliders / color pickers. GLSL mode: write your fragment shader, then Compile & Validate. 5. Watch the live preview — it renders a sample sprite through your compiled shader with time animating. A bad compile clears the preview and reports the error inline instead of breaking anything. 6. Enable the shader and save. Fullscreen and zone shaders apply in game automatically; others are bound to their target (a sprite, tile, layer, or a VFX layer).

Writing GLSL

Raw mode expects a GLSL ES 3.00 fragment shader that assigns finalColor. These builtins are provided: uTexture, uTime, uResolution, and vTextureCoord. Any extra uniform must be declared as a typed parameter (float, vec2, or color) and named u<Name> — that's what turns it into a slider or color control. The validator rejects unsafe code (while loops, unbounded for, shaders over 16 KB) and anything referencing an undeclared uniform.

Limits: up to 24 nodes in a stack and 32 parameters. Parameters can be animated over time with curves.

> Cross-editor tip: any shader you build here can be applied as a post-pass on a single VFX layer from the VFX Editor — great for a heat-haze or glitch pass on one effect.

> New projects seed three example shaders (CRT, sepia, frozen tint) in the library, disabled — they're there to read and copy, not to tint your world by default.