From aca495c8812d49a5fde80ecefbf3f609b4042bf9 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Fri, 5 Aug 2022 13:13:14 +0300
Subject: Fixed tools floater dimentions after merge

---
 indra/newview/skins/default/xui/en/floater_tools.xml       | 4 ++--
 indra/newview/skins/default/xui/en/panel_tools_texture.xml | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 3471d4b7b1..8f2acc8df4 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2,7 +2,7 @@
 <floater
  positioning="cascading"
  legacy_header_height="18"
- height="609"
+ height="651"
  layout="topleft"
  bg_opaque_image="Window_NoTitle_Foreground"
  bg_alpha_image="Window_NoTitle_Background"
@@ -820,7 +820,7 @@
     width="282"/>
     <tab_container
      follows="left|top"
-     height="426"
+     height="471"
      halign="center"
      left="0"
      name="Object Info Tabs"
diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
index c8f5a66661..326fb27915 100644
--- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -847,7 +847,7 @@
              decouple_texture_size="true" />
       <button
        left="90"
-       top="222"
+       top="227"
        height="20"
        label="Save as Material"
        label_selected="Save current face as a Material"
@@ -866,7 +866,7 @@
              label="Material UUID"
              name="materialID"
              select_on_focus="true"
-             top="380"
+             top="405"
              width="200"
              tool_tip="UUID for a material asset"
              />
-- 
cgit v1.2.3


From d048795fce3ab83989cb909fde02014f1442cc84 Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Fri, 5 Aug 2022 16:58:22 -0500
Subject: SL-17870 Nudge PBR material textures so they start downloading. (and
 add missing validation code for reflection probes network data).

---
 indra/llprimitive/llprimitive.cpp | 2 ++
 indra/newview/llviewerobject.cpp  | 9 ++++++++-
 indra/newview/pipeline.cpp        | 1 +
 3 files changed, 11 insertions(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
index 3f0059b759..8b470d235c 100644
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -1701,6 +1701,8 @@ BOOL LLNetworkData::isValid(U16 param_type, U32 size)
         return (size == 4);
     case PARAMS_RENDER_MATERIAL:
         return (size > 1);
+    case PARAMS_REFLECTION_PROBE:
+        return (size == 9);
 	}
 	
 	return FALSE;
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 753fb014c9..bdc47e0c50 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -4903,7 +4903,14 @@ void LLViewerObject::updateTEMaterialTextures(U8 te)
 
     auto fetch_texture = [](const LLUUID& id)
     {
-        return LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_ALM, LLViewerTexture::LOD_TEXTURE);
+        LLViewerFetchedTexture* img = nullptr;
+        if (id.notNull())
+        {
+            img = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_ALM, LLViewerTexture::LOD_TEXTURE);
+            img->addTextureStats(64.f * 64.f, TRUE);
+        }
+
+        return img;
     };
 
     LLGLTFMaterial* mat = getTE(te)->getGLTFMaterial();
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index b23c1fe741..017bb808c4 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -3766,6 +3766,7 @@ void LLPipeline::touchTextures(LLDrawInfo* info)
     touchTexture(info->mTexture, info->mVSize);
     touchTexture(info->mSpecularMap, info->mVSize);
     touchTexture(info->mNormalMap, info->mVSize);
+    touchTexture(info->mEmissiveMap, info->mVSize);
 }
 
 void LLPipeline::postSort(LLCamera& camera)
-- 
cgit v1.2.3


From 3e7946bbbf905418595b0632388fb3de4d673312 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Fri, 5 Aug 2022 23:36:13 +0300
Subject: SL-17888 Clamp some gltf material values

---
 indra/newview/llgltfmateriallist.cpp                           | 6 +++---
 indra/newview/skins/default/xui/en/floater_material_editor.xml | 5 ++++-
 indra/newview/skins/default/xui/en/floater_tools.xml           | 4 ++--
 3 files changed, 9 insertions(+), 6 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llgltfmateriallist.cpp b/indra/newview/llgltfmateriallist.cpp
index 7ecbc6eeac..96c29d7ed2 100644
--- a/indra/newview/llgltfmateriallist.cpp
+++ b/indra/newview/llgltfmateriallist.cpp
@@ -99,13 +99,13 @@ static void set_from_model(LLGLTFMaterial* mat, tinygltf::Model& model)
     }
 
     mat->setAlphaMode(material_in.alphaMode);
-    mat->mAlphaCutoff = material_in.alphaCutoff;
+    mat->mAlphaCutoff = llclamp((F32)material_in.alphaCutoff, 0.f, 1.f);
 
     mat->mAlbedoColor = get_color(material_in.pbrMetallicRoughness.baseColorFactor);
     mat->mEmissiveColor = get_color(material_in.emissiveFactor);
 
