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>