| name | visual-aesthetics |
| description | MUST READ before building or refining rendered visual output in TouchDesigner: generative art, VJ visuals, shaders, scenes, renders, projections, or anything shown on screen. Principles, verified TD recipes, and named looks for composition, camera, lighting, value, color, contrast, motion, materials, and finishing. |
Visual Aesthetics
Make rendered image and motion output read clearly, intentionally, and with craft: deliberate composition, camera, lighting, palette, motion, and finish. This skill is about what appears on screen, not node or network layout.
Operator and parameter names in this skill are verified against the official Derivative docs (TD 2025+). Anything you add beyond them still follows td-python.md -> Verify Before Claiming.
When to Load This Skill
Load before building or refining any network whose purpose is visual output: generative art, VJ visuals, shaders, render scenes, projection content, UI visuals, or captured TOP output. Pair it with capture_top to evaluate the actual result against the rubric at the end.
Output-first: show the work in the backdrop
Before building any TOP chain, create the terminal Out TOP named out1 and position it per network-layout rules.
Immediately call set_op_flags(op_path, display=True) on out1.
A TOP with its Display flag on renders as the network editor backdrop when the pane's Display > Backdrop TOPs option is enabled; TD defaults this on.
As soon as any stage produces pixels, wire the current chain end into out1.
Keep out1 wired while iterating, including while replacing, inserting, or bypassing intermediate nodes.
The user should watch progress live behind the network, not wait for a final capture.
The final deliverable stays terminated in out1, matching the existing output terminal convention.
Use capture_top on out1 for verification passes.
The Working Loop (mandatory)
- Write a 3-line intent brief before creating any operator: the subject (what the eye lands on first), the mood and palette (name one from Color, or design one), and the motion character (calm drift / pulsing energy / mechanical precision / still). If the user's request doesn't specify, propose a brief and build to it. Never start assembling operators with no target look -- that is how default-looking output happens.
- Build in passes, in this order: composition + camera blocking -> lighting + value -> color -> motion -> finishing. Get each pass reading correctly before decorating the next. Post cannot rescue a weak composition; color cannot rescue a weak value structure.
- Capture and judge after every pass:
capture_top the OUTPUT TOP and actually look at the frame. Judge it against the brief AND the self-check rubric. NEVER declare a visual task done without capturing and assessing the frame -- a clean network is not success; a good-looking, correct frame is.
- Judge motion over time, not from one still. For anything animated: (a) let time-evolving systems SETTLE before judging -- feedback and particle systems need dozens-to-hundreds of frames, and an early capture misreads as empty or thin; (b) verify it actually animates: capture, let real seconds pass, capture again -- the frames must differ; (c) judge motion character across 3-5 captures spread over the cycle, including both sides of a loop wrap (the wrap must be invisible); (d) for audio-reactive work, capture at a peak AND at silence -- the silence floor must still look composed; (e) emergent looks (e.g. feedback painting) invert the pass order: build the process, run it, judge the accumulated frame.
- If the captured frame is black or empty, diagnose before continuing: (a) display/render flags on the output op; (b) for 3D, that a camera, a light, and geometry with render/display on all exist; (c) the chain terminates in a cooking Null; (d) no bypass flag is on; (e) resolution is not 0; (f) alpha/premultiply if the image seems present but invisible.
- Iterate with the smallest knob set: adjust the fewest upstream controls (see the Fix-It Map at the end), re-capture, re-judge.
Kill the Default Look
TD operators at default values produce recognizable "programmer art". These are the tells; if a capture shows one, fix it before building further:
| Tell | Fix |
|---|
| Grey Phong on default-lit geometry | Choose a material on purpose: PBR MAT with a palette base color + roughness, or Constant MAT for graphic flats (see Materials) |
| One white light left wherever it spawned | Build the rig: three-point, or one dramatic key + colored fill (see Lighting) |
| Subject centered at origin, camera never moved | Choose viewpoint and lens; frame deliberately (see Camera, Composition) |
| Raw default Noise TOP as texture or background | Shape it (mono, period, harmon, exp), grade it, then map it through a palette Lookup (see Color) |
| Rainbow hue-cycling (animated hue) | Lock the palette; animate value, position, or scale -- not hue (see Color) |
| One constant-speed linear rotation as the only motion | Ease it, layer it, de-sync it (see Motion) |
| Audio amplitude wired raw to scale or brightness | Shape with Lag (fast rise, slow fall) and keep a floor (see Motion) |
| Bloom slathered across the whole frame | Raise bloomthreshold until only the accent blooms (see Finishing) |
| Glowing accent in a dark void as the answer to every brief | That is its own cliche -- vary the field: high-key, daylight, pastel, fog (see Color, Look Recipes) |
| Everything equally sharp, bright, saturated, and moving | Impose hierarchy: one subject, a calmer field (see Contrast) |
Composition and Framing
Every frame needs hierarchy: decide what the viewer sees first, second, and last, then make that order unavoidable.
| Principle | How | Failure mode |
|---|
| One clear focal point | Choose the subject before building effects. Give it the strongest contrast, sharpest detail, most distinct color, or unique motion. Support it with camera placement and layered Composite/Over structure. | Multiple equally intense elements compete; busy but shapeless. |
| Deliberate placement | Rule-of-thirds by default; centered symmetry only when the iconic/stable read is intentional. Balance asymmetry with visual weight (size, brightness, saturation, density, motion). | Subject drifts near center by accident; a bright background object steals the eye. |
| Negative space | Leave quiet regions: lower detail, contrast, saturation, motion. Use Crop/Transform/camera framing rather than filling every pixel. | Every area equally dense; reads as wallpaper. |
| Depth cues | Foreground/midground/background roles via overlap and scale; atmosphere and focus per the Camera section. | Layers all sit on one visual plane. |
| Edges and tangents | Check the captured frame for shapes grazing borders or kissing each other; reframe or offset. TD render coords: (0,0) is bottom-left, Y up. | Clipped joints and accidental alignments look unpolished. |
| Compose at delivery aspect | Set final resolution/aspect on the output from frame one. A 16:9 composition does not survive a 9:16 crop. | Reframing at the end breaks the composition. |
Camera
The camera is a creative decision, not plumbing. Blocking = viewpoint + lens + distance, chosen together.
| Choice | Reads as | TD |
|---|
| Eye-level, subject on a third | Neutral, documentary | Position via t*; aim with lookat |
| Low angle looking up | Monumental, heroic subject | Drop camera ty, raise lookat target |
| High angle / top-down | Diagrammatic, graphic, map-like | Raise ty, steepen pitch |
| Wide lens, close (fov ~60-90) | Drama, exaggerated depth and speed, edge distortion | viewanglemethod=horzfov, fov up, dolly in |
| Long lens, far (fov ~15-30) | Compression, calm, stacked layers | fov down, dolly out to reframe |
- Dolly vs zoom are different moves. Moving the camera changes parallax (spatial, alive); animating
fov flattens or stretches perspective. Prefer dolly for travel; animate both against each other only for a deliberate vertigo effect.
- Look-at rig: point the Camera COMP's
lookat at a Null COMP on the subject and animate the NULL to steer gaze; lookup controls roll behavior. To move attention between subjects, move (and ease) the null -- not the camera rotation channels.
- Orbit rig: parent the camera under a Null COMP at the subject and animate the null's
ry; keep lookat on the subject. Calm/ambient = ~2-6 deg/sec (a full orbit in 60s or more); 10-15 deg/sec reads as an energetic product-turntable move. Always eased in/out.
- Ease every camera move: run position/target control channels through a Filter CHOP (
type=gauss, width 0.2-0.5 -- camera moves usually sit at the wider end -- with widthunit set to Seconds so the width is a time, not a sample count). Camera Blend COMP blends whole camera rigs for shot-to-shot moves.
- Handheld life (optional): add a low-amplitude Noise CHOP (
timeslice on, long period) to rotation on top of the smoothed move -- amplitude 0.05-0.3 deg, never above ~0.5, low frequency only; visible sway is a different (deliberate) choice.
- Depth staging: place content in near/mid/far bands, then sell the depth with (a) overlap + scale, (b) atmosphere -- Camera COMP fog:
fog=exp, fogcolor matched to the background palette, fogdensity low so distance sinks toward the background, (c) focus -- TD has no built-in DOF: Depth TOP (pointed at the Render TOP) -> Level TOP to isolate a focus band -> second input of a Luma Blur TOP (whitewidth = max blur, blackwidth = 0). Even two of the three read as space.
Camera checklist: deliberate height + angle, deliberate focal length, framing per Composition, moves eased, some parallax or atmosphere.
Lighting
Light is hierarchy. Never ship the single default white light.
- Three-point starting rig (three Light COMPs; ratios are starting points -- capture and judge): key at
dimmer=1.0, ~30-45 deg off the camera axis and above; fill at dimmer=0.25-0.4 from the other side, cooler (or complementary) via cr/cg/cb; rim behind the subject at dimmer=1.2-2.0 to cut the silhouette from the background.
- One-light drama: a single
lighttype=cone key (tight coneangle, soft conedelta edge) over a dark field reads theatrical; let attenuation (attenuated, attenuationstart/end) shape the falloff into black.
- Color the light, not just the surfaces: warm key + cool fill (or the inverse) creates instant depth. Keep light colors gently tinted; the palette carries the saturation.
- Shadows:
shadowtype=soft2d on the KEY light only (each shadowed light costs); hard2d for graphic looks; off for fill and rim.
- PBR needs an environment: pair PBR MAT with an Environment Light COMP (
envlightmap = an environment or gradient TOP, dimmer low, ~0.2-0.5) plus one key Light COMP. PBR under a lone point light looks dead.
- Emissive accent: make the focal element clearly the brightest thing in the frame (
emitr/g/b on PBR/Phong MAT, or a Constant MAT hot spot) -- it becomes the Bloom source in Finishing, so glow lands exactly on the subject (this needs the float-format precondition in Finishing to work).
- Light the subject, not the world: the background gets its own treatment -- a dimmer wash, a subtle Ramp TOP gradient, or fog color -- never an untouched flat grey void behind a lit subject.
Value
| Principle | How | Failure mode |
|---|
| Value reads before color | Create distinct dark, mid, and light areas. Squint-test the capture: tap a Monochrome TOP on the output (delete it after) -- the frame must still read as clear shapes. | Desaturated, the subject disappears. |
| Real range, no accidental clipping | Level TOP: blacklevel sets the floor, gamma1 the mid balance, contrast the spread; Range page inlow/inhigh/outlow/outhigh remaps. Pure black/white only when intentional. | Muddy mid-only frames look weak; clipped frames lose form. |
| Highest local contrast on the subject | Reserve the sharpest dark-light transition for the focal point; soften background contrast with grading, fog, blur, or opacity. | Background edges out-contrast the subject; the eye goes to the wrong place. |
| Re-check value after post | Bloom, feedback, and stacked composites collapse structure. Re-run the squint test after finishing. | Post turns clear values into grey haze. |
Color
Palette-first workflow -- the single most reliable "designed" move in TD:
- Pick or design the palette BEFORE building: 3-5 colors -- one dominant family, one support, one accent. To design one from the brief: take the dominant hue from the subject/mood or a user reference; support = a near-analogous hue; accent leans complementary; tint the darks toward the dominant (never pure black unless the intent is graphic); set a saturation ceiling (field ~0.6, accent may reach full). The table below is a springboard to modify (shift hues, invert polarity), not a menu of fixed moods.
- Build it as a Ramp TOP driven by a keys Table DAT (Ramp
dat parameter; each row = position 0-1 then RGBA). The DAT is scriptable and updates the ramp live.
- Map content through it with a Lookup TOP: first input = the (mono) content, second input = the ramp; set
channel=luminance.
- Grade the source with a Level TOP first so its darks/mids/lights land on the palette regions you intend.
Starter palettes (Ramp keys as pos: r g b; starting points -- tune by capture):
| Palette | Keys |
|---|
| Ember on teal (cinematic) | 0: 0.01 0.05 0.08 / 0.45: 0.07 0.18 0.22 / 0.8: 0.95 0.45 0.15 / 1: 1.0 0.93 0.82 |
| Neon dusk (club/VJ) | 0: 0.03 0.01 0.07 / 0.5: 0.55 0.08 0.5 / 0.85: 0.1 0.85 0.95 / 1: 0.98 0.97 1.0 |
| Deep sea biolume | 0: 0.0 0.02 0.05 / 0.55: 0.03 0.14 0.3 / 0.85: 0.15 0.9 0.8 / 1: 0.9 1.0 0.97 |
| Pastel dawn (airy) | 0: 0.24 0.22 0.3 / 0.4: 0.62 0.55 0.72 / 0.75: 0.95 0.7 0.62 / 1: 0.99 0.94 0.86 |
| Mono + acid accent | 0: 0.02 0.02 0.02 / 0.7: 0.55 0.56 0.55 / 1: 0.92 0.93 0.92 -- accent 0.7 1.0 0.1 on a separate sparing layer |
| Infrared heat | 0: 0.0 0.0 0.0 / 0.4: 0.35 0.02 0.04 / 0.75: 0.95 0.35 0.05 / 1: 1.0 0.95 0.75 |
| Gallery high-key (light field) | 0: 0.16 0.15 0.14 / 0.6: 0.78 0.77 0.74 / 1: 0.98 0.97 0.95 -- accent 0.85 0.25 0.12, sparing |
| Nordic daylight (cool high-key) | 0: 0.2 0.24 0.28 / 0.55: 0.72 0.77 0.81 / 1: 0.97 0.98 0.99 -- accent 0.9 0.55 0.2 |
Four of the first six are dark-field; the last two are light-field. Choose polarity from the brief, not from habit -- a bright frame with a dark subject is as designed as a dark frame with a glowing one.
Principles on top of the workflow:
- Dominant plus accent: one color family carries most of the frame; a small, higher-saturation accent marks the focal point. Equal saturation everywhere = no priority.
- Temperature dominance: decide warm-dominant or cool-dominant; use the opposite sparingly (subject, rim, depth cue). 50/50 temperature reads as noise.
- Saturation discipline: most of the frame under ~0.6 saturation; only the accent approaches full. Full-saturation-everywhere is a default tell.
- Unify mismatched sources: HSV Adjust TOP --
saturationmult below 1 to calm a layer, hueoffset to pull strays toward the family; selective correction via hue keying (startcolor + huerange/huefalloff).
- Color supports value: grade after the value structure works; hue must reinforce the same hierarchy, not fight it.
- Never animate hue as motion. Animate brightness, position, scale -- the palette stays fixed. (Minutes-slow palette evolution in ambient sets: crossfade two ramps with a Cross TOP
cross.)
Contrast
- Contrast is the engine of interest -- value, hue, temperature, saturation, size, shape, texture, focus, motion. Choose 1-3 axes to push; leave the rest calm. Pushing every axis at once is visual shouting.
- Figure-ground is non-negotiable: the subject must separate from the background on at least one axis (value, temperature, edge sharpness, focus, scale, motion). Bright subject -> darker/cooler immediate background; soft subject -> simpler background.
- Avoid uniformity: some regions must be calm, soft, dark, slow. Equal detail everywhere reads as flat noise.
Motion and Time
- Ease every control signal. Filter CHOP
type=gauss, width 0.2-0.5 with widthunit set to Seconds (set it explicitly -- do not assume the unit). Lag CHOP for asymmetric response: lag1 (rise) / lag2 (fall), overshoot1/2 for snap. Constant-speed linear motion reads robotic unless mechanical precision is the intent.
- Layer motion like fBm: one slow, large drift (Noise CHOP,
timeslice on, period 20-60s, full amplitude) + one fast, small detail (short period, 5-10% amplitude), summed in a Math CHOP. One-frequency motion reads mechanical; layered motion reads alive.
- De-sync repeated elements: per-element phase from a Pattern CHOP (
wavetype=ramp, length = element count) feeding phase/offset, or per-instance channels (see Materials). Everything pulsing in unison is a default tell.
- Evolve in place, don't pan: for animated noise textures, set a 4D
type (perlin4d/simplex4d) and drive the Noise TOP's t4d by time -- the field deforms in place instead of scrolling. If the generator is expensive, keep it static and animate cheap downstream sampling instead (Transform TOP drift/rotate; see td-python.md Cook Model).
- Motion contrast is a focal tool: the eye goes to the element moving differently -- including the one still element in a moving field. Background motion slower, smoother, lower amplitude; the subject gets distinct timing.
- Audio-reactivity that reads as music, not meters: band energy from an Audio Spectrum CHOP (or Analyze CHOP
function=rmspower for overall level) -> Lag CHOP (lag1 0.02-0.08 fast rise, lag2 0.3-0.8 slow fall) -> Math CHOP fromrange1/2 -> torange1/2 into a bounded parameter range with a NONZERO floor, so silence still looks composed. Map one band to one property, 2-3 mappings total; use a Beat CHOP for tempo-locked pulses/ramps instead of raw amplitude.
- Rhythm needs rest: alternate active passages with quieter ones -- pauses, slower cycles, temporary simplification. Constant intensity exhausts attention.
- Loops: build cycles from integer-period LFOs/Pattern ramps so the wrap point is invisible; watch the loop twice before calling it seamless.
Materials and Texture
- PBR:
basecolorr/g/b from the palette (not saturated primaries), metallic near 0 or 1, and VARY roughness across the surface -- feed roughnessmap with shaped mono noise. Uniform roughness reads as plastic.
- Constant MAT (
colorr/g/b, alpha): flat color, no light response -- for graphic looks; hierarchy must then come entirely from color/value/scale.
- Line MAT for structural/wireframe looks: distance-attenuated width via
widthnear/widthfar.
- Instancing variety: an army of identical clones is a tell. Feed
instanceop with Noise/Pattern CHOP channels and map per-instance scale, rotation (instancerx/ry/rz), and color (instancer/g/b/a). Even 5-10% scale jitter breaks the grid feel.
- Point sprites (particles): Point Sprite MAT with additive blending reads as light -- keep per-sprite brightness LOW and let Bloom carry the glow; feed a radial-falloff texture into the color map or sprites render as squares.
- Compositing selection rule: additive/
screen for things made of light (glow, particles, lens effects); over for solid objects; multiply for shadow, tint, and vignette. Compositing solids additively washes out overlaps; compositing light with over makes halos.
Finishing and Post
Canonical chain, in order, after the main composite. Every stage at LOW strength; toggle each on/off and keep it only if the frame improves. Post should focus the image, never advertise itself.
Two preconditions, set at RENDER time (not as post stages):
- Float pipeline: for 3D/HDR-leaning work, set a 16/32-bit float pixel format on the Render TOP (Common page) and keep the chain float through bloom and tone map. On an 8-bit chain everything clips at 1.0: the tone map becomes a near no-op and a high bloom threshold blooms every near-white pixel instead of isolating the emitter.
- Edge quality: aliased edges read amateur instantly. Set the Render TOP's
antialias (e.g. aa8high) when building; for aliased 2D composites, apply an Anti Alias TOP BEFORE this chain. AA applied after grain just smears the grain.
- Grade: Level TOP --
blacklevel just above crush, gamma1 for mid balance, gentle contrast; or a full palette Lookup.
- Bloom (before the tone map, so the threshold keys on true intensity): Bloom TOP --
bloomthreshold high enough that ONLY the intended accent blooms (start ~0.8), bloomintensity low (start ~0.3-0.5), spread via minbloomradius/maxbloomradius. Re-squint after: bloom is the #1 destroyer of value structure.
- Tone map (3D/HDR-leaning sources): Tone Map TOP
type=acesapprox or filmic rolls hot highlights off filmically instead of clipping.
- Optional lens character (nearly subliminal or not at all): tiny Lens Distort TOP barrel (
k1), or a chromatic fringe -- isolate R and B with per-channel Level ranges, offset them a pixel or two in opposite directions with Transform TOPs, recombine with Composite.
- Vignette: radial Ramp TOP (
type=radial) with hold-then-rolloff keys (0: 1.0 / 0.65: 1.0 / 1: 0.85) so the center stays clean and only the outer third rolls off; composite with operand=multiply. If you can see that it's a vignette, it's too strong.
- Grain (always last -- it is the film layer on top): fine-scale mono Noise TOP (
mono on), animated by driving seed or a translate with absTime.frame, composited at ~3-8% (Level opacity on the grain branch, Composite operand=add or screen). Grain also kills gradient banding; so does the Ramp/Blur dither toggle at the source.
Resolution and Delivery
- Compose at the delivery aspect from the start; iterate at half resolution for speed, but run the FINAL judge pass at full delivery resolution -- grain, AA, detail, and banding all read differently at target size.
- The look is not done if it cannot hold frame rate: gate heavy builds per
performance.md (baseline, re-check, stop conditions).
Look Recipes (starting formulas, not law)
Most of these lean dark-field because emissive light is TD's home turf -- but do not DEFAULT to a glowing accent in a dark void; that is its own cliche. If the brief allows daylight, paper, pastel, or fog, take the high-key route.
- High-key editorial: bright, slightly tinted field (0.92-0.97, never pure white); a DARK subject carries the read -- the value logic inverts, so the deepest dark sits on the subject; separation via soft shadows (
soft2d) and value, not glow; NO bloom; minimal grain (2-4%); one small saturated accent. A light frame reads premium next to the dark-field default.
- Neon glow lines: near-black field (0.02-0.05); line/edge content in 1-2 neon hues with white-hot cores; additive composites; Bloom carries the glow (threshold ~0.7, modest intensity); motion = slow drift + occasional pulse; finish with vignette + grain. The accent IS the light source.
- Filmic 3D scene: PBR + Environment Light (low
dimmer) + three-point rig; camera fog (fog=exp) tinted to the background; lens chosen for the mood (long = calm, wide = drama); DOF via Depth -> Luma Blur; grade -> Tone Map acesapprox -> restrained Bloom; ember-on-teal or deep-sea palette.
- Organic feedback painting: Feedback TOP loop -- inside it a Level (
opacity 0.90-0.98 as decay) and a slight Transform (scale 1.001-1.01, rotate 0.05-0.3); inject a small moving seed shape; palette Lookup OUTSIDE the loop (grading inside compounds every frame). Bound it per performance.md: fixed resolution, decay below 1, reset wired. Slow, breathing motion.
- Particle nebula: instanced sprites or POP particles; Point Sprite MAT, additive, low per-sprite brightness; speed-mapped color through a deep-sea/neon ramp; Bloom carries the glow; slow camera orbit + handheld micro-noise; vignette + grain.
- Pastel gradient field: large soft Ramp gradients + low-contrast shaped noise, displaced slowly (Displace TOP); pastel-dawn palette; NO pure black or pure white anywhere; minutes-slow drift; slightly heavier grain (~6-10%) keeps the softness from banding; no bloom.
- Monochrome architectural: hard geometry, one cone key with
soft2d shadow, near-mono palette (optional acid accent on ONE element); highest value contrast on the subject; long lens; film grain; generous negative space.
- Data / HUD graphic: Constant MAT flats + Line MAT structure over a dark field; ONE accent color for the live/important channel; grid-aligned typography via Text TOP (Text TOP renders text into TOP chains; Text COMP is for panel UI only); motion = eased state changes, no ambient wiggle; crisp AA; no bloom, no grain.
Objective Self-Check Rubric
Use capture_top to grab the render, then answer these before calling it done:
| Check | Pass condition |
|---|
| Focal point | One clear subject; the viewer can name where the eye lands first. |
| Camera | Viewpoint, lens, and framing are deliberate; any camera motion is eased and purposeful. |
| Lighting | A key light is identifiable; the subject separates by light; ratios and colors are chosen, not defaults. |
| Contrast location | The strongest value/color/focus/size/motion contrast sits on the subject. |
| Squint test | In a Monochrome/desaturated view the frame still reads as distinct shapes. |
| Value range | Darks, mids, and lights all present; pure black/white only where intended. |
| Palette | Limited hues, controlled saturation, one dominant temperature or family. |
| Figure-ground | The subject separates from the background on at least one axis. |
| Composition | Placement, crop, negative space, and depth cues look intentional at the delivery aspect. |
| Motion | Eased, layered, de-synced; a focal motion (or focal stillness); moments of rest. |
| Temporal (animated work) | Judged AFTER settling, across multiple captures: frames differ (it really animates), the loop wrap is invisible, and the audio-silence floor still looks composed. |
| Finishing | Grade, bloom, vignette, grain, AA are restrained and improve clarity. |
| Default tells | Nothing from Kill the Default Look survives in the frame. |
| Delivery | Judged at final resolution/aspect and holds frame rate per performance.md. |
Fix-It Map
| Failing check | First knobs |
|---|
| No focal point | Reframe per Composition; key + rim light on the subject; calm the field (Contrast) |
| Flat or muddy | Level blacklevel/gamma1/contrast; separate value bands; add a rim light |
| Colors feel random | Route everything through the palette Lookup; HSV Adjust saturationmult down; pick one temperature |
| Spatially flat | Camera fog; overlap/scale layering; DOF recipe; parallax via a camera move |
| Motion feels robotic | Filter/Lag easing; layered noise; per-element phase offsets |
| Motion feels chaotic | Fewer audio/param mappings; slower background; one motion contrast |
| Looks like default TD | Work the Kill the Default Look table top to bottom |
| Polished-but-amateur finish | Re-run the Finishing chain in order at lower strengths; check AA; judge at delivery resolution |
If a render fails a check, adjust the smallest number of upstream controls needed to restore hierarchy, re-capture, re-judge.