Acaba la migració dels std::cout/cerr a Log::*:
- core/locale, core/ui/ui_config, core/rendering/{screen,text,gif,
surface, sprite/animated_sprite, sdl3gpu/*}.
- game/{options, debug_config, editor/editor_config, levels/level_manager,
map/{map,tilemap,paint_layer}, entities/entity_manager_loadlevel}.
Severitats coherents: warns per a configs absents amb fallback,
errors per a YAML malformat o E/S fallida, infos per a estats.
Resultat:
- 0 occurrences de std::cout/std::cerr a source/.
- Cap #include <iostream> orfà (eliminat de surface.cpp).
- Output funcional idèntic al històric; AEE_LOG filtra (ex.
`AEE_LOG=warn` només mostra warnings, `AEE_LOG=*:warn,Tag:info`
combina globals i overrides).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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>
Els dos pipelines GPU (PostFX i CrtPi) tenien:
- Raw strings MSL incrustades al .cpp amb NOLINTBEGIN(readability-
identifier-naming) envoltant ~150 línies cadascun.
- Funcions createShaderMSL / createShaderSPIRV duplicades byte a byte
en cada .cpp (DUP-04), amb un comentari admetent-ho.
- El vertex shader postfx_vs escrit dues voltes, idèntic (DUP-05).
S'introdueixen:
- source/core/rendering/sdl3gpu/shader_factory.hpp amb els dos helpers
inline, per a reutilitzar des de qualsevol pipeline.
- source/core/rendering/sdl3gpu/msl/ amb un header per shader
(postfx_vert compartit, postfx_frag, crtpi_frag); cada constant es
diu kCamelCase i cau per defecte sota el project naming, així que
els blocs NOLINT desapareixen (PATCH-07).
- Suppresió a cppcheck per a sdl3gpu/msl/* (és MSL, no C++).
Els .cpp es redueixen ~190 línies cada un i queden només amb la
lògica del pipeline.
Build + smoke test de 5s sota xvfb OK (exit 124).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>