-    mat->mMetallicFactor = material_in.pbrMetallicRoughness.metallicFactor;
-    mat->mRoughnessFactor = material_in.pbrMetallicRoughness.roughnessFactor;
+    mat->mMetallicFactor = llclamp((F32)material_in.pbrMetallicRoughness.metallicFactor, 0.f, 1.f);
+    mat->mRoughnessFactor = llclamp((F32)material_in.pbrMetallicRoughness.roughnessFactor, 0.f, 1.f);
 
     mat->mDoubleSided = material_in.doubleSided;
 }
diff --git a/indra/newview/skins/default/xui/en/floater_material_editor.xml b/indra/newview/skins/default/xui/en/floater_material_editor.xml
index 74adc86126..0a05a4f868 100644
--- a/indra/newview/skins/default/xui/en/floater_material_editor.xml
+++ b/indra/newview/skins/default/xui/en/floater_material_editor.xml
@@ -111,6 +111,7 @@
                layout="topleft"
                left_delta="0"
                top_pad="5"
+               min_val="0"
                max_val="1"
                name="transparency"
               width="64"
@@ -169,6 +170,7 @@
                layout="topleft"
                left_delta="0"
                top_pad="5"
+               min_val="0"
                max_val="1"
                name="alpha cutoff"
               width="64"
@@ -245,6 +247,7 @@
              layout="topleft"
              left_delta="0"
              top_pad="5"
+             min_val="0"
              max_val="1"
              name="metalness factor"
             width="64"
@@ -270,7 +273,7 @@
                layout="topleft"
                left_delta="0"
                top_pad="5"
-               
+               min_val="0"
                max_val="1"
                name="roughness factor"
               width="64"
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 8f2acc8df4..4700488197 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -820,7 +820,7 @@
     width="282"/>
     <tab_container
      follows="left|top"
-     height="471"
+     height="476"
      halign="center"
      left="0"
      name="Object Info Tabs"
@@ -2749,7 +2749,7 @@ even though the user gets a free copy.
              border_visible="true"
              bevel_style="in"
              follows="left|top|right"
-             height="335"
+             height="387"
              layout="topleft"
              left="10"
              name="contents_inventory"
-- 
cgit v1.2.3


From 963566821d95d30856cd028983d929fab89f542a Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Mon, 8 Aug 2022 14:55:15 -0500
Subject: SL-17927 Keep people from shooting themselves in the foot by
 twiddling deprecated settings.

---
 indra/newview/featuretable.txt                     |  1 +
 indra/newview/llappviewer.cpp                      |  4 +-
 indra/newview/lldrawpoolbump.cpp                   |  4 ++
 indra/newview/llfloaterpreference.cpp              | 79 +---------------------
 indra/newview/llviewercontrol.cpp                  | 24 +++++--
 indra/newview/llviewermenu.cpp                     | 19 +-----
 indra/newview/llviewershadermgr.cpp                | 59 +++-------------
 indra/newview/llviewerwindow.cpp                   |  2 +-
 indra/newview/pipeline.cpp                         | 15 ++--
 indra/newview/skins/default/xui/en/menu_viewer.xml | 12 ----
 10 files changed, 47 insertions(+), 172 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 58500cc7af..ec8605aa5c 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -44,6 +44,7 @@ RenderGamma					1	0
 RenderGlowResolutionPow		1	9
 RenderGround				1	1
 RenderMaxPartCount			1	8192
+RenderObjectBump			1	1
 RenderLocalLights			1	1
 RenderReflectionDetail		1	4
 RenderTerrainDetail			1	1
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index bf67807aea..225a14dee0 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -567,8 +567,8 @@ static void settings_to_globals()
 static void settings_modify()
 {
     LLPipeline::sRenderTransparentWater = gSavedSettings.getBOOL("RenderTransparentWater");
-    LLPipeline::sRenderBump             = gSavedSettings.getBOOL("RenderObjectBump");
-    LLPipeline::sRenderDeferred         = LLPipeline::sRenderBump && gSavedSettings.getBOOL("RenderDeferred");
+    LLPipeline::sRenderBump = TRUE; // FALSE is deprecated --  gSavedSettings.getBOOL("RenderObjectBump");
+    LLPipeline::sRenderDeferred = TRUE; // FALSE is deprecated --  LLPipeline::sRenderBump&& gSavedSettings.getBOOL("RenderDeferred");
     LLRenderTarget::sUseFBO             = LLPipeline::sRenderDeferred;
     LLVOSurfacePatch::sLODFactor        = gSavedSettings.getF32("RenderTerrainLODFactor");
     LLVOSurfacePatch::sLODFactor *= LLVOSurfacePatch::sLODFactor;  // square lod factor to get exponential range of [1,4]
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index 288ba8f536..33ac91f88b 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -682,6 +682,7 @@ void LLDrawPoolBump::endBump(U32 pass)
 
 S32 LLDrawPoolBump::getNumDeferredPasses()
 { 
+#if 0 //DEPRECATED -- RenderObjectBump should always be TRUE
 	if (gSavedSettings.getBOOL("RenderObjectBump"))
 	{
 		return 1;
@@ -690,6 +691,9 @@ S32 LLDrawPoolBump::getNumDeferredPasses()
 	{
 		return 0;
 	}
+#else 
+    return 1;
+#endif
 }
 
 void LLDrawPoolBump::renderDeferred(S32 pass)
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 20749b67b2..f1db12ddb0 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -1180,36 +1180,10 @@ void LLFloaterPreference::buildPopupLists()
 
 void LLFloaterPreference::refreshEnabledState()
 {
-	LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
-	LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
-    LLCheckBoxCtrl* ctrl_pbr = getChild<LLCheckBoxCtrl>("UsePBRShaders");
-
-	// if vertex shaders off, disable all shader related products
-	if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
-	{
-		ctrl_wind_light->setEnabled(FALSE);
-		ctrl_wind_light->setValue(FALSE);
-	}
-	else
-	{
-		ctrl_wind_light->setEnabled(TRUE);
-	}
-
-	//Deferred/SSAO/Shadows
-	BOOL bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump") && gSavedSettings.getBOOL("RenderObjectBump");
-	BOOL shaders = gSavedSettings.getBOOL("WindLightUseAtmosShaders");
-	BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
-						bumpshiny &&
-						shaders && 
-						gGLManager.mHasFramebufferObject &&
-						(ctrl_wind_light->get()) ? TRUE : FALSE;
-
-	ctrl_deferred->setEnabled(enabled);
+	LLCheckBoxCtrl* ctrl_pbr = getChild<LLCheckBoxCtrl>("UsePBRShaders");
 
     //PBR
-    BOOL deferred = gSavedSettings.getBOOL("RenderDeferred");
-    // TODO: add "RenderPBR" to LLFeatureManager
-    ctrl_pbr->setEnabled(deferred);
+    ctrl_pbr->setEnabled(TRUE);
 
 	// Cannot have floater active until caps have been received
 	getChild<LLButton>("default_creation_permissions")->setEnabled(LLStartUp::getStartupState() < STATE_STARTED ? false : true);
@@ -1321,58 +1295,11 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
 {	
 	LLComboBox* ctrl_reflections   = getChild<LLComboBox>("Reflections");
 	LLTextBox* reflections_text = getChild<LLTextBox>("ReflectionsText");
-	LLCheckBoxCtrl* ctrl_wind_light    = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
-	LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
 	LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail");
 	LLTextBox* shadows_text = getChild<LLTextBox>("RenderShadowDetailText");
 	LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
-	LLCheckBoxCtrl* ctrl_dof = getChild<LLCheckBoxCtrl>("UseDoF");
-	LLSliderCtrl* sky = getChild<LLSliderCtrl>("SkyMeshDetail");
-	LLTextBox* sky_text = getChild<LLTextBox>("SkyMeshDetailText");
-
-	// disabled windlight
-	if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
-	{
-		ctrl_wind_light->setEnabled(FALSE);
-		ctrl_wind_light->setValue(FALSE);
-
-		sky->setEnabled(FALSE);
-		sky_text->setEnabled(FALSE);
-
-		//deferred needs windlight, disable deferred
-		ctrl_shadows->setEnabled(FALSE);
-		ctrl_shadows->setValue(0);
-		shadows_text->setEnabled(FALSE);
-		
-		ctrl_ssao->setEnabled(FALSE);
-		ctrl_ssao->setValue(FALSE);
-
-		ctrl_dof->setEnabled(FALSE);
-		ctrl_dof->setValue(FALSE);
-
-		ctrl_deferred->setEnabled(FALSE);
-		ctrl_deferred->setValue(FALSE);
-	}
-
-	// disabled deferred
-	if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") ||
-		!gGLManager.mHasFramebufferObject)
-	{
-		ctrl_shadows->setEnabled(FALSE);
-		ctrl_shadows->setValue(0);
-		shadows_text->setEnabled(FALSE);
-		
-		ctrl_ssao->setEnabled(FALSE);
-		ctrl_ssao->setValue(FALSE);
-
-		ctrl_dof->setEnabled(FALSE);
-		ctrl_dof->setValue(FALSE);
-
-		ctrl_deferred->setEnabled(FALSE);
-		ctrl_deferred->setValue(FALSE);
-	}
 	
-	// disabled deferred SSAO
+    // disabled deferred SSAO
 	if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO"))
 	{
 		ctrl_ssao->setEnabled(FALSE);
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index a6f5a09722..d5f842d925 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -440,6 +440,21 @@ static bool handleRenderLocalLightsChanged(const LLSD& newvalue)
 	return true;
 }
 
+static bool handleRenderPBRChanged(const LLSD& newvalue)
+{
+    if (gPipeline.isInit())
+    {
+        LLPipeline::refreshCachedSettings();
+        gPipeline.updateRenderDeferred();
+        gPipeline.releaseGLBuffers();
+        gPipeline.createGLBuffers();
+        gPipeline.resetVertexBuffers();
+        LLViewerShaderMgr::instance()->setShaders();
+    }
+    return true;
+}
+
+#if 0 // DEPRECATED
 // NOTE: may be triggered by RenderDeferred OR RenderPBR changing, don't trust "newvalue"
 static bool handleRenderDeferredChanged(const LLSD& newvalue)
 {
@@ -477,6 +492,7 @@ static bool handleRenderBumpChanged(const LLSD& newval)
 	}
 	return true;
 }
+#endif
 
 static bool handleRenderDebugPipelineChanged(const LLSD& newvalue)
 {
@@ -663,7 +679,7 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
 	gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderGlowResolutionPow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
-	gSavedSettings.getControl("WindLightUseAtmosShaders")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
+	// DEPRECATED -- gSavedSettings.getControl("WindLightUseAtmosShaders")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderGammaFull")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderVolumeLODFactor")->getSignal()->connect(boost::bind(&handleVolumeLODChanged, _2));
 	gSavedSettings.getControl("RenderAvatarLODFactor")->getSignal()->connect(boost::bind(&handleAvatarLODChanged, _2));
@@ -679,14 +695,14 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("RenderDebugTextureBind")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
 	gSavedSettings.getControl("RenderAutoMaskAlphaDeferred")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
 	gSavedSettings.getControl("RenderAutoMaskAlphaNonDeferred")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
-	gSavedSettings.getControl("RenderObjectBump")->getSignal()->connect(boost::bind(&handleRenderBumpChanged, _2));
+	// DEPRECATED - gSavedSettings.getControl("RenderObjectBump")->getSignal()->connect(boost::bind(&handleRenderBumpChanged, _2));
 	gSavedSettings.getControl("RenderMaxVBOSize")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
     gSavedSettings.getControl("RenderVSyncEnable")->getSignal()->connect(boost::bind(&handleVSyncChanged, _2));
 	gSavedSettings.getControl("RenderDeferredNoise")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
 	gSavedSettings.getControl("RenderDebugPipeline")->getSignal()->connect(boost::bind(&handleRenderDebugPipelineChanged, _2));
 	gSavedSettings.getControl("RenderResolutionDivisor")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2));
-	gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleRenderDeferredChanged, _2));
-    gSavedSettings.getControl("RenderPBR")->getSignal()->connect(boost::bind(&handleRenderDeferredChanged, _2));
+	// DEPRECATED - gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleRenderDeferredChanged, _2));
+    gSavedSettings.getControl("RenderPBR")->getSignal()->connect(boost::bind(&handleRenderPBRChanged, _2));
 	gSavedSettings.getControl("RenderShadowDetail")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderDeferredSSAO")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderPerformanceTest")->getSignal()->connect(boost::bind(&handleRenderPerfTestChanged, _2));
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 69347ae4ce..6aa1c5fece 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2347,21 +2347,6 @@ class LLAdvancedEnableRenderDeferred: public view_listener_t
 	}
 };
 
