--- name: expocut-fx-looks description: Applies and combines ExpoCut's 7 parametric FX filter engines and 100+ one-tap Looks — cinematic grades with skin-tone protection and film halation, warp and distortion, retro CRT/LED displays, pencil and neon sketch, lens flares and light leaks, cartoon and pop-art, and temporal light flicker — on image and video layers through the ExpoCut MCP server. Use when the user asks for "a look", "make it cinematic", "film look", "VHS", "CRT", "retro", "glitch aesthetic", "cartoon", "comic", "sketch", "lens flare", "film grain", "halation", "teal and orange", "fisheye", "kaleidoscope", or wants to stack several visual filters on one clip. Do NOT use for LUT/CDL colorist round-trips (use expocut-color-grading) or transform animations like shake and bounce (use expocut-motion-graphics). license: Free to use and redistribute with attribution to expocut.com. compatibility: Works standalone as guidance; becomes hands-on when paired with the ExpoCut in-app MCP server (private/loopback network only). metadata: author: ExpoCut (expotechin.com) version: "1.0.0" homepage: https://expocut.com/skill.html --- # FX engines & one-tap Looks You are a finishing artist. ExpoCut ships 7 parametric filter ENGINES; every "Look" is a named preset of one engine, so anything you apply stays fully tunable afterwards — never a baked, dead-end filter. ## The engine map | engine id | what it does | flagship presets | |-----------------|---------------------------------------------------------|------------------| | cinematicgrade | split-tone wheels, skin-tone protection, film halation, luma grain, filmic curve | "Teal & Orange", "Film Print", "Cyberpunk Neon", "Golden Skin" | | warp | swirl, fisheye, kaleidoscope, tiny planet, ripple, shockwave (mode 0–10) | "Swirl", "Fisheye", "Kaleido Six", "Tiny Planet" | | retrodisplay | CRT, scanlines, interlace, LED board, handheld palette, datamosh (mode 0–6) | "CRT Monitor", "LED Billboard", "Handheld Mono" | | edgesketch | pencil, neon edges, toon, emboss, charcoal, ink outline | "Pencil Sketch", "Neon Edge", "Comic Ink" | | lightfx | lens flare, star burst, light leak, sparkle, spotlight, anamorphic streak | "Lens Flare", "Warm Leak", "Anamorphic Gold" | | cartoon | cel shade, comic dots, anime, watercolor, oil paint, pop art | "Cartoon Classic", "Comic Pop", "Pop Art Pink" | | lightflicker | projector flicker, strobe, neon buzz, candlelight, lightning, party hue | "Film Projector", "Candlelight", "Lightning Storm" | ## One-tap Look (the default move) set_layer_shader_filter { layerId, effectId: "cinematicgrade", preset: "Teal & Orange" } - `preset` applies the named Look's full tuned parameter set. - Add `fxParams` on top to override single values (e.g. { skinProtect: 1 }). - Discover everything at runtime: list_effects { category: "filter" } for engines, get_effect_schema { id: "cinematicgrade" } for params + preset names. ## Stacking rules (read before combining) 1. Default call REPLACES the layer's whole filter chain. 2. `append: true` STACKS a different engine — up to 4 stages compose; a 5th throws. Order matters: grade first, distort/display next, light last. 3. Appending an engine already in the chain SWAPS that instance (no dupes) — so switching "Teal & Orange" → "Film Print" is just another preset call. 4. remove_layer_shader_filter { layerId, effectId } removes one; clear_layer_shader_filters { layerId } removes all. ## Proven stacks Film print finish: 1. set_layer_shader_filter { layerId, effectId:"cinematicgrade", preset:"Film Print" } 2. set_layer_shader_filter { layerId, effectId:"lightfx", preset:"Anamorphic Gold", append:true } 3. set_layer_shader_filter { layerId, effectId:"lightflicker", preset:"Film Projector", append:true } Retro broadcast: retrodisplay "CRT Monitor" + cinematicgrade { lift:0.1, temperature:0.22, saturation:-0.2 } appended. Comic cover: cartoon "Comic Pop" + lightfx "Sparkle Dust" appended. ## Parameters worth reaching for - skinProtect (0–1): keeps faces natural under aggressive grades — raise it for people footage, drop to 0 for landscapes. - halation, grain, filmic: the "shot on film" trio; 2026 taste = restraint (halation ≤ 0.4, grain ≤ 0.3, lifted—not crushed—blacks). - warp.mode / retrodisplay.mode: integer selects the sub-effect; check get_effect_schema for the mode map before guessing. ## Verify loop (always close it) 1. get_layer { layerId } → confirm `shaderFilters` lists the expected engine ids in order. 2. capture_canvas { timeSec } before and after — compare, don't assume. 3. lightflicker and other time-driven engines look static on a paused frame — judge them with preview_filmstrip { fromSec, toSec, frames: 6 } or playback.