Shokunin
f3ec88ebda
Smooth motion: in-between frames by reprojecting the real frame
...
Each in-between frame warps the newer real frame's finished image by the
in-between camera instead of drawing the scene again:
- per game frame: a snapshot of the list's finished image (taken when the
list closes; R4 flips to a buffer before drawing into it, so the live
surface is not a stable source) and a 2x native image of camera 1/z,
pixel kind and view rasterized from the recorded triangles in painter
order (world / car-or-dome / 2D-HUD-small-view);
- per in-between frame: one grid draw (a vertex per native pixel) that
unprojects world pixels with their depth, moves them by the view's
in-between camera (fg_view_affine) and samples the snapshot at full
resolution, nearest wins; cells over depth edges or non-world pixels are
left to the snapshot underneath; 2D/HUD pixels are put back; cars are
drawn again at their own in-between position.
Measured: ~0.3-0.8 ms CPU and ~0.3-2 ms GPU per in-between frame (was 2-4
ms each), A/G/B max out-of-range 0.3-3 %, worst ratio 1.1-1.5.
[video] frame_generation_redraw / PSX_FRAME_GEN_REDRAW=1 keeps the old path.
Planner/holds: dynres 'over budget' no longer stops cheap reprojected
frames; guest-late trips ignored while they are cheap; allocation and
shader compilation are kept out of the cost estimate. frame_gen JSON:
rp_ms, rp_zn, reprojected, np (why a flip planned none); debug buffer 4 KiB.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-07 17:21:43 -07:00
..
2026-10-07 13:40:57 -07:00
2026-09-30 15:57:32 +03:00
2026-06-06 23:04:23 -07:00
2026-09-30 19:26:29 -04:00
2026-10-01 09:39:57 +03:00
2026-10-07 16:01:09 -07:00
2026-10-06 23:24:47 -07:00
2026-10-06 22:46:05 -07:00
2026-09-30 22:18:36 +03:00
2026-09-30 02:43:46 -07:00
2026-10-07 17:16:54 -07:00
2026-07-13 21:52:25 -07:00
2026-10-07 17:16:54 -07:00
2026-10-07 14:24:51 -07:00
2026-10-07 14:24:51 -07:00
2026-10-07 14:24:51 -07:00
2026-10-07 14:24:51 -07:00
2026-10-07 14:39:05 -07:00
2026-10-05 23:15:48 +08:00
2026-07-19 12:11:56 -07:00
2026-09-05 12:38:01 -07:00
2026-08-11 14:34:12 -07:00
2026-07-20 13:42:06 -07:00
2026-07-29 03:18:10 -04:00
2026-09-30 19:26:29 -04:00
2026-08-31 09:16:14 +03:00
2026-07-29 03:18:10 -04:00
2026-09-30 19:26:29 -04:00
2026-10-03 23:46:25 -07:00
2026-09-26 06:43:12 -07:00
2026-07-17 23:56:58 -07:00
2026-04-28 21:29:19 -07:00
2026-08-05 18:16:16 -07:00
2026-08-11 14:34:12 -07:00
2026-09-30 12:55:56 -07:00
2026-08-30 23:24:47 +03:00
2026-04-28 21:29:19 -07:00
2026-09-11 23:39:11 -07:00
2026-09-11 23:39:11 -07:00
2026-10-05 12:57:31 -07:00
2026-08-01 02:15:34 -07:00
2026-07-20 17:34:12 -07:00
2026-09-26 06:31:33 -07:00
2026-10-05 23:33:30 -07:00
2026-10-04 10:50:02 -07:00
2026-09-14 17:26:33 +03:00
2026-08-27 21:17:20 -07:00
2026-09-28 16:54:33 -07:00
2026-08-31 09:15:39 +03:00
2026-09-03 01:23:01 +03:00
2026-10-06 09:53:08 -07:00
2026-10-04 19:27:02 -07:00
2026-10-03 23:46:26 -07:00
2026-10-07 13:40:57 -07:00
2026-10-07 14:24:51 -07:00
2026-10-07 12:44:59 -07:00
2026-09-05 19:53:03 +03:00
2026-07-29 03:18:10 -04:00
2026-09-07 16:11:22 +03:00
2026-10-04 17:59:57 -07:00
2026-08-14 19:12:37 -07:00
2026-09-28 18:30:24 -07:00
2026-10-07 17:21:43 -07:00
2026-10-07 14:24:51 -07:00
2026-08-27 13:21:17 -07:00
2026-09-28 21:02:43 -07:00
2026-09-28 21:02:43 -07:00
2026-06-09 20:09:25 -07:00
2026-08-29 04:33:56 +03:00
2026-10-01 02:56:05 -07:00
2026-08-29 04:43:30 +03:00
2026-10-07 15:38:52 -07:00
2026-10-07 15:03:51 -07:00
2026-10-07 14:24:50 -07:00
2026-10-07 14:24:50 -07:00
2026-09-06 13:36:37 +03:00
2026-10-07 15:38:52 -07:00
2026-10-07 15:03:51 -07:00
2026-09-28 20:52:23 -07:00
2026-10-03 23:46:25 -07:00
2026-10-07 16:01:09 -07:00
2026-07-14 18:35:07 -07:00
2026-10-06 18:41:04 -07:00
2026-07-14 18:34:32 -07:00
2026-10-04 19:27:02 -07:00
2026-09-08 12:52:09 -07:00
2026-10-06 23:39:41 -07:00
2026-10-04 23:18:39 -07:00
2026-07-21 15:54:07 -07:00
2026-09-14 17:26:34 +03:00
2026-10-05 13:25:10 -07:00
2026-09-14 17:26:31 +03:00
2026-08-25 01:50:55 -07:00
2026-09-29 20:57:11 -07:00
2026-10-06 22:46:05 -07:00
2026-10-06 22:50:51 -07:00
2026-10-04 17:59:57 -07:00
2026-08-25 20:37:49 -07:00
2026-09-28 20:52:23 -07:00
2026-10-06 19:25:54 -07:00
2026-09-30 22:18:36 +03:00
2026-10-03 23:46:26 -07:00
2026-10-03 23:51:13 -07:00
2026-10-01 09:39:57 +03:00
2026-09-30 02:43:46 -07:00
2026-09-29 17:55:26 -07:00
2026-07-14 20:03:02 -07:00
2026-09-24 14:38:03 -07:00
2026-08-15 12:15:23 +03:00
2026-09-14 17:26:30 +03:00
2026-09-11 16:38:34 -04:00
2026-10-05 13:49:35 -07:00
2026-09-30 12:55:56 -07:00
2026-07-29 03:18:10 -04:00
2026-09-28 23:42:17 -07:00
2026-09-28 23:42:17 -07:00
2026-09-11 23:39:47 -07:00
2026-10-05 22:52:52 -07:00
2026-10-05 13:49:35 -07:00
2026-10-02 15:44:09 -07:00
2026-10-05 19:15:50 -07:00
2026-09-29 21:57:34 -07:00
2026-08-31 19:28:10 -07:00
2026-09-25 22:27:47 -07:00
2026-09-30 12:55:56 -07:00
2026-08-25 20:37:49 -07:00
2026-10-04 10:46:04 -07:00
2026-09-13 16:50:26 -07:00
2026-09-28 23:42:17 -07:00
2026-10-05 13:11:51 -07:00
2026-09-29 20:57:11 -07:00
2026-10-03 23:46:25 -07:00
2026-10-06 19:29:33 -07:00
2026-10-05 22:52:51 -07:00
2026-10-05 20:24:54 -07:00
2026-10-07 11:06:57 -07:00
2026-10-07 11:59:16 -07:00
2026-09-28 16:26:33 -07:00
2026-09-13 21:06:58 -07:00
2026-10-05 13:49:35 -07:00
2026-09-28 16:51:21 -07:00
2026-09-28 22:05:03 -07:00
2026-10-03 23:51:14 -07:00
2026-09-30 15:58:52 +03:00
2026-09-30 14:30:38 -07:00
2026-10-05 22:52:52 -07:00
2026-10-02 19:13:57 +03:00
2026-08-11 14:34:12 -07:00
2026-10-07 11:06:57 -07:00
2026-10-05 14:12:45 -07:00
2026-10-05 14:12:45 -07:00
2026-10-07 06:59:03 -07:00
2026-10-07 11:21:55 -07:00
2026-10-05 14:17:22 -07:00
2026-08-11 23:52:31 -04:00
2026-10-02 19:13:57 +03:00
2026-10-07 11:06:57 -07:00
2026-10-05 23:15:48 +08:00
2026-10-05 13:41:02 -07:00
2026-07-20 14:13:46 -07:00
2026-09-30 02:43:45 -07:00
2026-10-05 03:23:18 -07:00
2026-09-26 08:03:57 -07:00
2026-09-30 02:43:46 -07:00
2026-09-11 23:39:47 -07:00
2026-07-19 16:19:57 -07:00
2026-07-19 12:11:56 -07:00
2026-09-26 08:03:58 -07:00
2026-09-30 02:43:46 -07:00
2026-09-30 02:43:46 -07:00
2026-07-18 08:32:42 -07:00
2026-09-28 18:03:43 -07:00
2026-09-30 14:27:29 -07:00
2026-10-05 20:24:54 -07:00
2026-08-31 19:28:10 -07:00
2026-10-06 21:52:36 -07:00
2026-10-07 11:06:57 -07:00
2026-10-05 19:15:50 -07:00
2026-10-06 19:13:37 -07:00
2026-10-05 23:33:30 -07:00
2026-10-07 14:24:50 -07:00
2026-10-07 14:24:51 -07:00
2026-10-04 10:55:58 -07:00
2026-10-07 16:01:10 -07:00
2026-08-27 16:26:44 +03:00
2026-10-07 17:16:54 -07:00
2026-10-07 17:16:54 -07:00
2026-10-05 23:44:18 -07:00
2026-10-07 17:16:54 -07:00
2026-10-07 17:16:54 -07:00
2026-07-19 14:54:30 -07:00
2026-09-26 08:03:57 -07:00
2026-10-05 19:28:13 -07:00
2026-10-04 10:50:02 -07:00
2026-09-30 00:24:07 -07:00
2026-10-05 12:57:31 -07:00
2026-10-05 19:36:34 -07:00
2026-08-25 01:54:42 -07:00
2026-09-26 15:38:21 -07:00
2026-08-11 14:34:12 -07:00
2026-08-31 09:15:51 +03:00
2026-10-02 15:49:13 -07:00
2026-09-11 23:39:47 -07:00
2026-10-07 06:59:03 -07:00
2026-10-03 23:46:25 -07:00
2026-10-06 09:53:08 -07:00
2026-10-03 23:46:25 -07:00
2026-10-06 23:03:48 -07:00
2026-10-03 23:46:25 -07:00
2026-10-07 11:21:55 -07:00
2026-10-07 14:24:51 -07:00
2026-10-05 23:44:18 -07:00
2026-07-18 08:32:42 -07:00
2026-10-06 19:29:33 -07:00
2026-09-05 21:47:40 +03:00
2026-08-25 01:39:33 -07:00
2026-10-04 19:27:02 -07:00
2026-10-02 12:21:53 -07:00
2026-09-07 17:17:30 +03:00
2026-09-13 16:33:46 -07:00
2026-10-05 13:49:35 -07:00
2026-10-05 19:25:38 -07:00
2026-10-05 19:25:38 -07:00
2026-10-05 19:25:38 -07:00
2026-09-13 16:33:46 -07:00
2026-08-11 14:34:12 -07:00
2026-08-05 18:16:16 -07:00
2026-07-14 18:56:51 -07:00
2026-08-21 23:34:25 +01:00
2026-08-26 21:43:28 +03:00
2026-09-05 12:17:16 -04:00
2026-10-03 23:51:13 -07:00
2026-10-05 22:52:52 -07:00
2026-09-30 22:14:24 +03:00
2026-09-30 22:14:24 +03:00
2026-08-25 02:11:25 -07:00
2026-10-07 13:40:57 -07:00
2026-10-06 09:53:08 -07:00
2026-07-29 03:18:10 -04:00
2026-07-21 15:54:17 -07:00
2026-07-21 15:54:29 -07:00
2026-09-06 14:16:53 +03:00
2026-07-21 15:55:06 -07:00
2026-07-21 15:55:11 -07:00
2026-08-25 11:17:44 -04:00
2026-07-21 15:54:42 -07:00
2026-10-04 05:54:05 +08:00
2026-10-07 14:24:50 -07:00
2026-09-30 23:30:28 -07:00
2026-09-24 14:42:12 -07:00
2026-09-12 14:47:47 -07:00
2026-07-29 03:18:10 -04:00
2026-10-03 23:46:25 -07:00
2026-10-03 23:51:14 -07:00
2026-09-30 21:38:17 -07:00
2026-10-06 14:17:26 -07:00
2026-09-03 01:20:41 +03:00
2026-09-07 22:40:23 -07:00
2026-09-13 19:27:03 -07:00
2026-10-02 20:42:00 -07:00
2026-10-07 12:22:25 -07:00
2026-10-05 20:20:18 -07:00
2026-10-01 11:13:30 -07:00
2026-09-19 20:02:29 -07:00
2026-09-19 19:06:42 -07:00
2026-09-20 12:01:32 -07:00
2026-10-04 10:42:45 -07:00