From 086da3d6f8be0fd1e35fc7fc4438d832187c0b5e Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Wed, 12 Apr 2023 09:55:00 -0500
Subject: [PATCH] DRTVWR-559 Make cloud pattern deterministic when cloud scroll
 is zero.

---
 indra/newview/lldrawpoolwlsky.cpp |  5 +++++
 indra/newview/llenvironment.cpp   | 12 ++++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index 820073b3e0a..05ee328e432 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -265,6 +265,11 @@ void LLDrawPoolWLSky::renderSkyCloudsDeferred(const LLVector3& camPosLocal, F32
         F32 cloud_variance = psky ? psky->getCloudVariance() : 0.0f;
         F32 blend_factor   = psky ? psky->getBlendFactor() : 0.0f;
 
+        if (psky->getCloudScrollRate().isExactlyZero())
+        {
+            blend_factor = 0.f;
+        }
+
         // if we even have sun disc textures to work with...
         if (cloud_noise || cloud_noise_next)
         {
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 9fe8b000711..51e5aae6de1 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -1687,8 +1687,16 @@ void LLEnvironment::updateCloudScroll()
     
     if (mCurrentEnvironment->getSky() && !mCloudScrollPaused)
     {
-        LLVector2 cloud_delta = static_cast<F32>(delta_t)* (mCurrentEnvironment->getSky()->getCloudScrollRate()) / 100.0;
-        mCloudScrollDelta += cloud_delta;
+        LLVector2 rate = mCurrentEnvironment->getSky()->getCloudScrollRate();
+        if (rate.isExactlyZero())
+        {
+            mCloudScrollDelta.setZero();
+        }
+        else
+        {
+            LLVector2 cloud_delta = static_cast<F32>(delta_t) * (mCurrentEnvironment->getSky()->getCloudScrollRate()) / 100.0;
+            mCloudScrollDelta += cloud_delta;
+        }
     }
 
 }
-- 
GitLab