From 3812b8cb7fc72fcc7786081938cbc11c3114eb50 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Wed, 6 Mar 2024 16:18:42 -0500
Subject: [PATCH] Add global light intensity slider to lightbox

---
 .../newview/app_settings/settings_alchemy.xml | 11 ++++++
 indra/newview/pipeline.cpp                    | 10 ++++++
 .../xui/en/floater_lightbox_settings.xml      | 35 +++++++++++++++++++
 3 files changed, 56 insertions(+)

diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index 0f91ba8e0a5..85f657b2989 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -332,6 +332,17 @@
 			<key>Value</key>
 			<integer>1</integer>
 		</map>
+		<key>AlchemyGlobalLightScale</key>
+		<map>
+			<key>Comment</key>
+			<string>Curve White Point</string>
+			<key>Persist</key>
+			<integer>0</integer>
+			<key>Type</key>
+			<string>F32</string>
+			<key>Value</key>
+			<real>1.0</real>
+		</map>
 		<key>AlchemyHudTextFadeDistance</key>
 		<map>
 			<key>Comment</key>
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 0a5b657633a..749cba775e3 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -5555,6 +5555,11 @@ void LLPipeline::setupHWLights()
     { //darken local lights when probe ambiance is above 1
         light_scale = mReflectionMapManager.mLightScale;
     }
+	else
+	{
+		static LLCachedControl<F32> alchemy_light_scale(gSavedSettings, "AlchemyGlobalLightScale", 1.f);
+		light_scale = alchemy_light_scale;
+	}
 
 
     LLEnvironment& environment = LLEnvironment::instance();
@@ -7873,6 +7878,11 @@ void LLPipeline::renderDeferredLighting()
     { //darken local lights when probe ambiance is above 1
         light_scale = mReflectionMapManager.mLightScale;
     }
+	else
+	{
+		static LLCachedControl<F32> alchemy_light_scale(gSavedSettings, "AlchemyGlobalLightScale", 1.f);
+		light_scale = alchemy_light_scale;
+	}
 
     LLRenderTarget *screen_target         = &mRT->screen;
     LLRenderTarget* deferred_light_target = &mRT->deferredLight;
diff --git a/indra/newview/skins/default/xui/en/floater_lightbox_settings.xml b/indra/newview/skins/default/xui/en/floater_lightbox_settings.xml
index 03b6d7546a6..2b08624be32 100644
--- a/indra/newview/skins/default/xui/en/floater_lightbox_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_lightbox_settings.xml
@@ -1118,6 +1118,41 @@
 				increment="8"
 				name="local_light_spinner"
 				control_name="RenderLocalLightCount" />
+			<!--Global Light Scale-->
+			<text
+				follows="left|top"
+				height="15"
+				left="10"
+				top_pad="12"
+				width="120"
+				layout="topleft"
+				value="Light Intensity Scale:" />
+			<slider_bar
+				top_pad="-18"
+				height="20"
+				increment=".1"
+				follows="left|top|right"
+				layout="topleft"
+				max_val="10"
+				min_val="0"
+				left="130"
+				right="-55"
+				name="global_light_inten_slider_bar"
+				control_name="AlchemyGlobalLightScale" />
+			<spinner
+				top_pad="-20"
+				height="15"
+				label_width="0"
+				right="-2"
+				decimal_digits="2"
+				follows="top|right"
+				layout="topleft"
+				max_val="10"
+				min_val="0"
+				width="55"
+				increment=".1"
+				name="global_light_inten_spinner"
+				control_name="AlchemyGlobalLightScale" />
 		</panel>
 		<!--Shadows/SSAO Panel-->
 		<panel
-- 
GitLab