Files
AEmotionStudio-ComfyUI-Shad…/shaders
Æmotion StudioandClaude Opus 5 33a57ae7b2 fix: draw a clip's first frame from the same field as the rest
domain_warp chose between a 2D field and a 3D one with time as the third axis
by testing `time != 0`. core.shader_noise ramps time from 0 to 1 across a
clip, so frame 0 is the only frame whose time is exactly 0, and it alone took
the 2D path. Every video drawn with the default shader had a first frame that
came from a different function than the five, or thirty-six, after it.

With temporal coherence on, adjacent frames correlate at about 0.95. Frame 0
against frame 1 measured -0.01, which is what uncorrelated looks like.
Nudging the base time to 0.001 made it +0.95, which is what confirmed the
cause.

The choice is now made once per draw, from the latent's frame count, and
passed down as `time_axis`. A single image still takes the 2D path -- frames
== 1 -- so no image fixture moved. In a video draw only frame 0 changes;
frames 1 onward are byte-identical, checked. video_nested was re-captured.

Where `time_axis` is absent, because something called the generator directly,
the old test still applies, so nothing outside this pipeline changes
behaviour.

Also corrects the CHANGELOG's claim that domain_warp shows no frame-to-frame
correlation under temporal coherence. That number came from measuring the one
frame pair that straddled this bug. It is the most coherent of the five, not
the least: 0.96 against curl_noise's 0.96, tensor_field's 0.80, spectral's
0.68 and temporal_coherent's 0.55.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 19:34:14 -07:00
..