fix: Correctly update shadows on RenderShadowResolutionScale change

Shadows were not updating correctly when the RenderShadowResolutionScale setting was changed in-session, leading to broken shadows.

This commit changes the signal listener for "RenderShadowResolutionScale" in llviewercontrol.cpp from `handleShadowsResized` to `handleSetShaderChanged`.

`handleSetShaderChanged` ensures a full shader update, which is necessary for this setting to take effect immediately, similar to other render settings like RenderDeferredSSAO.

This fix ensures shadows update correctly when the resolution scale is changed without requiring a viewer restart.
master
William Weaver 2025-03-02 20:51:14 +03:00
parent aed5b4402a
commit f2962eb522
1 changed files with 4 additions and 1 deletions

View File

@ -1286,7 +1286,10 @@ void settings_setup_listeners()
setting_setup_signal_listener(gSavedSettings, "RenderSpecularResY", handleLUTBufferChanged);
setting_setup_signal_listener(gSavedSettings, "RenderSpecularExponent", handleLUTBufferChanged);
setting_setup_signal_listener(gSavedSettings, "RenderAnisotropic", handleAnisotropicChanged);
setting_setup_signal_listener(gSavedSettings, "RenderShadowResolutionScale", handleShadowsResized);
// <FS:WW> Ensure shader update on shadow resolution scale change for correct shadow rendering.
// setting_setup_signal_listener(gSavedSettings, "RenderShadowResolutionScale", handleShadowsResized);
setting_setup_signal_listener(gSavedSettings, "RenderShadowResolutionScale", handleSetShaderChanged);
// </FS>
setting_setup_signal_listener(gSavedSettings, "RenderGlow", handleReleaseGLBufferChanged);
setting_setup_signal_listener(gSavedSettings, "RenderGlow", handleSetShaderChanged);
setting_setup_signal_listener(gSavedSettings, "RenderGlowResolutionPow", handleReleaseGLBufferChanged);