Skip to content

F13 — CRT display effect (non-destructive view effects) #124

Description

@Flow-Fly

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

  1. Live preview overlay (src/components/preview/pf-preview-overlay.ts) — cheapest, ship first.
  2. Main viewport "view mode: CRT" — optional second step.
  3. Export "with effect" — baked into GIF/WebP/PNG copies, clearly labeled, at export time only.

Sub-issues / order

  1. View-effect slot infrastructure (WebGL post-process pass over a composited canvas)
  2. CRT shader + presets + settings UI
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions