summaryrefslogtreecommitdiff
path: root/indra/newview/lllegacyatmospherics.h
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2019-08-12 14:25:35 -0700
committerGraham Linden <graham@lindenlab.com>2019-08-12 14:25:35 -0700
commit5937a4222473131d0cec4238fc234646e9aba91e (patch)
tree8abbf7f5c47ed744da42fad293dd09234538e7c2 /indra/newview/lllegacyatmospherics.h
parent41c7523e08aab7f2bf4a040ac1c1c8a1d24babed (diff)
SL-10566, SL-10677
Make sky updates only occur if the input atmospherics values have actually changed (perf optimization). Make water rendering use specular color for coloring spec.
Diffstat (limited to 'indra/newview/lllegacyatmospherics.h')
-rw-r--r--indra/newview/lllegacyatmospherics.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/indra/newview/lllegacyatmospherics.h b/indra/newview/lllegacyatmospherics.h
index e304ac3043..95700227f9 100644
--- a/indra/newview/lllegacyatmospherics.h
+++ b/indra/newview/lllegacyatmospherics.h
@@ -206,6 +206,8 @@ public:
{
}
+ LL_FORCE_INLINE friend bool operator==(const AtmosphericsVars& a, const AtmosphericsVars& b);
+
LLColor3 hazeColor;
LLColor3 hazeColorBelowCloud;
LLColor3 cloudColorSun;
@@ -231,6 +233,115 @@ public:
LLColor3 total_density;
};
+bool operator==(const AtmosphericsVars& a, const AtmosphericsVars& b)
+{
+ if (a.hazeColor != b.hazeColor)
+ {
+ return false;
+ }
+
+ if (a.hazeColorBelowCloud != b.hazeColorBelowCloud)
+ {
+ return false;
+ }
+
+ if (a.cloudColorSun != b.cloudColorSun)
+ {
+ return false;
+ }
+
+ if (a.cloudColorAmbient != b.cloudColorAmbient)
+ {
+ return false;
+ }
+
+ if (a.cloudDensity != b.cloudDensity)
+ {
+ return false;
+ }
+
+ if (a.density_multiplier != b.density_multiplier)
+ {
+ return false;
+ }
+
+ if (a.haze_horizon != b.haze_horizon)
+ {
+ return false;
+ }
+
+ if (a.haze_density != b.haze_density)
+ {
+ return false;
+ }
+
+ if (a.blue_horizon != b.blue_horizon)
+ {
+ return false;
+ }
+
+ if (a.blue_density != b.blue_density)
+ {
+ return false;
+ }
+
+ if (a.dome_offset != b.dome_offset)
+ {
+ return false;
+ }
+
+ if (a.dome_radius != b.dome_radius)
+ {
+ return false;
+ }
+
+ if (a.cloud_shadow != b.cloud_shadow)
+ {
+ return false;
+ }
+
+ if (a.glow != b.glow)
+ {
+ return false;
+ }
+
+ if (a.ambient != b.ambient)
+ {
+ return false;
+ }
+
+ if (a.sunlight != b.sunlight)
+ {
+ return false;
+ }
+
+ if (a.sun_norm != b.sun_norm)
+ {
+ return false;
+ }
+
+ if (a.gamma != b.gamma)
+ {
+ return false;
+ }
+
+ if (a.max_y != b.max_y)
+ {
+ return false;
+ }
+
+ if (a.distance_multiplier != b.distance_multiplier)
+ {
+ return false;
+ }
+
+ // light_atten, light_transmittance, total_density
+ // are ignored as they always change when the values above do
+ // they're just shared calc across the sky map generation to save cycles
+
+ return true;
+}
+
class LLAtmospherics
{
public: