Post-Upscale Procgen Blend (1080p)
The CRT sheen that makes it look like it came off a transmitter
- final_mp4_path
- report
This is where the SIGNAL LOST look finally lands on the finished video. OTR_PostUpscaleProcgenBlend takes the upscaled, composited episode and overlays the procedural CRT render on top - the scanlines, the flicker, the green wireframe, the title - so the whole episode reads as one continuous retro broadcast instead of an upscaled video with a green mess awkwardly on top. It's an ffmpeg blend, not a model: no GPU, no download, pure math.
Two required inputs: source_mp4_path (the SilentComposite output, 1920×1080 HuMo + LTX composite) and procgen_mp4_path (the OTR_SignalLostVideo procedural render, natively 1920×1080). Audio passes through with -c:a copy - the frozen master is never touched here.
The dials that do the work
blend_mode- defaultscreen, and that default is the whole aesthetic. The canonical "bright-additive overlay": procgen colors at full intensity, upscale still visible underneath. Sixteen modes total (lighten, addition, overlay, hardlight, multiply, darken…), but you'll live in screen.blend_opacity- 1.0 is full strength (the shipped look). Drop to 0.5 for a moderate sheen.shadow_crush_threshold(18) - a subtle but crucial fix: any procgen RGB channel below 18 is forced to 0 before the blend, so the near-black noise floor of the CRT render (which can be blue-tinted, like(5,5,10)) doesn't lift your source darks toward a pink/green cast. Set 0 to see the un-crushed symptom and A/B it.green_only_overlay(true) - zeros the procgen R and B channels so only the green wireframe contributes. This one exists because blending in YUV color space turns a sparse green wireframe into color-shifting garbage; the filter pins both inputs to planar RGB, does the per-channel math, and goes back to yuv420p. Pair it withscreenoraddition- withlighten, a fully-saturated magenta source plus green wireframe collapses to white.bypass(false) - copies source to output verbatim, no blend. That's your A/B tool, and your "clean uplift for an external editor" escape hatch.
The showier option: scopes_mp4_path (the scopes_only.mp4 from OTR_SceneAwareScopes) turns this into a 3-input blend - procgen screened on, then the scene-aware scopes lightened on top. And audio_bars (default bottom) is an always-on green frequency strip along the bottom of every frame, driven by the master audio, lightened at 60%, seated below the caption safe-area. Off = byte-identical to the pre-overlay video.
Output and gotchas
Outputs: final_mp4_path (named <source_stem><out_suffix>.mp4, suffix _procgen_blended by default, in the source's directory) and report. Install is pack-level; needs ffmpeg. The gotcha is mode pairing: green_only_overlay is tuned for screen/addition, so if you flip blend modes you're on your own. And if the blend looks muddy, check shadow_crush_threshold before blaming the procgen render - a hard, true-black floor is what keeps bright blends from washing out.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| source_mp4_path | STRING | Path to the SilentComposite output mp4 (1920x1080 HuMo + LTX composite). | |
| procgen_mp4_path | STRING | Path to OTR_SignalLostVideo procgen mp4 (1920x1080 native per BUG-030 Phase B). | |
| blend_modeopt | COMBO | screen | Compositing operator for the procgen overlay onto the upscaled master (screen lightens, overlay boosts contrast, normal replaces). Works with blend_opacity; the shipped pair is the qualified look. |
| blend_opacityopt | FLOAT | 1.000–1 | Procgen overlay opacity. 0.0 = procgen invisible (equivalent to bypass). 1.0 = procgen contributes at full strength via the selected blend mode. Default 1.0 + 'screen' mode (BUG-LOCAL-096) gives the canonical bright-additive overlay -- procgen colors at full intensity, upscale still visible underneath. Drop to 0.5 for a moderate sheen instead of full strength. |
| ffmpegopt | STRING | ffmpeg | DEPRECATED and IGNORED (2026-09-04). A workflow value cannot name the binary this pack runs -- it arrives over an unauthenticated /prompt request. Set the OTR_FFMPEG environment variable to pin a build. |
| bypassopt | BOOLEAN | false | Skip the blend entirely and copy source -> output verbatim. Useful for A/B comparison vs the procgen blend, or when procgen visual is unwanted (clean uplift for an external editor). |
| out_suffixopt | STRING | _procgen_blended | Filename suffix for the blended output. Final filename: ``<source_stem><out_suffix>.mp4`` placed in the same dir as ``source_mp4_path``. |
| shadow_crush_thresholdopt | INT | 180–50 | BUG-LOCAL-103: pre-blend shadow crush. Any procgen RGB channel value below this threshold is forced to 0 BEFORE the blend, normalizing near-black noise (e.g. (5,5,10) blue-tinted procgen black) to true #000000 so brighter blends (lighten/screen/addition) don't lift source darks toward the procgen tint. Default 18 covers a (5-10) noise floor with margin while preserving real motion content (procgen highlights up to ~95). 0 disables -- use that to verify the un-crushed pink/cast symptom or to A/B test a procgen render with hardened prompt that already produces true black. |
| green_only_overlayopt | BOOLEAN | true | BUG-LOCAL-104/105/106: when True, zero the procgen R and B channels (colorchannelmixer) BEFORE the blend so only the procgen G channel ever contributes. Filter chain also pins both inputs to gbrp planar RGB before blend and back to yuv420p after, so the per-channel math runs in RGB instead of YUV (where 'lighten' on Y/U/V creates color-shifting garbage that swallows a 1%-sparse green wireframe). Source R/B pass through untouched (no color lift); source G gets boosted only where the procgen has green wireframe pixels. Pair with blend_mode='screen' or 'addition' -- 'lighten' will turn the wireframe pure white over fully-saturated magenta source pixels because max(255,0,255) vs (0,255,0) collapses to (255,255,255). |
| scopes_mp4_pathopt | STRING | Optional path to OTR_SceneAwareScopes' scopes_only.mp4. Present -> procgen is screened on, then the scene-aware scopes are lightened on top (3-input gbrp blend). Empty -> the standard single-procgen blend (unchanged). | |
| audio_barsopt | COMBO | bottom | ALWAYS-ON bottom audio-reactive green bars overlay, DEFAULT ON. 'bottom' paints a green frequency strip along the bottom of EVERY frame (landscape AND portrait), driven by the master audio, lighten-blended at 60%, seated above the caption safe-area so captions stay ON TOP -- decoupled from the scene-aware floor so it shows no matter what clip is above/below. 'off' = byte-identical video to the pre-overlay path. Audio is never touched (byte-identical). |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| final_mp4_path | STRING | — |
| report | STRING | — |