-/////////////////////////////////////
-// Enable Deferred Rendering sub-options
-/////////////////////////////////////
-class LLAdvancedEnableRenderDeferredOptions: public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		bool new_value = gGLManager.mHasFramebufferObject && LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_WINDLIGHT) > 1 &&
-			LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_AVATAR) > 0 && gSavedSettings.getBOOL("RenderDeferred");
-		return new_value;
-	}
-};
-
-
-
 //////////////////
 // ADMIN STATUS //
 //////////////////
@@ -9354,9 +9339,7 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLAdvancedCheckWireframe(), "Advanced.CheckWireframe");
 	// Develop > Render
 	view_listener_t::addMenu(new LLAdvancedEnableObjectObjectOcclusion(), "Advanced.EnableObjectObjectOcclusion");
-	view_listener_t::addMenu(new LLAdvancedEnableRenderFBO(), "Advanced.EnableRenderFBO");
-	view_listener_t::addMenu(new LLAdvancedEnableRenderDeferred(), "Advanced.EnableRenderDeferred");
-	view_listener_t::addMenu(new LLAdvancedEnableRenderDeferredOptions(), "Advanced.EnableRenderDeferredOptions");
+	
 	view_listener_t::addMenu(new LLAdvancedToggleRandomizeFramerate(), "Advanced.ToggleRandomizeFramerate");
 	view_listener_t::addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate");
 	view_listener_t::addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame");
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index e76f0b36ee..efe23d7295 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -493,12 +493,12 @@ void LLViewerShaderMgr::setShaders()
 
     llassert((gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 10));
 
-    bool canRenderDeferred       = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred");
-    bool hasWindLightShaders     = LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders");
+    //bool canRenderDeferred = true; // DEPRECATED -- LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred");
+    //bool hasWindLightShaders = true; // DEPRECATED -- LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders");
     S32 shadow_detail            = gSavedSettings.getS32("RenderShadowDetail");
     bool pbr = gSavedSettings.getBOOL("RenderPBR");
