feat: add vse-gamma-cross example witnessing the blend-curve closed form#90
Merged
Conversation
AI-generated sequencer code assumes GAMMA_CROSS is the naive linear mix; it blends in a gamma-0.5 space and the mid dips 0.115 below the sRGB lerp. Per-frame sample renders pin the closed form ((1-t)*sqrt(A)+t*sqrt(B))^2 with t=(frame-start)/duration — never 1 inside the effect — on both versions. Documents the AgX-default sampling trap that poisons pixel witnesses and the orphan-delete of effects whose inputs are removed first. Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The GAMMA_CROSS blend-curve witness from the ROADMAP pool (follow-up to
vse-cut-list): tiny per-frame renders across a crimson→teal cross, asserted against the fade's actual math per frame. AI-generated sequencer code assumes the cross is the naive lerp — it is not.Contract witnessed
out = ((1-t)·√A + t·√B)². Mid-cross from crimson(0.85, 0.10, 0.22)and teal(0.06, 0.75, 0.80)is(0.341, 0.349, 0.463)— 0.115 darker on red than the sRGB lerp(0.455, 0.425, 0.510). Every sample asserted within 5e-3 (2× the 8-bit quantization step + fit residual; measured 2.93e-3), mid lerp deviation asserted material (≥0.05).t = (frame − start) / duration, never 1 inside the effect — the last frame blends at(duration−1)/duration. Endpoint-inclusive is off by a frame-step.view_transform = 'Standard'— factory-default AgX tone-maps samples and poisons the fit (measured 0.146 on red during authoring). Also caught: deleting a consumed input strip orphans-and-deletes its effect (Strip 'GC' not in scene) — remove effects first.Version witness: blend math identical on 4.5.11 and 5.1.2 (samples match to the quantization step); creation contract from
vse-cut-listre-gated (strips,length=vsframe_end=).Falsification evidence (temporary breaks, restored after measurement):
GC inputs are not T1 -> T2Contact-sheet gate: vse-gamma-cross-contact-sheet.webp — verdicts: stage darkness ✓, wedge warmth ✓, subject fill ✓, saturation ✓ (most color-varied of the set), thumbnail legibility ✓ (fade row + framed contrast panel). Mean luminance 137.5 vs calibration 139.4 / 100.1 / 143.4 — mid-range.
Proven by live run vs inspection:
.scratch/blender-5.1.2-windows-x64/blender.exe(Blender 5.1.2, hash ec6e62d40fa9) and.scratch/blender-4.5.11-windows-x64/blender.exe(Blender 4.5.11 LTS, hash 4db51e9d1e1e) — identical values (samples=8 q_err=2.93e-3 lerp_mid_dev=0.115). Render exit 0 on both binaries (EEVEE), pixels iterated (5 drafts: teal-wash timeline bug, caption occlusions, clipping). All probes live.Test plan
29 examples)examples/vse-gamma-cross/vse_gamma_cross.py --.scratch/blender-5.1.2-windows-x64/blender.exe(5.1.2),.scratch/blender-4.5.11-windows-x64/blender.exe(4.5.11 LTS)Integration: example dir + README, gallery.json entry, plugin manifest, smoke step, top-level README ("Mesh, curves & text" category now 9, beside vse-cut-list; counts 28→29), generated pages read character-by-character (alt and callout full), ROADMAP entry shipped-marked.
🤖 Generated with Kimi Code