refactor(core/rendering): unificar defaults de CRT-Pi (DUP-07)

Els defaults del shader CRT-Pi es duplicaven entre CrtPiParams
(shader_backend.hpp) i CrtPiUniforms (crtpi_pipeline.hpp). Ara
CrtPiUniforms es value-initializa a zeros i CrtPiPipeline::init(),
un cop el pipeline està creat, aplica setParams(CrtPiParams{}) per
a fixar els defaults canònics abans del primer render. Així queda
una sola font de veritat (els defaults del struct CrtPiParams al
interface ShaderBackend).

Build + smoke 5s xvfb OK (exit 124).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
JailDesignerandClaude Opus 4.7 committed 2026-04-20 09:59:30 +02:00
1 parent 2350f4060f
commit e1e8bc11a5
3 files changed
+10 -20

No files matched your search

+3 -2
View File
@@ -36,7 +36,7 @@ Los IDs se mantienen estables una vez asignados. Cada entrada apunta al(los) fic
| DUP-04 | `sdl3gpu_shader.cpp:165-201` + `crtpi_pipeline.cpp:165-202` | `createShaderMSL/SPIRV` duplicados | Importante | DONE | `sdl3gpu/shader_factory.hpp` |
| DUP-05 | `sdl3gpu_shader.cpp:18-35` + `crtpi_pipeline.cpp:17-34` | vertex shader MSL duplicado | Menor | DONE | `sdl3gpu/msl/postfx_vert.msl.h` compartit |
| DUP-06 | `surface.cpp:14-43` | constructor Surface abre y parsea GIF 2 veces | Importante | DONE | buffer carregat una volta, pixels+palette del mateix |
| DUP-07 | `crtpi_pipeline.hpp:70-87` + `shader_backend.hpp:30-45` + `crtpi_pipeline.cpp:45-62` | defaults CRT-Pi triples | Importante | PENDING | single source of truth |
| DUP-07 | `crtpi_pipeline.hpp:70-87` + `shader_backend.hpp:30-45` + `crtpi_pipeline.cpp:45-62` | defaults CRT-Pi triples | Importante | DONE | `CrtPiUniforms{}` value-init; init() aplica `CrtPiParams{}` com a única font |
## 2. Hardcoding
@@ -134,4 +134,5 @@ Los IDs se mantienen estables una vez asignados. Cada entrada apunta al(los) fic
- `be94a43` — DUP-01 + DUP-06 + HC-03 + HC-10 + PATCH-05: neteja parser GIF (extension single-skip, constants nominals LZW/GCT, signatura sense args morts, un sol parse per construcció de `Surface`)
- `8b413af` — HC-02: `Rendering::OPAQUE_ALPHA` a `canvas.hpp` reemplaça `0xFF000000U` repetit
- `da66a7c` — INC-06 + INC-07: eliminats assignaments redundants `Sprite::pos_` a `MovingSprite`; designated initializer uniforme
- `<pendent>` — HC-08: constants nominals a l'MSL de CRT-Pi amb explicació del 768/3
- `2350f40` — HC-08: constants nominals a l'MSL de CRT-Pi amb explicació del 768/3
- `<pendent>` — DUP-07: `CrtPiParams{}` com a única font de veritat dels defaults de CRT-Pi
@@ -60,6 +60,10 @@ namespace Rendering {
std::cerr << "CrtPiPipeline: creació del pipeline ha fallat: " << SDL_GetError() << '\n';
return false;
}
// Fixem els defaults canònics abans del primer render; si Screen
// crida setParams més tard els sobreescriurà.
setParams(CrtPiParams{});
return true;
}
@@ -67,24 +67,9 @@ namespace Rendering {
SDL_GPUDevice* device_{nullptr};
SDL_GPUGraphicsPipeline* pipeline_{nullptr};
CrtPiUniforms uniforms_{
.scanline_weight = 6.0F,
.scanline_gap_brightness = 0.12F,
.bloom_factor = 3.5F,
.input_gamma = 2.4F,
.output_gamma = 2.2F,
.mask_brightness = 0.80F,
.curvature_x = 0.05F,
.curvature_y = 0.10F,
.mask_type = 2,
.enable_scanlines = 1,
.enable_multisample = 1,
.enable_gamma = 1,
.enable_curvature = 0,
.enable_sharper = 0,
.texture_width = 0.0F,
.texture_height = 0.0F,
};
// Inicialitzat amb value-init; init() el sobreescriu aplicant el
// CrtPiParams{} (defaults canònics, una sola font de veritat).
CrtPiUniforms uniforms_{};
};
} // namespace Rendering