-    bool doingWindLight          = hasWindLightShaders && gSavedSettings.getBOOL("WindLightUseAtmosShaders");
-    bool useRenderDeferred       = doingWindLight && canRenderDeferred && gSavedSettings.getBOOL("RenderDeferred");
+    bool doingWindLight = true; //DEPRECATED -- hasWindLightShaders&& gSavedSettings.getBOOL("WindLightUseAtmosShaders");
+    bool useRenderDeferred = true; //DEPRECATED -- doingWindLight&& canRenderDeferred&& gSavedSettings.getBOOL("RenderDeferred");
 
     S32 light_class = 3;
     S32 interface_class = 2;
@@ -675,67 +675,24 @@ void LLViewerShaderMgr::setShaders()
 
         if (loadShadersObject())
         { //hardware skinning is enabled and rigged attachment shaders loaded correctly
-            BOOL avatar_cloth = gSavedSettings.getBOOL("RenderAvatarCloth");
-
             // cloth is a class3 shader
-            S32 avatar_class = avatar_cloth ? 3 : 1;
+            S32 avatar_class = 1;
                 
             // Set the actual level
             mShaderLevel[SHADER_AVATAR] = avatar_class;
 
             loaded = loadShadersAvatar();
             llassert(loaded);
-
-            if (mShaderLevel[SHADER_AVATAR] != avatar_class)
-            {
-                if(llmax(mShaderLevel[SHADER_AVATAR]-1,0) >= 3)
-                {
-                    avatar_cloth = true;
-                }
-                else
-                {
-                    avatar_cloth = false;
-                }
-                gSavedSettings.setBOOL("RenderAvatarCloth", avatar_cloth);
-            }
         }
         else
         { //hardware skinning not possible, neither is deferred rendering
-            mShaderLevel[SHADER_AVATAR] = 0;
-            mShaderLevel[SHADER_DEFERRED] = 0;
-
-                gSavedSettings.setBOOL("RenderDeferred", FALSE);
-                gSavedSettings.setBOOL("RenderAvatarCloth", FALSE);
-
-            loadShadersAvatar(); // unloads
-
-            loaded = loadShadersObject();
-            llassert(loaded);
+            llassert(false); // SHOULD NOT BE POSSIBLE
         }
     }
 
-    if (!loaded)
-    { //some shader absolutely could not load, try to fall back to a simpler setting
-        if (gSavedSettings.getBOOL("WindLightUseAtmosShaders"))
-        { //disable windlight and try again
-            gSavedSettings.setBOOL("WindLightUseAtmosShaders", FALSE);
-            LL_WARNS() << "Falling back to no windlight shaders." << LL_ENDL;
-            reentrance = false;
-            setShaders();
-            return;
-        }
-    }       
-
     llassert(loaded);
-
-    if (loaded && !loadShadersDeferred())
-    { //everything else succeeded but deferred failed, disable deferred and try again
-        gSavedSettings.setBOOL("RenderDeferred", FALSE);
-        LL_WARNS() << "Falling back to no deferred shaders." << LL_ENDL;
-        reentrance = false;
-        setShaders();
-        return;
-    }
+    loaded = loaded && loadShadersDeferred();
+    llassert(loaded);
 
     if (gViewerWindow)
     {
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index e102c917ee..48ad02321b 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1912,7 +1912,7 @@ LLViewerWindow::LLViewerWindow(const Params& p)
 		gSavedSettings.getBOOL("RenderVSyncEnable"),
 		!gHeadlessClient,
 		p.ignore_pixel_depth,
-		gSavedSettings.getBOOL("RenderDeferred") ? 0 : gSavedSettings.getU32("RenderFSAASamples")); //don't use window level anti-aliasing if FBOs are enabled
+		0); //don't use window level anti-aliasing
 
 	if (NULL == mWindow)
 	{
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 06a76942c3..24296363a9 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -449,7 +449,7 @@ void LLPipeline::init()
 	gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity");
 	gOctreeMinSize = gSavedSettings.getF32("OctreeMinimumNodeSize");
 	sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD");
-	sRenderBump = gSavedSettings.getBOOL("RenderObjectBump");
+    sRenderBump = TRUE; // DEPRECATED -- gSavedSettings.getBOOL("RenderObjectBump");
 	sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips");
 	LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseStreamVBO");
 	LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO");
@@ -548,8 +548,8 @@ void LLPipeline::init()
 	connectRefreshCachedSettingsSafe("RenderAvatarMaxNonImpostors");
 	connectRefreshCachedSettingsSafe("RenderDelayVBUpdate");
 	connectRefreshCachedSettingsSafe("UseOcclusion");
-	connectRefreshCachedSettingsSafe("WindLightUseAtmosShaders");
-	connectRefreshCachedSettingsSafe("RenderDeferred");
+	// DEPRECATED -- connectRefreshCachedSettingsSafe("WindLightUseAtmosShaders");
+	// DEPRECATED -- connectRefreshCachedSettingsSafe("RenderDeferred");
     connectRefreshCachedSettingsSafe("RenderPBR");
 	connectRefreshCachedSettingsSafe("RenderDeferredSunWash");
 	connectRefreshCachedSettingsSafe("RenderFSAASamples");
@@ -1033,7 +1033,7 @@ void LLPipeline::updateRenderTransparentWater()
 //static
 void LLPipeline::updateRenderBump()
 {
-	sRenderBump = gSavedSettings.getBOOL("RenderObjectBump");
+    sRenderBump = TRUE; // DEPRECATED -- gSavedSettings.getBOOL("RenderObjectBump");
 }
 
 // static
@@ -1043,8 +1043,7 @@ void LLPipeline::updateRenderDeferred()
                       RenderDeferred &&
                       LLRenderTarget::sUseFBO &&
                       LLPipeline::sRenderBump &&
-                      WindLightUseAtmosShaders &&
-                      (bool) LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred");
+                      WindLightUseAtmosShaders;
     sRenderPBR = sRenderDeferred && gSavedSettings.getBOOL("RenderPBR");
 }
 
