Lifted from #72 (F13). Pure delight / "fun to use" pillar of the product.
Goal
A display-only CRT effect (scanlines, phosphor mask, barrel curvature, bloom, vignette) over the composited output — never touching pixel data, cels, or the project file. Same principle as the preview background modes from #52.
Architecture decision (from the PRD)
Build a generic post-process view-effect slot, not a hardcoded CRT toggle — future effects (LCD grid, Game Boy palette preview) reuse the slot. Effect settings live in the settings store (src/stores/settings.ts), never in ProjectFile.
Surfaces, in order
- Live preview overlay (
src/components/preview/pf-preview-overlay.ts) — cheapest, ship first.
- Main viewport "view mode: CRT" — optional second step.
- Export "with effect" — baked into GIF/WebP/PNG copies, clearly labeled, at export time only.
Sub-issues / order
- View-effect slot infrastructure (WebGL post-process pass over a composited canvas)
- CRT shader + presets + settings UI
- Export-with-effect + main viewport view mode
Acceptance (feature-level)
- Toggle CRT on the preview, tune intensity; save/load hash of project data is unchanged.
- Export "with effect" produces a separate styled copy; normal export untouched.
Dependencies
None hard. Synergy: F5 share pages may offer it as a viewer toggle; F14 reveal moment uses it.
Lifted from #72 (F13). Pure delight / "fun to use" pillar of the product.
Goal
A display-only CRT effect (scanlines, phosphor mask, barrel curvature, bloom, vignette) over the composited output — never touching pixel data, cels, or the project file. Same principle as the preview background modes from #52.
Architecture decision (from the PRD)
Build a generic post-process view-effect slot, not a hardcoded CRT toggle — future effects (LCD grid, Game Boy palette preview) reuse the slot. Effect settings live in the settings store (
src/stores/settings.ts), never inProjectFile.Surfaces, in order
src/components/preview/pf-preview-overlay.ts) — cheapest, ship first.Sub-issues / order
Acceptance (feature-level)
Dependencies
None hard. Synergy: F5 share pages may offer it as a viewer toggle; F14 reveal moment uses it.