Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Shaders

Lives in: shaders/ · commands (char, bg, sprite, obj, panel, screen_shader) · plate shader (target: "bg" only)

Visual filters from .gdshader files. Attach by name (no extension), or clear with null.

On a character or prop

{
  "type": "char",
  "name": "hana",
  "position": "left",
  "shader": "drop_shadow",
  "shader_params": { "blur": 2.0 }
}
ValueEffect
key absentKeep whatever is already on
nullClear
stringApply shaders/<name>.gdshader
objectFull form — see below

Pack files do not list shaders — the story (or a bind) does. Drive a uniform from a flag with bind and a shader:… key — Reacting to flags live.

Backgrounds: Backgrounds.

Full object

{
  "name": "hotspot_glow",
  "params": { "glow_radius": 45 },
  "target": "full",
  "pass": "subviewport",
  "margin": 48
}
KeyEffect
nameFile stem under shaders/
paramsUniforms (numbers, #hex, vectors)
targetbg | full — allowed values differ by surface (see below)
passdirect or subviewport
marginExtra pixels so glow is not clipped (forces subviewport when > 0)

Which forms each surface accepts, its target values, and where the effect sits is the per-surface matrix: only char / bg / stage take a bare string; sprite / obj / panel / screens need the object. Every effect is one shader per slot / instance, never per layer or part.

On a named plate (panel.<preset>.plates.<name>.shader), only target: "bg" applies — Theme: panel → Plates.

Whole-screen effect

{ "type": "screen_shader", "value": "glitch", "target": "game", "shader_params": { "noise_intensity": 0.2 } }
{ "type": "screen_shader", "value": null }

target here is the screen-shader plane (game / scene / all) — coverage map: Planes and slots. Clear with null.

Usually you need

WantDo
Soft shadow on a character"shader": "drop_shadow" (+ params)
Clear it"shader": null on a later char
Room-wide vibescreen_shader
Uniform follows a flagbind → shader:…

Next

Cursor