@@ -1065,8 +1064,8 @@ void LLPipeline::refreshCachedSettings()
 			&& gSavedSettings.getBOOL("UseOcclusion") 
 			&& gGLManager.mHasOcclusionQuery) ? 2 : 0;
 	
-	WindLightUseAtmosShaders = gSavedSettings.getBOOL("WindLightUseAtmosShaders");
-	RenderDeferred = gSavedSettings.getBOOL("RenderDeferred");
+    WindLightUseAtmosShaders = TRUE; // DEPRECATED -- gSavedSettings.getBOOL("WindLightUseAtmosShaders");
+    RenderDeferred = TRUE; // DEPRECATED -- gSavedSettings.getBOOL("RenderDeferred");
 	RenderDeferredSunWash = gSavedSettings.getF32("RenderDeferredSunWash");
 	RenderFSAASamples = gSavedSettings.getU32("RenderFSAASamples");
 	RenderResolutionDivisor = gSavedSettings.getU32("RenderResolutionDivisor");
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index d3b13bfc2a..beb5a5048d 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -3119,18 +3119,6 @@ function="World.EnvPreset"
             </menu_item_check>
           <menu_item_separator />
 
-          <menu_item_check
-                       label="Advanced Lighting Model"
-                       name="Advanced Lighting Model">
-            <menu_item_check.on_check
-             function="CheckControl"
-             parameter="RenderDeferred" />
-            <menu_item_check.on_click
-             function="ToggleControl"
-             parameter="RenderDeferred" />
-            <menu_item_check.on_enable
-                 function="Advanced.EnableRenderDeferred" />
-          </menu_item_check>
           <menu_item_check
                        label="   Shadows from Sun/Moon/Projectors"
                        name="Shadows from Sun/Moon/Projectors">
-- 
cgit v1.2.3


From 49278013ef3af18f4565f46aeb67368e6439ae46 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Mon, 8 Aug 2022 23:24:29 +0300
Subject: SL-17653 Apply selection to faces and linkset instead of just first
 object

---
 indra/newview/llmaterialeditor.cpp | 52 +++++++++++++++++++++-----------------
 1 file changed, 29 insertions(+), 23 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llmaterialeditor.cpp b/indra/newview/llmaterialeditor.cpp
index 57cd74e0f2..0e252518cb 100644
--- a/indra/newview/llmaterialeditor.cpp
+++ b/indra/newview/llmaterialeditor.cpp
@@ -62,6 +62,7 @@ const std::string MATERIAL_NORMAL_DEFAULT_NAME = "Normal";
 const std::string MATERIAL_METALLIC_DEFAULT_NAME = "Metallic Roughness";
 const std::string MATERIAL_EMISSIVE_DEFAULT_NAME = "Emissive";
 
+
 class LLMaterialEditorCopiedCallback : public LLInventoryCallback
 {
 public:
@@ -1341,34 +1342,39 @@ void LLMaterialEditor::importMaterial()
     (new LLMaterialFilePicker(this))->getFile();
 }
 
