diff --git a/data/ui.yaml b/data/ui.yaml index 1854559..3cb4cbf 100644 --- a/data/ui.yaml +++ b/data/ui.yaml @@ -77,7 +77,7 @@ notifier: line_gap: 1 margin_top: 3 border_px: 1 - slide_ms: 400 + slide_ms: 300 slide_in_curve: outCubic slide_out_curve: inCubic diff --git a/source/core/input/global_inputs.cpp b/source/core/input/global_inputs.cpp index a284510..8e2cdba 100644 --- a/source/core/input/global_inputs.cpp +++ b/source/core/input/global_inputs.cpp @@ -89,6 +89,9 @@ namespace GlobalInputs { } void onNextShader() { + // F5/F6 només tenen sentit quan els shaders estan actius. Si no, + // ignorem la pulsació en silenci — l'usuari ha de prémer F4 abans. + if (!Options::video().shader.enabled) { return; } const std::string NEW_NAME = (Options::video().shader.current_shader == "crtpi") ? "postfx" : "crtpi"; Options::setActiveShaderName(NEW_NAME); OptionsApply::reapplyShader(); @@ -98,6 +101,7 @@ namespace GlobalInputs { // Busca l'entrada actual al vector de presets i passa a la següent // (wrap-around). Si no en troba cap s'evita el canvi silenciosament. void onNextPreset() { + if (!Options::video().shader.enabled) { return; } const bool IS_CRTPI = Options::video().shader.current_shader == "crtpi"; std::string new_preset; if (IS_CRTPI) { diff --git a/source/game/options.cpp b/source/game/options.cpp index 441a6ed..1a3933f 100644 --- a/source/game/options.cpp +++ b/source/game/options.cpp @@ -808,6 +808,12 @@ namespace Options { } auto buildActiveShader() -> Rendering::ShaderType { + // Si el shader està deshabilitat, forcem POSTFX. El backend tracta + // POSTFX amb params a zero com a passthrough; CRTPI, en canvi, manté + // el seu pipeline encara amb params buits (no és passthrough), així + // que mai s'ha d'arribar al pipeline de CRTPI quan l'usuari ha apagat + // els shaders, ni des d'F4 ni des del menú de servei. + if (!g_video.shader.enabled) { return Rendering::ShaderType::POSTFX; } if (g_video.shader.current_shader == "crtpi") { return Rendering::ShaderType::CRTPI; }