Goal: grain, vignette, pixelate, progressive blur as scene/view-level effects — the FilterFn machinery (PR #29) does 90% of the work; missing is a scene-level hook and 3-4 new filter functions.
Acceptance: each new effect pixel-tested (vignette darkens corners not center; pixelate reduces unique-color count; grain is seeded-deterministic).
Verify: cargo test --workspace
Goal: grain, vignette, pixelate, progressive blur as scene/view-level effects — the FilterFn machinery (PR #29) does 90% of the work; missing is a scene-level hook and 3-4 new filter functions.
Acceptance: each new effect pixel-tested (vignette darkens corners not center; pixelate reduces unique-color count; grain is seeded-deterministic).
Verify: cargo test --workspace