-void LLMaterialEditor::applyToSelection()
+class LLRemderMaterialFunctor : public LLSelectedTEFunctor
 {
-    // Todo: fix this, this is a hack, not a proper live preview
-    LLViewerObject* objectp = LLSelectMgr::instance().getSelection()->getFirstObject();
-    if (objectp && objectp->getVolume() && objectp->permModify())
+public:
+    LLRemderMaterialFunctor(LLGLTFMaterial *mat, const LLUUID &id)
+        : mMat(mat), mMatId(id)
     {
-        LLGLTFMaterial* mat = new LLGLTFMaterial();
-        getGLTFMaterial(mat);
-        LLVOVolume* vobjp = (LLVOVolume*)objectp;
-        for (int i = 0; i < vobjp->getNumTEs(); ++i)
-        {
-            // this is here just to prevent material from immediately resetting
-            if (mAssetID.notNull())
-            {
-                vobjp->setRenderMaterialID(i, mAssetID);
-            }
-            else
-            {
-                const LLUUID placeholder("984e183e-7811-4b05-a502-d79c6f978a98");
-                vobjp->setRenderMaterialID(i, placeholder);
-            }
+    }
 
-            vobjp->getTE(i)->setGLTFMaterial(mat);
-            vobjp->updateTEMaterialTextures(i);
+    virtual bool apply(LLViewerObject* objectp, S32 te)
+    {
+        if (objectp && objectp->permModify() && objectp->getVolume())
+        {
+            LLVOVolume* vobjp = (LLVOVolume*)objectp;
+            vobjp->setRenderMaterialID(te, mMatId);
+            vobjp->getTE(te)->setGLTFMaterial(mMat);
+            vobjp->updateTEMaterialTextures(te);
         }
-
-        vobjp->markForUpdate(TRUE);
+        return true;
     }
+private:
+    LLGLTFMaterial *mMat;
+    LLUUID mMatId;
+};
+
+void LLMaterialEditor::applyToSelection()
+{
+    LLGLTFMaterial* mat = new LLGLTFMaterial();
+    getGLTFMaterial(mat);
+    const LLUUID placeholder("984e183e-7811-4b05-a502-d79c6f978a98");
+    LLUUID asset_id = mAssetID.notNull() ? mAssetID : placeholder;
+    LLRemderMaterialFunctor mat_func(mat, mAssetID);
+    LLObjectSelectionHandle selected_objects = LLSelectMgr::getInstance()->getSelection();
+    selected_objects->applyToTEs(&mat_func);
 }
 
 void LLMaterialEditor::getGLTFMaterial(LLGLTFMaterial* mat)
-- 
cgit v1.2.3


From 7558641610895f1192c0fefa152437524e431eb3 Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Mon, 8 Aug 2022 15:34:56 -0500
Subject: SL-17937 Fix for broken PBR material batching.

---
 indra/llprimitive/llgltfmaterial.h | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'indra')

diff --git a/indra/llprimitive/llgltfmaterial.h b/indra/llprimitive/llgltfmaterial.h
index a8d5fb8e85..ab381ca55e 100644
--- a/indra/llprimitive/llgltfmaterial.h
+++ b/indra/llprimitive/llgltfmaterial.h
@@ -61,8 +61,10 @@ public:
     // get a UUID based on a hash of this LLGLTFMaterial
     LLUUID getHash() const
     {
+        LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
         LLMD5 md5;
         md5.update((unsigned char*) this, sizeof(this));
+        md5.finalize();
         LLUUID id;
         md5.raw_digest(id.mData);
         return id;
-- 
cgit v1.2.3


From e73fd2a2f28a01c1ab1e0dee63ba4d2ca73c9634 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Tue, 9 Aug 2022 00:21:45 +0300
Subject: SL-17653 Perially done restoration functionality

---
 indra/newview/llmaterialeditor.cpp | 15 ++++++++---
 indra/newview/llmaterialeditor.h   |  2 ++
 indra/newview/llselectmgr.cpp      | 52 ++++++++++++++++++++++++++++++++++++++
 indra/newview/llselectmgr.h        |  3 +++
 4 files changed, 69 insertions(+), 3 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llmaterialeditor.cpp b/indra/newview/llmaterialeditor.cpp
index 0e252518cb..13e250ec3b 100644
--- a/indra/newview/llmaterialeditor.cpp
+++ b/indra/newview/llmaterialeditor.cpp
@@ -165,6 +165,15 @@ void LLMaterialEditor::onClickCloseBtn(bool app_quitting)
     }
 }
 
+void LLMaterialEditor::onClose(bool app_quitting)
+{
+    // todo: will only revert whatever was recently selected,
+    // Later should work based of tools floater
+    LLSelectMgr::getInstance()->selectionRevertGLTFMaterials();
+    
+    LLPreview::onClose(app_quitting);
+}
+
 LLUUID LLMaterialEditor::getAlbedoId()
 {
     return mAlbedoTextureCtrl->getValue().asUUID();
@@ -1362,17 +1371,17 @@ public:
         return true;
     }
 private:
-    LLGLTFMaterial *mMat;
+    LLPointer<LLGLTFMaterial> mMat;
     LLUUID mMatId;
 };
 
 void LLMaterialEditor::applyToSelection()
 {
-    LLGLTFMaterial* mat = new LLGLTFMaterial();
+    LLPointer<LLGLTFMaterial> mat = new LLGLTFMaterial();
     getGLTFMaterial(mat);
     const LLUUID placeholder("984e183e-7811-4b05-a502-d79c6f978a98");
     LLUUID asset_id = mAssetID.notNull() ? mAssetID : placeholder;
-    LLRemderMaterialFunctor mat_func(mat, mAssetID);
+    LLRemderMaterialFunctor mat_func(mat, asset_id);
     LLObjectSelectionHandle selected_objects = LLSelectMgr::getInstance()->getSelection();
     selected_objects->applyToTEs(&mat_func);
 }
diff --git a/indra/newview/llmaterialeditor.h b/indra/newview/llmaterialeditor.h
index 3da59c7f93..1b81a7144a 100644
--- a/indra/newview/llmaterialeditor.h
+++ b/indra/newview/llmaterialeditor.h
@@ -103,6 +103,8 @@ public:
 	BOOL postBuild() override;
     void onClickCloseBtn(bool app_quitting = false) override;
 
+    void onClose(bool app_quitting) override;
+
     LLUUID getAlbedoId();
     void setAlbedoId(const LLUUID& id);
     void setAlbedoUploadId(const LLUUID& id);
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 853703b4d5..fc5b1c60e2 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -1936,6 +1936,32 @@ BOOL LLSelectMgr::selectionRevertTextures()
 	return revert_successful;
 }
 
+void LLSelectMgr::selectionRevertGLTFMaterials()
+{
+    struct f : public LLSelectedTEFunctor
+    {
+        LLObjectSelectionHandle mSelectedObjects;
+        f(LLObjectSelectionHandle sel) : mSelectedObjects(sel) {}
+        bool apply(LLViewerObject* object, S32 te)
+        {
+            if (object->permModify())
+            {
+                LLSelectNode* nodep = mSelectedObjects->findNode(object);
+                if (nodep && te < (S32)nodep->mSavedGLTFMaterials.size())
+                {
+                    LLUUID id = nodep->mSavedGLTFMaterials[te];
+                    object->setRenderMaterialID(te, id);
+                }
+            }
+            return true;
+        }
+    } setfunc(mSelectedObjects);
+    getSelection()->applyToTEs(&setfunc);
+
+    LLSelectMgrSendFunctor sendfunc;
+    getSelection()->applyToObjects(&sendfunc);
+}
+
 void LLSelectMgr::selectionSetBumpmap(U8 bumpmap, const LLUUID &image_id)
 {
 	struct f : public LLSelectedTEFunctor
@@ -5526,6 +5552,17 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data
 					// this should be the only place that saved textures is called
 					node->saveTextures(texture_ids);
 				}
+
+                if (can_copy && can_transfer && node->getObject()->getVolume())
+                {
+                    uuid_vec_t material_ids;
+                    LLVOVolume* vobjp = (LLVOVolume*)node->getObject();
+                    for (int i = 0; i < vobjp->getNumTEs(); ++i)
+                    {
+                        material_ids.push_back(vobjp->getRenderMaterialID(i));
+                    }
+                    node->savedGLTFMaterials(material_ids);
+                }
 			}
 
 			node->mValid = TRUE;
@@ -6277,6 +6314,7 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep)
 	}
 	
 	saveTextures(nodep.mSavedTextures);
+    savedGLTFMaterials(nodep.mSavedGLTFMaterials);
 }
 
 LLSelectNode::~LLSelectNode()
@@ -6392,6 +6430,20 @@ void LLSelectNode::saveTextures(const uuid_vec_t& textures)
 	}
 }
 
+void LLSelectNode::savedGLTFMaterials(const uuid_vec_t& materials)
+{
+    if (mObject.notNull())
+    {
+        mSavedGLTFMaterials.clear();
+
+        for (uuid_vec_t::const_iterator materials_it = materials.begin();
+            materials_it != materials.end(); ++materials_it)
+        {
+            mSavedGLTFMaterials.push_back(*materials_it);
+        }
+    }
+}
+
 void LLSelectNode::saveTextureScaleRatios(LLRender::eTexIndex index_to_query)
 {
 	mTextureScaleRatios.clear();
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index ce0316e610..aec2baa6a7 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -187,6 +187,7 @@ public:
 	void saveColors();
 	void saveShinyColors();
 	void saveTextures(const uuid_vec_t& textures);
+    void savedGLTFMaterials(const uuid_vec_t& materials);
 	void saveTextureScaleRatios(LLRender::eTexIndex index_to_query);
 
 	BOOL allowOperationOnNode(PermissionBit op, U64 group_proxy_power) const;
@@ -224,6 +225,7 @@ public:
 	std::vector<LLColor4>	mSavedColors;
 	std::vector<LLColor4>	mSavedShinyColors;
 	uuid_vec_t		mSavedTextures;
+    uuid_vec_t		mSavedGLTFMaterials;
 	std::vector<LLVector3>  mTextureScaleRatios;
 	std::vector<LLVector3>	mSilhouetteVertices;	// array of vertices to render silhouette of object
 	std::vector<LLVector3>	mSilhouetteNormals;	// array of normals to render silhouette of object
@@ -609,6 +611,7 @@ public:
 	void selectionRevertColors();
 	void selectionRevertShinyColors();
 	BOOL selectionRevertTextures();
+    void selectionRevertGLTFMaterials();
 	void selectionSetBumpmap( U8 bumpmap, const LLUUID &image_id );
 	void selectionSetTexGen( U8 texgen );
 	void selectionSetShiny( U8 shiny, const LLUUID &image_id );
-- 
cgit v1.2.3