Shokunin
74dadc6004
GL: one post-effect pipeline; bloom and FXAA as built-in chains, user chains via [video] post_shader
...
Post effects now run as chains of full-screen fragment passes on one
executor (gl_postfx.inc), as asked in review. A chain is a small .pfx preset
(postfx_chain.c, GL-free): passes with a shader (a file next to the preset or
builtin:<name>), inputs (source, the optional primitive-derived mask,
previous or a named earlier pass), a scale, format, filter and uniforms.
The executor owns target allocation and lifetime, program build/cache,
uniform binding (u_rcp, u_size, u_org) and GL state save/restore.
Stages, in order, each from a fresh copy of the image: the built-in "bloom"
chain ([video] bloom), a user chain ([video] post_shader / PSX_POST_SHADER,
elective, off by default), and the built-in "fxaa"/"fxaa_hq" chain
([video] antialiasing_mode). FXAA folds in as a one-pass chain and its
output is byte-identical to the former fixed pass; it still runs on real
frames only. Generated (Smooth motion) frames run bloom and the user chain.
The "may glow" mask is an optional pipeline input: draws keep stencil bit 1
only while an active chain reads `mask`, and the window-sized mask texture is
built once per present for the chains that use it.
Tests: postfx_chain_test (format, built-ins, errors, file import, no GL);
gl_bloom_test gains an imported two-pass chain (byte-exact invert), the mask
input (HUD unlit, 3D lit), a bad preset, a pass that does not compile, and GL
state restored with bloom + a mask chain + FXAA on, all on the caller thread
and the render thread. docs/POST_EFFECTS.md documents the format.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 02:15:46 -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-10 20:49:35 -07:00
2026-10-10 20:49:35 -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 21:41:39 -07:00
2026-07-13 21:52:25 -07:00
2026-10-07 16:52:26 -07:00
2026-10-10 20:49:35 -07:00
2026-10-08 02:39:42 -07:00
2026-10-07 14:24:51 -07:00
2026-10-08 14:01:07 -07:00
2026-10-07 14:24:51 -07:00
2026-10-13 00:05:10 -07:00
2026-10-05 23:15:48 +08:00
2026-07-19 12:11:56 -07:00
2026-10-07 19:18:52 -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-10 20:49:35 -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-10 12:55:54 -07:00
2026-10-08 11:16:22 -07:00
2026-10-07 12:44:59 -07:00
2026-10-06 22:18:08 -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-08 11:16:22 -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-10-09 23:55:29 -07:00
2026-10-13 02:15:46 -07:00
2026-08-29 04:43:30 +03:00
2026-10-10 12:56:57 -07:00
2026-10-10 12:56:57 -07:00
2026-10-10 12:56:57 -07:00
2026-10-07 14:24:50 -07:00
2026-10-10 12:56:57 -07:00
2026-10-13 01:22:15 -07:00
2026-10-10 20:49:35 -07:00
2026-09-06 13:36:37 +03:00
2026-10-10 12:56:57 -07:00
2026-10-11 23:01:52 -07:00
2026-09-28 20:52:23 -07:00
2026-10-10 20:49:35 -07:00
2026-10-08 14:01:07 -07:00
2026-10-09 19:17:27 -07:00
2026-10-10 20:49:35 -07:00
2026-07-14 18:35:07 -07:00
2026-10-09 04:33:12 -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-06 18:30:50 -07:00
2026-10-08 16:58:05 -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-10 00:53:39 -07:00
2026-10-08 23:25:25 -07:00
2026-10-08 15:39:01 -07:00
2026-08-25 20:37:49 -07:00
2026-10-08 02:40:17 -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-10-08 16:36:24 -07: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-13 00:02:09 -07:00
2026-10-11 16:16:33 -04:00
2026-10-10 10:37:31 -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-10-08 05:49:27 -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-10-08 21:33:46 -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-07 16:19:50 -07:00
2026-10-09 04:33:12 -07:00
2026-10-06 19:29:33 -07:00
2026-10-07 22:47:55 -07:00
2026-10-05 20:24:54 -07:00
2026-10-07 11:06:57 -07:00
2026-10-10 20:49:35 -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-10 00:48:17 -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-10-09 00:37:27 -07:00
2026-08-11 14:34:12 -07:00
2026-10-10 10:53:54 -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-09 17:31:47 -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-07 18:32:54 -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-10-06 20:16:43 -07:00
2026-10-06 20:16: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-10 00:48:22 -07:00
2026-10-05 19:15:50 -07:00
2026-10-07 18:06:07 -07:00
2026-10-10 20:49:35 -07:00
2026-10-13 02:15:46 -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 21:41:34 -07:00
2026-08-27 16:26:44 +03:00
2026-10-07 21:41:39 -07:00
2026-10-07 21:41:39 -07:00
2026-10-05 23:44:18 -07:00
2026-10-07 21:41:39 -07:00
2026-10-07 21:41:39 -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-06 20:00:55 -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-11 22:38:53 -07:00
2026-09-11 23:39:47 -07:00
2026-10-10 20:49:35 -07:00
2026-10-09 04:33:12 -07:00
2026-10-06 19:19:09 -07:00
2026-10-07 18:20:57 -07:00
2026-10-07 10:27:26 -07:00
2026-10-08 05:40:53 -07:00
2026-10-03 23:46:25 -07:00
2026-10-10 20:49:35 -07:00
2026-10-07 14:24:51 -07:00
2026-10-07 19:42:21 -07:00
2026-10-05 23:44:18 -07:00
2026-07-18 08:32:42 -07:00
2026-10-12 14:21:53 -07:00
2026-10-08 14:30:44 -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-10-09 12:49:32 -07:00
2026-07-14 18:56:51 -07:00
2026-10-09 12:49:32 -07:00
2026-08-21 23:34:25 +01:00
2026-10-10 22:15:55 -07: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-09 04:45:12 -07:00
2026-10-13 00:06:00 -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-07 18:20:59 -07:00
2026-10-07 17:46:17 -07:00
2026-10-07 18:21:00 -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