Reference
Ordered post-processing
Image effects applied after visual composition in written order, with distinct rules for replacing, preserving, restoring, or bypassing post treatment.
The :post facet of a channel form applies image effects after visual composition, in the order written. This reference covers ordering, the available stages, numeric controls, and the four ways a channel form can set post treatment.
Post effects operate on the preceding image, in the written order. ASCII after pixelation is different from pixelation after ASCII.
Ordered image post-processing is a distinct layer after visual composition. It does not replace the shader chain that produced the image.
Image stages include ASCII rendering, pixelation, edge glow, bloom, phosphor persistence, scanlines, and chromatic faults. The operators below are the ones that appear in the examples on this page and in Multimodal channel forms, with the keywords those examples use.
| Stage | Operator in the examples | Keywords used in the examples |
|---|---|---|
| ASCII rendering | mora.visual:ascii | :characters |
| Pixelation | mora.visual:pixelate | :px, :py |
| Edge glow | mora.visual:edge-glow | :amount, :radius |
| Bloom | mora.visual:bloom | :amount, :threshold, :radius |
| Phosphor persistence | mora.visual:phosphor | :seconds |
| Scanlines | mora.visual:scanlines | :direction, :spacing, :thickness, :opacity |
| Chromatic faults | mora.visual:chromatic | :trigger, :pixels |
ASCII rendering is a reusable image-to-glyph post-processing path.
Each occurrence of a history effect owns its own history rather than sharing one global trail buffer.
Numeric controls can be ordinary numbers, temporal patterns, or retained knobs and sliders where supported. See Inline controls.
This form supplies a four-stage chain. Because :audio and :viz are omitted, they are left alone:
(d1! :post (>> (mora.visual:phosphor :seconds .18)
(mora.visual:bloom :amount .35
:threshold .8
:radius .35)
(mora.visual:scanlines :direction :both
:spacing 5
:thickness 1
:opacity .15)
(mora.visual:chromatic :trigger :kick
:pixels 3)))Supplying an explicit chain replaces a renderer’s legacy built-in post effects. It does not replace the renderer’s underlying visual object or geometry. Omission preserves the installed policy.
:post in the channel form | Effect |
|---|---|
| An explicit chain | Replaces the renderer’s legacy built-in post effects. The underlying visual object and geometry are unchanged. |
| Omitted | Preserves the installed post policy. |
nil | Restores the renderer’s legacy treatment. |
(mora.visual:post-chain) | An explicit empty chain: no post effects, including legacy effects. |
The distinction between removing a policy and deliberately bypassing effects is explicit:
;; Restore the renderer's legacy treatment.
(d1! :post nil)
;; Use an explicit empty chain: no post effects, including legacy effects.
(d1! :post (mora.visual:post-chain)):post is image processing. The SuperDirtMora companion has its own ordered insert effects, which form an audio chain; the similarly ordered :post chain is not another name for those audio inserts. See SuperDirtMora companion.
Source references
Repository-relative paths in the Mora source where these mechanisms are implemented.
-
src/visual/post-model.lisp -
src/visual/post-backend.lisp -
src/visual/ascii-post.lisp