From 4bb88d572825c5ea86816c3016c21cda2d02b6bb Mon Sep 17 00:00:00 2001 From: Gajo Petrovic Date: Wed, 12 Aug 2026 00:57:31 +0900 Subject: [PATCH] Grass and shaders now respect `Spring.SetSunDirection` calls Fix spSetSunDirection not notifying lighting consumers, leaving rendered terrain stale until another lighting update. Fix grass not respecting spSetSunDirection at all. --- rts/Lua/LuaUnsyncedCtrl.cpp | 2 ++ rts/Rendering/Env/GrassDrawer.cpp | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rts/Lua/LuaUnsyncedCtrl.cpp b/rts/Lua/LuaUnsyncedCtrl.cpp index d140eab26f4..1ddcb9e201b 100644 --- a/rts/Lua/LuaUnsyncedCtrl.cpp +++ b/rts/Lua/LuaUnsyncedCtrl.cpp @@ -4201,6 +4201,8 @@ int LuaUnsyncedCtrl::SetSunDirection(lua_State* L) auto dir = float3(luaL_checkfloat(L, 1), luaL_checkfloat(L, 2), luaL_checkfloat(L, 3)); auto intensity = luaL_optfloat(L, 4, 1.0f); // seems broken atm, only toggles shadows off when set to 0 ISky::GetSky()->GetLight()->SetLightDir(float4(dir.SafeNormalize(), intensity)); + sunLighting->SetUpdated(); + eventHandler.SunChanged(); return 0; } diff --git a/rts/Rendering/Env/GrassDrawer.cpp b/rts/Rendering/Env/GrassDrawer.cpp index c667db7452a..b286943b5de 100644 --- a/rts/Rendering/Env/GrassDrawer.cpp +++ b/rts/Rendering/Env/GrassDrawer.cpp @@ -373,7 +373,7 @@ void CGrassDrawer::EnableShader(const GrassShaderProgram type) { grassShader->SetUniform3v("ambientLightColor", &sunLighting->modelAmbientColor.x); grassShader->SetUniform3v("diffuseLightColor", &sunLighting->modelDiffuseColor.x); grassShader->SetUniform3v("specularLightColor", &sunLighting->modelSpecularColor.x); - grassShader->SetUniform3v("sunDir", &mapInfo->light.sunDir.x); + grassShader->SetUniform3v("sunDir", &ISky::GetSky()->GetLight()->GetLightDir().x); } @@ -1062,5 +1062,3 @@ void CGrassDrawer::UnsyncedHeightMapUpdate(const SRectangle& rect) } } } - -