⚠️ Alpha · testnets only. ChainRender is in active alpha and deployed on testnets only — Ethereum Sepolia, the Robinhood Chain Testnet, and the Circle Arc Testnet — not on any mainnet. Contracts, addresses, and APIs may change. Do not use with real funds or production assets.
Guides

Guide: Applying Post-Processing Effects

ChainRender's effects library (EffectPresetRegistry) applies post-processing — CRT, glass, vignette, scanlines, grain — over a rendered scene or image, as a composable, content-addressed stack.

Apply an effect stack

Effects are referenced by preset (content hash) and applied as a stack over the base render. Each effect has an SVG-filter floor, so the effect applies on-chain (not only as a GPU shader) — the styled result is part of the trustless output, and richer GPU versions enhance over it.

// conceptually: base scene + an ordered effect stack (each preset referenced by hash)
// [crt] -> [vignette] -> [grain]

Why effects are floored

A naive "apply a shader" would only work on a capable GPU client. ChainRender's effects each have an on-chain SVG-filter floor, so:

  • the effect applies on-chain (Grade A) as an SVG filter,
  • a GPU client can render a richer version over it,
  • it fails closed to the SVG-filter floor.

Composability

Effects are data — stack several, reorder them, reuse presets across components. Because presets are content-addressed, an effect stack is reproducible and shareable.

Related