Shader CRT-Pi alternatiu en pipeline separat; selecció via config + presets (v0.6.0)

This commit is contained in:
JailDesigner committed 2026-04-18 23:16:17 +02:00
1 parent 26b4d9e610
commit ce5bec1b34
16 files changed
+11205 -8

No files matched your search

+28
View File
@@ -7,6 +7,10 @@
namespace Rendering {
// Shader de post-procés actiu. El backend escull el pipeline corresponent.
enum class ShaderType : std::uint8_t { POSTFX,
CRTPI };
// Paràmetres d'intensitat dels efectes PostFX. Amb tot a 0 el shader
// actua com un passthrough. Els presets els omplen en fases futures.
struct PostFXParams {
@@ -20,6 +24,24 @@ namespace Rendering {
float flicker{0.0F};
};
// Paràmetres del shader CRT-Pi (algoritme de scanlines amb pesos gaussians).
struct CrtPiParams {
float scanline_weight{6.0F};
float scanline_gap_brightness{0.12F};
float bloom_factor{3.5F};
float input_gamma{2.4F};
float output_gamma{2.2F};
float mask_brightness{0.80F};
float curvature_x{0.05F};
float curvature_y{0.10F};
int mask_type{2}; // 0=cap, 1=verd/magenta, 2=RGB fòsfor
bool enable_scanlines{true};
bool enable_multisample{true};
bool enable_gamma{true};
bool enable_curvature{false};
bool enable_sharper{false};
};
// Interfície abstracta per a backends de renderitzat per GPU.
// Per ara, l'única implementació és SDL3GPUShader. Un backend
// alternatiu (p.ex. OpenGL o dummy) podria afegir-se més endavant.
@@ -47,6 +69,12 @@ namespace Rendering {
// Actualitza els uniforms de PostFX per al pròxim render().
virtual void setPostFXParams(const PostFXParams& params) = 0;
// Selecciona quin shader aplica a la pròxima crida a render().
virtual void setActiveShader(ShaderType type) = 0;
// Actualitza els uniforms del shader CRT-Pi per al pròxim render().
virtual void setCrtPiParams(const CrtPiParams& params) = 0;
// Canvia el mode de presentació (VSYNC/IMMEDIATE/MAILBOX) en calent.
virtual void setVSync(bool vsync) = 0;