mirror of
https://github.com/simplysanatori/KartFrame.git
synced 2026-10-17 11:01:37 +02:00
Second headset session: images doubled on head motion although every rate was clean. - KARTFRAME_FRAME_STAMP=1 (tests): the Vulkan bridge writes the display time an eye set was located for and the eye into a corner block of each eye image; the mock (MOCK_XR_STAMP) reads it back at every release and compares it with the locate of the poses each projection layer submits. Pipelined and inline, with and without prediction jitter: 10064-14318 eye images per run, all rendered for the locate of their submitted poses. The image/pose pairing is not the cause. - A layer is ended with the display time its poses were located for (not this cycle's prediction, which on SteamVR need not be one period after the last), keeping display times increasing; repeats keep the cycle's time. KARTFRAME_END_TIME=cycle restores the old behaviour. Mock with MOCK_XR_PREDICT_JITTER=2: before 0 of 7155 fresh layers carried their poses' time, after 7157 of 7159. New log line every 10 s: 'vr display times' (prediction step error, display lead, sets shown for another time than their cycle's); the eye fields of view are logged once. - VR interpolation never interpolated with pipelined pacing: a set's display time lies 2-3 refreshes after the newest game frame's boundary, so the weight was clamped to 1 for 98 % of race sets (mock: between 2-54 of ~1180 per 10 s) and each game frame showed on two refreshes: 60 Hz scenery on a 120 Hz display, moving things doubled. stereo::SceneClock samples the scene at the display time minus a learnt delay (running mean of display - boundary, minus half an interval): mock race now 80-87 % of sets between two frames. KARTFRAME_SCENE_CLOCK=0 restores the old rule. New aurora line 'VR interpolation weights (10 s)'. - xrmock: MOCK_XR_STAMP, MOCK_XR_PREDICT_JITTER, increasing display time check, asymmetric Frame-like FOV by default (MOCK_XR_FOV), MOCK_XR_HANDS, scripted presses (MOCK_XR_PRESS). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>