interpolate_next() makes the first frame's still history and quad motions
visible to its compute reads; the quads' motions are cleared on a reset and a
scene change; the refinement scores an off-screen sample as the candidates
do; the GPU timer's optical flow sum is reset with the rest. Docs and the
example: no frame limit counts as tight, the user's own second limit is
taken in, the multiplier is a most (as many frames as the game's interval
has refreshes, less one).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DaNprJCmpBhrkpzRHVPLXM
set_generated(n) and interpolate_next(cmd, i): the interpolation at any
moment t (the previous frame at x + 2t v, the current one at x - 2(1 - t) v,
the blend weighted to the nearer frame), the first frame of a group keeping
the still history and the quads' motions; fg-test --gen N; the example and
the docs (the multiplier, its input lag, the swapchain's images).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DaNprJCmpBhrkpzRHVPLXM
RPCS3-PS5's frame generation (m74) on its own, as a template: FSR3's optical
flow (FidelityFX SDK 2.3.0, MIT, compiled with glslang) and a candidate-based
interpolation that needs no motion vectors or depth; the Vulkan host class,
the SwiftShader test harness with synthetic and real-frame tests, a present
loop example, and the docs (algorithm, integration with pacing and latency,
testing and results).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DaNprJCmpBhrkpzRHVPLXM