From b4c99cbb0aafc077c67b868ecb2d4c802355f472 Mon Sep 17 00:00:00 2001
From: Jonathan Yap <jhwelch@gmail.com>
Date: Wed, 11 Feb 2015 13:28:39 -0500
Subject: [PATCH] STORM-2082 Attempt to put advanced settings into separate
 floater

---
 indra/newview/llfloaterpreference.cpp         |  121 +-
 indra/newview/llfloaterpreference.h           |   29 +-
 indra/newview/llviewerfloaterreg.cpp          |    1 +
 .../floater_preferences_graphics_advanced.xml |  862 +++++++++++++
 .../xui/en/panel_preferences_graphics1.xml    | 1084 ++---------------
 5 files changed, 1079 insertions(+), 1018 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml

diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 0ac18408db..d2dfb63f9d 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -351,6 +351,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mCommitCallbackRegistrar.add("Pref.AutoReplace",            boost::bind(&LLFloaterPreference::onClickAutoReplace, this));
 	mCommitCallbackRegistrar.add("Pref.PermsDefault",           boost::bind(&LLFloaterPreference::onClickPermsDefault, this));
 	mCommitCallbackRegistrar.add("Pref.SpellChecker",           boost::bind(&LLFloaterPreference::onClickSpellChecker, this));
+	mCommitCallbackRegistrar.add("Pref.Advanced",				boost::bind(&LLFloaterPreference::onClickAdvanced, this));
 
 	sSkin = gSavedSettings.getString("SkinCurrent");
 
@@ -621,6 +622,9 @@ void LLFloaterPreference::cancel()
 	
 	// hide spellchecker settings folder
 	LLFloaterReg::hideInstance("prefs_spellchecker");
+
+	// hide advancede floater
+	LLFloaterReg::hideInstance("prefs_graphics_advanced");
 	
 	// reverts any changes to current skin
 	gSavedSettings.setString("SkinCurrent", sSkin);
@@ -745,6 +749,22 @@ void LLFloaterPreference::onVertexShaderEnable()
 	refreshEnabledGraphics();
 }
 
+void LLFloaterPreferenceGraphicsAdvanced::onVertexShaderEnable()
+{
+	LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
+	if (instance)
+	{
+		instance->refresh();
+	}
+
+	refreshEnabledGraphics();
+}
+
+void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledGraphics()
+{
+	refreshEnabledState();
+}
+
 void LLFloaterPreference::onAvatarImpostorsEnable()
 {
 	refreshEnabledGraphics();
@@ -792,10 +812,12 @@ void LLFloaterPreference::setHardwareDefaults()
 void LLFloaterPreference::getControlNames(std::vector<std::string>& names)
 {
 	LLView* view = findChild<LLView>("display");
-	if (view)
+	LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
+	if (view && advanced)
 	{
 		std::list<LLView*> stack;
 		stack.push_back(view);
+		stack.push_back(advanced);
 		while(!stack.empty())
 		{
 			// Process view on top of the stack
@@ -930,6 +952,12 @@ void LLFloaterPreference::refreshEnabledGraphics()
 	{
 		instance->refresh();
 	}
+
+	LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
+	if (advanced)
+	{
+		advanced->refresh();
+	}
 }
 
 void LLFloaterPreference::onClickClearCache()
@@ -1111,7 +1139,37 @@ void LLFloaterPreference::buildPopupLists()
 }
 
 void LLFloaterPreference::refreshEnabledState()
-{	
+{
+	LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
+	LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
+
+	// if vertex shaders off, disable all shader related products
+	if (!LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") ||
+		!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
+	{
+		ctrl_wind_light->setEnabled(FALSE);
+		ctrl_wind_light->setValue(FALSE);
+	}
+	else
+	{
+		ctrl_wind_light->setEnabled(gSavedSettings.getBOOL("VertexShaderEnable"));
+	}
+
+	//Deferred/SSAO/Shadows
+	BOOL bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump") && gSavedSettings.getBOOL("RenderObjectBump");
+	BOOL shaders = gSavedSettings.getBOOL("WindLightUseAtmosShaders") && gSavedSettings.getBOOL("VertexShaderEnable");
+	BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
+						bumpshiny &&
+						shaders && 
+						gGLManager.mHasFramebufferObject &&
+						gSavedSettings.getBOOL("RenderAvatarVP") &&
+						(ctrl_wind_light->get()) ? TRUE : FALSE;
+
+	ctrl_deferred->setEnabled(enabled);
+}
+
+void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
+{
 	LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
 	LLTextBox* reflections_text = getChild<LLTextBox>("ReflectionsText");
 	
@@ -1175,22 +1233,18 @@ void LLFloaterPreference::refreshEnabledState()
 	
 	// WindLight
 	LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
-	LLCheckBoxCtrl* ctrl_wind_light2 = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders2");
 	LLSliderCtrl* sky = getChild<LLSliderCtrl>("SkyMeshDetail");
 	LLTextBox* sky_text = getChild<LLTextBox>("SkyMeshDetailText");
 
 	// *HACK just checks to see if we can use shaders... 
 	// maybe some cards that use shaders, but don't support windlight
 	ctrl_wind_light->setEnabled(ctrl_shader_enable->getEnabled() && shaders);
-	ctrl_wind_light2->setEnabled(ctrl_shader_enable->getEnabled() && shaders);
 
 	sky->setEnabled(ctrl_wind_light->get() && shaders);
 	sky_text->setEnabled(ctrl_wind_light->get() && shaders);
 
 	//Deferred/SSAO/Shadows
 	LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
-	LLCheckBoxCtrl* ctrl_deferred2 = getChild<LLCheckBoxCtrl>("UseLightShaders2");
-
 	
 	BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
 						((bumpshiny_ctrl && bumpshiny_ctrl->get()) ? TRUE : FALSE) &&
@@ -1200,7 +1254,6 @@ void LLFloaterPreference::refreshEnabledState()
 						(ctrl_wind_light->get()) ? TRUE : FALSE;
 
 	ctrl_deferred->setEnabled(enabled);
-	ctrl_deferred2->setEnabled(enabled);
 
 	LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
 	LLCheckBoxCtrl* ctrl_dof = getChild<LLCheckBoxCtrl>("UseDoF");
@@ -1291,7 +1344,7 @@ void LLFloaterPreference::refreshEnabledState()
 	getChild<LLButton>("default_creation_permissions")->setEnabled(LLStartUp::getStartupState() < STATE_STARTED ? false : true);
 }
 
-void LLFloaterPreference::disableUnavailableSettings()
+void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
 {	
 	LLComboBox* ctrl_reflections   = getChild<LLComboBox>("Reflections");
 	LLTextBox* reflections_text = getChild<LLTextBox>("ReflectionsText");
@@ -1302,7 +1355,6 @@ void LLFloaterPreference::disableUnavailableSettings()
 	LLSliderCtrl* ctrl_maximum_arc = getChild<LLSliderCtrl>("MaximumARC");
 	LLTextBox* maximum_arc_text = getChild<LLTextBox>("MaximumARCText");
 	LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
-	LLCheckBoxCtrl* ctrl_deferred2 = getChild<LLCheckBoxCtrl>("UseLightShaders2");
 	LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail");
 	LLTextBox* shadows_text = getChild<LLTextBox>("RenderShadowDetailText");
 	LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
@@ -1344,8 +1396,6 @@ void LLFloaterPreference::disableUnavailableSettings()
 
 		ctrl_deferred->setEnabled(FALSE);
 		ctrl_deferred->setValue(FALSE);
-		ctrl_deferred2->setEnabled(FALSE);
-		ctrl_deferred2->setValue(FALSE);
 	}
 	
 	// disabled windlight
@@ -1370,8 +1420,6 @@ void LLFloaterPreference::disableUnavailableSettings()
 
 		ctrl_deferred->setEnabled(FALSE);
 		ctrl_deferred->setValue(FALSE);
-		ctrl_deferred2->setEnabled(FALSE);
-		ctrl_deferred2->setValue(FALSE);
 	}
 
 	// disabled deferred
@@ -1390,8 +1438,6 @@ void LLFloaterPreference::disableUnavailableSettings()
 
 		ctrl_deferred->setEnabled(FALSE);
 		ctrl_deferred->setValue(FALSE);
-		ctrl_deferred2->setEnabled(FALSE);
-		ctrl_deferred2->setValue(FALSE);
 	}
 	
 	// disabled deferred SSAO
@@ -1439,8 +1485,6 @@ void LLFloaterPreference::disableUnavailableSettings()
 
 		ctrl_deferred->setEnabled(FALSE);
 		ctrl_deferred->setValue(FALSE);
-		ctrl_deferred2->setEnabled(FALSE);
-		ctrl_deferred2->setValue(FALSE);
 	}
 
 	// disabled cloth
@@ -1461,6 +1505,18 @@ void LLFloaterPreference::disableUnavailableSettings()
 void LLFloaterPreference::refresh()
 {
 	LLPanel::refresh();
+	refreshEnabledState();
+}
+
+void LLFloaterPreferenceGraphicsAdvanced::draw()
+{
+	refresh();
+	LLFloater::draw();
+}
+
+void LLFloaterPreferenceGraphicsAdvanced::refresh()
+{
+	refreshEnabledState();
 
 	getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer)  gSavedSettings.getU32("RenderFSAASamples"));
 
@@ -1731,7 +1787,7 @@ void LLFloaterPreference::refreshUI()
 	refresh();
 }
 
-void LLFloaterPreference::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box)
+void LLFloaterPreferenceGraphicsAdvanced::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box)
 {
 	if (text_box == NULL || ctrl== NULL)
 		return;
@@ -1760,7 +1816,7 @@ void LLFloaterPreference::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_b
 	}
 }
 
-void LLFloaterPreference::updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* text_box)
+void LLFloaterPreferenceGraphicsAdvanced::updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* text_box)
 {
 	F32 value = (F32)ctrl->getValue().asReal();
 
@@ -1779,7 +1835,7 @@ void LLFloaterPreference::updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* tex
 	}
 }
 
-void LLFloaterPreference::updateMaximumArcText(LLSliderCtrl* ctrl, LLTextBox* text_box)
+void LLFloaterPreferenceGraphicsAdvanced::updateMaximumArcText(LLSliderCtrl* ctrl, LLTextBox* text_box)
 {
 	F32 min_result = 20000.0f;
 	F32 max_result = 300000.0f;
@@ -1857,6 +1913,11 @@ void LLFloaterPreference::onClickSpellChecker()
 		LLFloaterReg::showInstance("prefs_spellchecker");
 }
 
+void LLFloaterPreference::onClickAdvanced()
+{
+	LLFloaterReg::showInstance("prefs_graphics_advanced");
+}
+
 void LLFloaterPreference::onClickActionChange()
 {
 	mClickActionDirty = true;
@@ -2115,10 +2176,13 @@ void LLPanelPreference::apply()
 
 void LLPanelPreference::saveSettings()
 {
+	LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
+
 	// Save the value of all controls in the hierarchy
 	mSavedValues.clear();
 	std::list<LLView*> view_stack;
 	view_stack.push_back(this);
+	view_stack.push_back(advanced);
 	while(!view_stack.empty())
 	{
 		// Process view on top of the stack
@@ -2279,6 +2343,9 @@ static LLPanelInjector<LLPanelPreferencePrivacy> t_pref_privacy("panel_preferenc
 
 BOOL LLPanelPreferenceGraphics::postBuild()
 {
+	LLFloaterReg::showInstance("prefs_graphics_advanced");
+	LLFloaterReg::hideInstance("prefs_graphics_advanced");
+
 // Don't do this on Mac as their braindead GL versioning
 // sets this when 8x and 16x are indeed available
 //
@@ -2340,8 +2407,10 @@ void LLPanelPreferenceGraphics::setPresetText()
 
 bool LLPanelPreferenceGraphics::hasDirtyChilds()
 {
+	LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
 	std::list<LLView*> view_stack;
 	view_stack.push_back(this);
+	view_stack.push_back(advanced);
 	while(!view_stack.empty())
 	{
 		// Process view on top of the stack
@@ -2377,8 +2446,10 @@ bool LLPanelPreferenceGraphics::hasDirtyChilds()
 
 void LLPanelPreferenceGraphics::resetDirtyChilds()
 {
+	LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
 	std::list<LLView*> view_stack;
 	view_stack.push_back(this);
+	view_stack.push_back(advanced);
 	while(!view_stack.empty())
 	{
 		// Process view on top of the stack
@@ -2414,6 +2485,16 @@ void LLPanelPreferenceGraphics::setHardwareDefaults()
 	LLPanelPreference::setHardwareDefaults();
 }
 
+LLFloaterPreferenceGraphicsAdvanced::LLFloaterPreferenceGraphicsAdvanced(const LLSD& key)
+	: LLFloater(key)
+{
+	mCommitCallbackRegistrar.add("Pref.VertexShaderEnable",		boost::bind(&LLFloaterPreferenceGraphicsAdvanced::onVertexShaderEnable, this));
+}
+
+LLFloaterPreferenceGraphicsAdvanced::~LLFloaterPreferenceGraphicsAdvanced()
+{
+}
+
 LLFloaterPreferenceProxy::LLFloaterPreferenceProxy(const LLSD& key)
 	: LLFloater(key),
 	  mSocksSettingsDirty(false)
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 10087f8aa3..cc3c85e340 100755
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -117,10 +117,10 @@ protected:
 	// callback for defaults
 	void setHardwareDefaults();
 	void setRecommended();
-	// callback for when client turns on shaders
-	void onVertexShaderEnable();
 	// callback for when client turns on impostors
 	void onAvatarImpostorsEnable();
+		// callback for when client turns on shaders
+	void onVertexShaderEnable();
 
 	// callback for commit in the "Single click on land" and "Double click on land" comboboxes.
 	void onClickActionChange();
@@ -128,7 +128,7 @@ protected:
 	void updateClickActionSettings();
 	// updates click/double-click action controls depending on values from settings.xml
 	void updateClickActionControls();
-	
+
 	// This function squirrels away the current values of the controls so that
 	// cancel() can restore them.	
 	void saveSettings();
@@ -155,15 +155,11 @@ public:
 	void enableHistory();
 	void setPersonalInfo(const std::string& visibility, bool im_via_email);
 	void refreshEnabledState();
-	void disableUnavailableSettings();
 	void onCommitWindowedMode();
 	void refresh();	// Refresh enable/disable
 	// if the quality radio buttons are changed
 	void onChangeQuality(const LLSD& data);
 	
-	void updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box);
-	void updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* text_box);
-	void updateMaximumArcText(LLSliderCtrl* ctrl, LLTextBox* text_box);
 	void refreshUI();
 
 	void onCommitParcelMediaAutoPlayEnable();
@@ -177,6 +173,7 @@ public:
 	void onClickPermsDefault();
 	void onClickAutoReplace();
 	void onClickSpellChecker();
+	void onClickAdvanced();
 	void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
 	void getUIColor(LLUICtrl* ctrl, const LLSD& param);
 	void onLogChatHistorySaved();	
@@ -269,6 +266,24 @@ private:
 	void onPresetsListChange();
 };
 
+class LLFloaterPreferenceGraphicsAdvanced : public LLFloater
+{
+public: 
+	LLFloaterPreferenceGraphicsAdvanced(const LLSD& key);
+	~LLFloaterPreferenceGraphicsAdvanced();
+
+	void disableUnavailableSettings();
+	void refreshEnabledGraphics();
+	void refreshEnabledState();
+	void updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box);
+	void updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* text_box);
+	void updateMaximumArcText(LLSliderCtrl* ctrl, LLTextBox* text_box);
+	void draw();
+	void refresh();
+	// callback for when client turns on shaders
+	void onVertexShaderEnable();
+};
+
 class LLFloaterPreferenceProxy : public LLFloater
 {
 public: 
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 5ab7551849..5143d2c2ff 100755
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -274,6 +274,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("perms_default", "floater_perms_default.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPermsDefault>);
 	LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
 	LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
+	LLFloaterReg::add("prefs_graphics_advanced", "floater_preferences_graphics_advanced.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceGraphicsAdvanced>);
 	LLFloaterReg::add("prefs_proxy", "floater_preferences_proxy.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceProxy>);
 	LLFloaterReg::add("prefs_spellchecker_import", "floater_spellcheck_import.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSpellCheckerImport>);
 	LLFloaterReg::add("prefs_translation", "floater_translation_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTranslationSettings>);
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
new file mode 100644
index 0000000000..981a30b436
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
@@ -0,0 +1,862 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+  height="680"
+  layout="topleft"
+  name="prefs_graphics_advanced"
+  help_topic="Preferences_Graphics_Advanced"
+  single_instance="true"
+  save_rect="true"
+  title="ADVANCED GRAPHICS PREFERENCES"
+  width="450">
+
+<!-- This block shows Advanced Settings -->
+
+  <button
+    follows="top|left"
+    height="23"
+    label="Reset all to recommended settings"
+    layout="topleft"
+    left="10"
+    name="Defaults"
+    top="5"
+    width="250">
+    <button.commit_callback
+      function="Pref.HardwareDefaults" />
+  </button>
+
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="GeneralText"
+    top_delta="35"
+    left="5"
+    width="128">
+     General
+  </text>
+
+  <slider
+    control_name="RenderFarClip"
+    decimal_digits="0"
+    follows="left|top"
+    height="16"
+    increment="8"
+    initial_value="160"
+    label="Draw distance:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    min_val="64"
+    max_val="512"
+    name="DrawDistance"
+    top_delta="16"
+    width="330" />
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="DrawDistanceMeterText2"
+    top_delta="0"
+    left_delta="330"
+    width="102">
+      m
+  </text> 
+
+  <slider
+    control_name="RenderMaxPartCount"
+    decimal_digits="0"
+    follows="left|top"
+    height="16"
+    increment="256"
+    initial_value="4096"
+    label="Max. particle count:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    max_val="8192"
+    name="MaxParticleCount"
+    top_delta="16"
+    width="336" />
+
+  <slider
+    control_name="RenderGlowResolutionPow"
+    decimal_digits="0"
+    follows="left|top"
+    height="16"
+    increment="1"
+    initial_value="8"
+    label="Post process quality:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    min_val="8"
+    max_val="9"
+    name="RenderPostProcess"
+    show_text="false"
+    top_delta="16"
+    width="300">
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="PostProcessText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="PostProcessText"
+    top_delta="0"
+    left_delta="304"
+    width="128">
+       Low
+  </text>
+
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="AvatarText"
+    top_delta="20"
+    left="5"
+    width="128">
+     Avatar
+  </text>
+
+  <slider
+    control_name="MaximumARC"
+    follows="left|top"
+    height="16"
+    initial_value="101"
+    increment="1"
+    label="Maximum ARC:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    min_val="1"
+    max_val="101"
+    name="MaximumARC"
+    show_text="false"
+    top_delta="16"
+    width="300">
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="MaximumARCText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    top_delta="0"
+    left_delta="304"
+    text_readonly_color="LabelDisabledColor"
+    name="MaximumARCText"
+    width="128">
+       0
+  </text>
+
+  <slider
+    control_name="RenderAvatarMaxVisible"
+    decimal_digits="0"
+    follows="left|top"
+    height="16"
+    increment="1"
+    initial_value="12"
+    label="Max. # of non-impostors:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    min_val="1"
+    max_val="66"
+    name="MaxNumberAvatarDrawn"
+    show_text="false"
+    top_delta="16"
+    width="300">
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="ImpostorsText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    top_delta="0"
+    left_delta="304"
+    text_readonly_color="LabelDisabledColor"
+    name="ImpostorsText"
+    width="128">
+       0
+  </text>
+
+  <slider
+    control_name="RenderAvatarLODFactor"
+    follows="left|top"
+    height="16"
+    increment="0.125"
+    initial_value="160"
+    label="Detail:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    name="AvatarMeshDetail"
+    show_text="false"
+    top_delta="16"
+    width="300">
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="AvatarMeshDetailText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="AvatarMeshDetailText"
+    top_delta="0"
+    left_delta="304"
+    width="128">
+     Low
+  </text>
+
+  <slider
+    control_name="RenderAvatarPhysicsLODFactor"
+    follows="left|top"
+    height="16"
+    initial_value="100"
+    increment=".05"
+    label="Physics:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    name="AvatarPhysicsDetail"
+    show_text="false"
+    top_delta="16"
+    width="300">
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="AvatarPhysicsDetailText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    top_delta="0"
+    left_delta="304"
+    name="AvatarPhysicsDetailText"
+    width="128">
+       Low
+  </text>
+
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="ShadersText"
+    top_delta="20"
+    left="5"
+    width="128">
+     Shaders
+  </text>
+
+  <check_box
+    control_name="RenderTransparentWater"
+    height="16"
+    initial_value="true"
+    label="Transparent Water"
+    layout="topleft"
+    left="30"
+    name="TransparentWater"
+    top_delta="16"
+    width="300" />
+
+  <check_box
+    control_name="RenderObjectBump"
+    height="16"
+    initial_value="true"
+    label="Bump mapping and shiny"
+    layout="topleft"
+    left="30"
+    name="BumpShiny"
+    top_delta="16"
+    width="300">
+    <check_box.commit_callback
+      function="Pref.VertexShaderEnable" />
+  </check_box>
+
+  <check_box
+    control_name="RenderLocalLights"
+    height="16"
+    initial_value="true"
+    label="Local Lights"
+    layout="topleft"
+    left="30"
+    name="LocalLights"
+    top_delta="16"
+    width="300" />
+
+  <check_box
+    control_name="VertexShaderEnable"
+    height="16"
+    initial_value="true"
+    label="Basic shaders"
+    layout="topleft"
+    left="30"
+    name="BasicShaders"
+    tool_tip="Disabling this option may prevent some graphics card drivers from crashing"
+    top_delta="16"
+    width="300">
+    <check_box.commit_callback
+      function="Pref.VertexShaderEnable" />
+  </check_box>
+
+  <slider
+    control_name="RenderTerrainDetail"
+    follows="left|top"
+    height="16"
+    label="Terrain Detail:"
+    label_width="165"
+    layout="topleft"
+    left="50"
+    show_text="false"
+    initial_value="0"
+    increment="1"
+    min_val="0"
+    max_val="1"
+    name="TerrainDetail"
+    top_delta="16"
+    width="280" >
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="TerrainDetail" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    top_delta="0"
+    left_delta="284"
+    name="TerrainDetailText"
+    text_readonly_color="LabelDisabledColor"
+    width="128">
+       Low
+  </text>
+
+  <check_box
+    control_name="RenderAvatarVP"
+    height="16"
+    initial_value="true"
+    label="Avatar Hardware skinning"
+    layout="topleft"
+    left="50"
+    name="AvatarVertexProgram"
+    top_delta="16"
+    width="280">
+    <check_box.commit_callback
+      function="Pref.VertexShaderEnable" />
+  </check_box>
+
+  <check_box
+    control_name="RenderAvatarCloth"
+    height="16"
+    initial_value="true"
+    label="Avatar cloth"
+    layout="topleft"
+    left="50"
+    name="AvatarCloth"
+    top_delta="16"
+    width="280" />
+
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="ReflectionsText"
+    text_readonly_color="LabelDisabledColor"
+    top_delta="16"
+    left="50"
+    width="128">
+       Water Reflections:
+  </text>
+  <combo_box
+    control_name="RenderReflectionDetail"
+    height="18"
+    layout="topleft"
+    left_delta="170"
+    top_delta="0"
+    name="Reflections"
+    width="150">
+      <combo_box.item
+        label="Minimal"
+        name="0"
+        value="0"/>
+      <combo_box.item
+        label="Terrain and trees"
+        name="1"
+        value="1"/>
+      <combo_box.item
+        label="All static objects"
+        name="2"
+        value="2"/>
+      <combo_box.item
+        label="All avatars and objects"
+        name="3"
+        value="3"/>
+      <combo_box.item
+        label="Everything"
+        name="4"
+        value="4"/>
+  </combo_box>
+
+  <check_box
+    control_name="WindLightUseAtmosShaders"
+    height="16"
+    initial_value="true"
+    label="Atmospheric shaders"
+    layout="topleft"
+    left="50"
+    name="WindLightUseAtmosShaders"
+    top_delta="16"
+    width="280">
+    <check_box.commit_callback
+      function="Pref.VertexShaderEnable" />
+  </check_box>
+
+  <slider
+    control_name="WLSkyDetail"
+    decimal_digits="0"
+    follows="left|top"
+    height="16"
+    increment="8"
+    initial_value="160"
+    label="Sky:"
+    label_width="145"
+    layout="topleft"
+    left="70"
+    min_val="16"
+    max_val="128"
+    name="SkyMeshDetail"
+    show_text="false"
+    top_delta="16"
+    width="260">
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="SkyMeshDetailText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    left_delta="264"
+    name="SkyMeshDetailText"
+    text_readonly_color="LabelDisabledColor"
+    top_delta="0"
+    width="128">
+       Low
+  </text>
+
+  <check_box
+    control_name="RenderDeferred"
+    height="16"
+    initial_value="true"
+    label="Advanced Lighting Model"
+    layout="topleft"
+    left="70"
+    name="UseLightShaders"
+    top_delta="16"
+    width="260">
+    <check_box.commit_callback
+      function="Pref.VertexShaderEnable" />
+  </check_box>
+
+  <check_box
+    control_name="RenderDeferredSSAO"
+    height="16"
+    initial_value="true"
+    label="Ambient Occlusion"
+    layout="topleft"
+    left="90"
+    name="UseSSAO"
+    top_delta="16"
+    width="240">
+    <check_box.commit_callback
+      function="Pref.VertexShaderEnable" />
+  </check_box>
+
+  <check_box
+    control_name="RenderDepthOfField"
+    height="16"
+    initial_value="true"
+    label="Depth of Field"
+    layout="topleft"
+    left="90"
+    name="UseDoF"
+    top_delta="16"
+    width="240">
+    <check_box.commit_callback
+      function="Pref.VertexShaderEnable" />
+  </check_box>
+
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    left="90"
+    name="RenderShadowDetailText"
+    text_readonly_color="LabelDisabledColor"
+    top_delta="16"
+    width="128">
+      Shadows:
+  </text>
+  <combo_box
+   control_name="RenderShadowDetail"
+   height="18"
+   layout="topleft"
+   left_delta="130"
+   top_delta="0" 
+   name="ShadowDetail"
+   width="150">
+     <combo_box.item
+       label="None"
+       name="0"
+       value="0"/>
+     <combo_box.item
+       label="Sun/Moon"
+       name="1"
+       value="1"/>
+     <combo_box.item
+       label="Sun/Moon + Projectors"
+       name="2"
+       value="2"/>
+  </combo_box>
+
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="AvatarText"
+    top_delta="20"
+    left="5"
+    width="128">
+     Mesh
+  </text>
+
+  <slider
+    control_name="RenderTerrainLODFactor"
+    follows="left|top"
+    height="16"
+    increment="0.125"
+    initial_value="160"
+    label="Terrain Mesh Detail:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    min_val="1"
+    max_val="2"
+    name="TerrainMeshDetail"
+    show_text="false"
+    top_delta="16"
+    width="300">
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="TerrainMeshDetailText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="TerrainMeshDetailText"
+    text_readonly_color="LabelDisabledColor"
+    top_delta="0"
+    left_delta="304"
+    width="128">
+       Low
+  </text>
+
+  <slider
+    control_name="RenderTreeLODFactor"
+    follows="left|top"
+    height="16"
+    increment="0.125"
+    initial_value="160"
+    label="Trees:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    name="TreeMeshDetail"
+    show_text="false"
+    top_delta="16"
+    width="300">
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="TreeMeshDetailText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="TreeMeshDetailText"
+    top_delta="0"
+    left_delta="304"
+    width="128">
+       Low
+  </text>
+
+  <slider
+    control_name="RenderVolumeLODFactor"
+    follows="left|top"
+    height="16"
+    increment="0.125"
+    initial_value="160"
+    label="Objects:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    max_val="2"
+    name="ObjectMeshDetail"
+    show_text="false"
+    top_delta="16"
+    width="300">
+    <slider.commit_callback
+      function="Pref.UpdateSliderText"
+      parameter="ObjectMeshDetailText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="ObjectMeshDetailText"
+    top_delta="0"
+    left_delta="304"
+    width="128">
+       Low
+  </text>
+
+  <slider
+    control_name="RenderFlexTimeFactor"
+    follows="left|top"
+    height="16"
+    initial_value="160"
+    label="Flexiprims:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    name="FlexibleMeshDetail"
+    show_text="false"
+    top_delta="16"
+    width="300">
+    <slider.commit_callback
+   function="Pref.UpdateSliderText"
+      parameter="FlexibleMeshDetailText" />
+  </slider>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="FlexibleMeshDetailText"
+    top_delta="0"
+    left_delta="304"
+    width="128">
+       Low
+  </text>
+
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    name="ShadersText"
+    top_delta="20"
+    left="5"
+    width="128">
+     Hardware
+  </text>
+
+  <slider
+    control_name="TextureMemory"
+    decimal_digits="0"
+    follows="left|top"
+    height="16"
+    increment="16"
+    initial_value="32"
+    label="Texture Memory (MB):"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    max_val="4096"
+    name="GraphicsCardTextureMemory"
+    tool_tip="Amount of memory to allocate for textures. Defaults to video card memory. Reducing this may improve performance but may also make textures blurry."
+    top_delta="16"
+    width="335" />
+
+  <slider
+    control_name="RenderFogRatio"
+    follows="left|top"
+    height="16"
+    initial_value="4"
+    decimal_digits="1"
+    label="Fog Distance Ratio:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    name="fog"
+    min_val="0.5"
+    max_val="10"
+    increment="0.1"
+    top_delta="16"
+    width="332" />
+
+  <slider
+    control_name="RenderGamma"
+    follows="left|top"
+    height="16"
+    initial_value="1"
+    decimal_digits="2"
+    label="Gamma:"
+    label_width="185"
+    layout="topleft"
+    left="30"
+    name="gamma"
+    min_val="0"
+    max_val="2"
+    increment="0.01"
+    top_delta="16"
+    width="332" />
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    left="30"
+    name="(brightness, lower is brighter)"
+    top_delta="16"
+    width="230">
+      (0 = default brightness, lower = brighter)
+  </text>
+
+  <check_box
+    control_name="RenderAnisotropic"
+    height="16"
+    label="Anisotropic Filtering (slower when enabled)"
+    layout="topleft"
+    left="30"
+    name="ani"
+    top_delta="16"
+    width="256" />
+
+  <check_box
+    control_name="RenderVBOEnable"
+    height="16"
+    initial_value="true"
+    label="Enable OpenGL Vertex Buffer Objects"
+    layout="topleft"
+    left="30"
+    top_delta="16"
+    name="vbo"
+    tool_tip="Enabling this on modern hardware gives a performance gain.  However, older hardware often has poor implementations of VBOs and you may get crashes when this is enabled."
+    width="315" />
+
+  <check_box
+    control_name="RenderCompressTextures"
+    height="16"
+    initial_value="true"
+    label="Enable Texture Compression (requires restart)"
+    layout="topleft"
+    left="30"
+    top_delta="16"
+    name="texture compression"
+    tool_tip="Compresses textures in video memory, allowing for higher resolution textures to be loaded at the cost of some color quality."
+    width="315" />
+
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="20"
+    layout="topleft"
+    left="30"
+    name="antialiasing label"
+    top_delta="20"
+    width="100">
+      Antialiasing:
+  </text>
+  <combo_box
+    control_name="RenderFSAASamples"
+    height="20"
+    initial_value="false"
+    label="Antialiasing"
+    layout="topleft"
+    left_pad="40"
+    name="fsaa"
+    top_delta="0"
+    width="90">
+    <combo_box.item
+      label="Disabled"
+      name="FSAADisabled"
+      value="0" />
+    <combo_box.item
+      label="2x"
+      name="2x"
+      value="2" />
+    <combo_box.item
+     label="4x"
+     name="4x"
+     value="4" />
+    <combo_box.item
+     label="8x"
+     name="8x"
+     value="8" />
+    <combo_box.item
+     label="16x"
+     name="16x"
+     value="16" />
+  </combo_box>
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="16"
+    layout="topleft"
+    left_pad="10"
+    name="antialiasing restart"
+    top_delta="0"
+    width="190">
+     (requires viewer restart)
+  </text>
+<!-- End of Advanced Settings block -->
+
+</floater>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 756c765bbd..5d4bfdd17f 100755
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -10,7 +10,6 @@
  top="1"
  width="517">
 
-<!-- This block is always displayed -->
   <text
     follows="top|left|right"
     height="16"
@@ -229,1002 +228,105 @@
       function="Pref.QualityPerformance"/>
   </slider>
 
-<!--End of block that is always displayed -->
-
-  <tab_container
-    follows="left|top"
-    layout="topleft"
-    height="385"
-    halign="center"
-    left="0"
-    name="PreferencesGraphicsTabs"
-    tab_max_width="300"
-    tab_min_width="40"
-    tab_position="top"
-    tab_height="25"
-    top="85"
-    width="517">
-
 <!-- This block shows Basic Settings -->
-    <panel
-      border="false"
-      follows="all"
-      label="BASIC"
-      layout="topleft"
-      mouse_opaque="false"
-      name="Basic"
-      top="10"
-      width="517">
-
-      <button
-        follows="top|left"
-        height="23"
-        label="Reset all to recommended settings"
-        layout="topleft"
-        left="5"
-        name="Defaults"
-        top_delta="5"
-        width="250">
-        <button.commit_callback
-          function="Pref.HardwareDefaults" />
-      </button>
 
-      <slider
-        control_name="RenderFarClip"
-        decimal_digits="0"
-        follows="left|top"
-        height="16"
-        increment="8"
-        initial_value="160"
-        label="Draw distance:"
-        label_width="90"
-        layout="topleft"
-        left="30"
-        min_val="64"
-        max_val="512"
-        name="DrawDistance"
-        top_delta="40"
-        width="330" />
-      <text
-        type="string"
-        length="1"
-        follows="left|top"
-        height="12"
-        layout="topleft"
-        left_delta="330"
-        name="DrawDistanceMeterText2"
-        top_delta="0"
-        width="128">
-         m
-      </text>
+  <button
+    follows="top|left"
+    height="23"
+    label="Reset all to recommended settings"
+    layout="topleft"
+    left="5"
+    name="Defaults"
+    top_delta="30"
+    width="250">
+    <button.commit_callback
+      function="Pref.HardwareDefaults" />
+  </button>
 
-      <check_box
-        control_name="WindLightUseAtmosShaders"
-        height="16"
-        initial_value="true"
-        label="Atmospheric shaders"
-        layout="topleft"
-        left="30"
-        name="WindLightUseAtmosShaders"
-        top_delta="20"
-        width="280">
-        <check_box.commit_callback
-          function="Pref.VertexShaderEnable" />
-      </check_box>
+  <slider
+    control_name="RenderFarClip"
+    decimal_digits="0"
+    follows="left|top"
+    height="16"
+    increment="8"
+    initial_value="160"
+    label="Draw distance:"
+    label_width="90"
+    layout="topleft"
+    left="30"
+    min_val="64"
+    max_val="512"
+    name="DrawDistance"
+    top_delta="40"
+    width="330" />
+  <text
+    type="string"
+    length="1"
+    follows="left|top"
+    height="12"
+    layout="topleft"
+    left_delta="330"
+    name="DrawDistanceMeterText2"
+    top_delta="0"
+    width="128">
+     m
+  </text>
 
-      <check_box
-        control_name="RenderDeferred"
-        height="16"
-        initial_value="true"
-        label="Advanced Lighting Model"
-        layout="topleft"
-        left="50"
-        name="UseLightShaders"
-        top_delta="20"
-        width="256">
-        <check_box.commit_callback
-          function="Pref.VertexShaderEnable" />
-      </check_box>
+  <check_box
+    control_name="WindLightUseAtmosShaders"
+    height="16"
+    initial_value="true"
+    label="Atmospheric shaders"
+    layout="topleft"
+    left="30"
+    name="WindLightUseAtmosShaders"
+    top_delta="20"
+    width="280">
+    <check_box.commit_callback
+      function="Pref.VertexShaderEnable" />
+  </check_box>
+
+  <check_box
+    control_name="RenderDeferred"
+    height="16"
+    initial_value="true"
+    label="Advanced Lighting Model"
+    layout="topleft"
+    left="50"
+    name="UseLightShaders"
+    top_delta="20"
+    width="256">
+    <check_box.commit_callback
+      function="Pref.VertexShaderEnable" />
+  </check_box>
 
-    </panel>
 <!-- End of Basic Settings block -->
 
-<!-- This block shows Advanced Settings -->
-    <panel
-      border="false"
-      follows="all"
-      label="ADVANCED"
-      layout="topleft"
-      mouse_opaque="false"
-      name="Advanced"
-      top_delta="10"
-      width="517">
-
-      <scroll_container
-        follows="top|left"
-        height="255"
-        label="CustomGraphics"
-        layout="topleft"
-        left="5"
-        name="CustomGraphics Scroll"
-        reserve_scroll_corner="true"
-        top_delta="20"
-        width="500">
-
-        <panel
-          border="false"
-          follows="top|left"
-          height="700"
-          label="CustomGraphics"
-          layout="topleft"
-          left="5"
-          name="Advanced Panel"
-          top_delta="0"
-          width="485">
-
-          <button
-            follows="top|left"
-            height="23"
-            label="Reset all to recommended settings"
-            layout="topleft"
-            left="0"
-            name="Defaults"
-            top="0"
-            width="250">
-            <button.commit_callback
-              function="Pref.HardwareDefaults" />
-          </button>
-
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="GeneralText"
-            top_delta="25"
-            left="5"
-            width="128">
-             General
-          </text>
-
-          <slider
-            control_name="RenderFarClip"
-            decimal_digits="0"
-            follows="left|top"
-            height="16"
-            increment="8"
-            initial_value="160"
-            label="Draw distance:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            min_val="64"
-            max_val="512"
-            name="DrawDistance"
-            top_delta="16"
-            width="330" />
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="DrawDistanceMeterText2"
-            top_delta="0"
-            left_delta="330"
-            width="102">
-              m
-          </text> 
-
-          <slider
-            control_name="RenderMaxPartCount"
-            decimal_digits="0"
-            follows="left|top"
-            height="16"
-            increment="256"
-            initial_value="4096"
-            label="Max. particle count:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            max_val="8192"
-            name="MaxParticleCount"
-            top_delta="16"
-            width="336" />
-
-          <slider
-            control_name="RenderGlowResolutionPow"
-            decimal_digits="0"
-            follows="left|top"
-            height="16"
-            increment="1"
-            initial_value="8"
-            label="Post process quality:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            min_val="8"
-            max_val="9"
-            name="RenderPostProcess"
-            show_text="false"
-            top_delta="16"
-            width="300">
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="PostProcessText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="PostProcessText"
-            top_delta="0"
-            left_delta="304"
-            width="128">
-               Low
-          </text>
-
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="AvatarText"
-            top_delta="20"
-            left="5"
-            width="128">
-             Avatar
-          </text>
-
-          <slider
-            control_name="MaximumARC"
-            follows="left|top"
-            height="16"
-            initial_value="101"
-            increment="1"
-            label="Maximum ARC:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            min_val="1"
-            max_val="101"
-            name="MaximumARC"
-            show_text="false"
-            top_delta="16"
-            width="300">
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="MaximumARCText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            top_delta="0"
-            left_delta="304"
-            text_readonly_color="LabelDisabledColor"
-            name="MaximumARCText"
-            width="128">
-               0
-          </text>
-
-          <slider
-            control_name="RenderAvatarMaxVisible"
-            decimal_digits="0"
-            follows="left|top"
-            height="16"
-            increment="1"
-            initial_value="12"
-            label="Max. # of non-impostors:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            min_val="1"
-            max_val="66"
-            name="MaxNumberAvatarDrawn"
-            show_text="false"
-            top_delta="16"
-            width="300">
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="ImpostorsText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            top_delta="0"
-            left_delta="304"
-            text_readonly_color="LabelDisabledColor"
-            name="ImpostorsText"
-            width="128">
-               0
-          </text>
-
-          <slider
-            control_name="RenderAvatarLODFactor"
-            follows="left|top"
-            height="16"
-            increment="0.125"
-            initial_value="160"
-            label="Detail:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            name="AvatarMeshDetail"
-            show_text="false"
-            top_delta="16"
-            width="300">
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="AvatarMeshDetailText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="AvatarMeshDetailText"
-            top_delta="0"
-            left_delta="304"
-            width="128">
-             Low
-          </text>
-
-          <slider
-            control_name="RenderAvatarPhysicsLODFactor"
-            follows="left|top"
-            height="16"
-            initial_value="100"
-            increment=".05"
-            label="Physics:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            name="AvatarPhysicsDetail"
-            show_text="false"
-            top_delta="16"
-            width="300">
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="AvatarPhysicsDetailText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            top_delta="0"
-            left_delta="304"
-            name="AvatarPhysicsDetailText"
-            width="128">
-               Low
-          </text>
-
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="ShadersText"
-            top_delta="20"
-            left="5"
-            width="128">
-             Shaders
-          </text>
-
-          <check_box
-            control_name="RenderTransparentWater"
-            height="16"
-            initial_value="true"
-            label="Transparent Water"
-            layout="topleft"
-            left="30"
-            name="TransparentWater"
-            top_delta="16"
-            width="300" />
-
-          <check_box
-            control_name="RenderObjectBump"
-            height="16"
-            initial_value="true"
-            label="Bump mapping and shiny"
-            layout="topleft"
-            left="30"
-            name="BumpShiny"
-            top_delta="16"
-            width="300">
-            <check_box.commit_callback
-              function="Pref.VertexShaderEnable" />
-          </check_box>
-
-          <check_box
-            control_name="RenderLocalLights"
-            height="16"
-            initial_value="true"
-            label="Local Lights"
-            layout="topleft"
-            left="30"
-            name="LocalLights"
-            top_delta="16"
-            width="300" />
-
-          <check_box
-            control_name="VertexShaderEnable"
-            height="16"
-            initial_value="true"
-            label="Basic shaders"
-            layout="topleft"
-            left="30"
-            name="BasicShaders"
-            tool_tip="Disabling this option may prevent some graphics card drivers from crashing"
-            top_delta="16"
-            width="300">
-            <check_box.commit_callback
-              function="Pref.VertexShaderEnable" />
-          </check_box>
-
-          <slider
-            control_name="RenderTerrainDetail"
-            follows="left|top"
-            height="16"
-            label="Terrain Detail:"
-            label_width="165"
-            layout="topleft"
-            left="50"
-            show_text="false"
-            initial_value="0"
-            increment="1"
-            min_val="0"
-            max_val="1"
-            name="TerrainDetail"
-            top_delta="16"
-            width="280" >
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="TerrainDetail" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            top_delta="0"
-            left_delta="284"
-            name="TerrainDetailText"
-            text_readonly_color="LabelDisabledColor"
-            width="128">
-               Low
-          </text>
-
-          <check_box
-            control_name="RenderAvatarVP"
-            height="16"
-            initial_value="true"
-            label="Avatar Hardware skinning"
-            layout="topleft"
-            left="50"
-            name="AvatarVertexProgram"
-            top_delta="16"
-            width="280">
-            <check_box.commit_callback
-              function="Pref.VertexShaderEnable" />
-          </check_box>
-
-          <check_box
-            control_name="RenderAvatarCloth"
-            height="16"
-            initial_value="true"
-            label="Avatar cloth"
-            layout="topleft"
-            left="50"
-            name="AvatarCloth"
-            top_delta="16"
-            width="280" />
-
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="ReflectionsText"
-            text_readonly_color="LabelDisabledColor"
-            top_delta="16"
-            left="50"
-            width="128">
-               Water Reflections:
-          </text>
-          <combo_box
-            control_name="RenderReflectionDetail"
-            height="18"
-            layout="topleft"
-            left_delta="170"
-            top_delta="0"
-            name="Reflections"
-            width="150">
-              <combo_box.item
-                label="Minimal"
-                name="0"
-                value="0"/>
-              <combo_box.item
-                label="Terrain and trees"
-                name="1"
-                value="1"/>
-              <combo_box.item
-                label="All static objects"
-                name="2"
-                value="2"/>
-              <combo_box.item
-                label="All avatars and objects"
-                name="3"
-                value="3"/>
-              <combo_box.item
-                label="Everything"
-                name="4"
-                value="4"/>
-          </combo_box>
-
-          <check_box
-            control_name="WindLightUseAtmosShaders"
-            height="16"
-            initial_value="true"
-            label="Atmospheric shaders"
-            layout="topleft"
-            left="50"
-            name="WindLightUseAtmosShaders2"
-            top_delta="16"
-            width="280">
-            <check_box.commit_callback
-              function="Pref.VertexShaderEnable" />
-          </check_box>
-
-          <slider
-            control_name="WLSkyDetail"
-            decimal_digits="0"
-            follows="left|top"
-            height="16"
-            increment="8"
-            initial_value="160"
-            label="Sky:"
-            label_width="145"
-            layout="topleft"
-            left="70"
-            min_val="16"
-            max_val="128"
-            name="SkyMeshDetail"
-            show_text="false"
-            top_delta="16"
-            width="260">
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="SkyMeshDetailText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            left_delta="264"
-            name="SkyMeshDetailText"
-            text_readonly_color="LabelDisabledColor"
-            top_delta="0"
-            width="128">
-               Low
-          </text>
-
-          <check_box
-            control_name="RenderDeferred"
-            height="16"
-            initial_value="true"
-            label="Advanced Lighting Model"
-            layout="topleft"
-            left="70"
-            name="UseLightShaders2"
-            top_delta="16"
-            width="260">
-            <check_box.commit_callback
-              function="Pref.VertexShaderEnable" />
-          </check_box>
-
-          <check_box
-            control_name="RenderDeferredSSAO"
-            height="16"
-            initial_value="true"
-            label="Ambient Occlusion"
-            layout="topleft"
-            left="90"
-            name="UseSSAO"
-            top_delta="16"
-            width="240">
-            <check_box.commit_callback
-              function="Pref.VertexShaderEnable" />
-          </check_box>
-
-          <check_box
-            control_name="RenderDepthOfField"
-            height="16"
-            initial_value="true"
-            label="Depth of Field"
-            layout="topleft"
-            left="90"
-            name="UseDoF"
-            top_delta="16"
-            width="240">
-            <check_box.commit_callback
-              function="Pref.VertexShaderEnable" />
-          </check_box>
-
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            left="90"
-            name="RenderShadowDetailText"
-            text_readonly_color="LabelDisabledColor"
-            top_delta="16"
-            width="128">
-              Shadows:
-          </text>
-          <combo_box
-           control_name="RenderShadowDetail"
-           height="18"
-           layout="topleft"
-           left_delta="130"
-           top_delta="0" 
-           name="ShadowDetail"
-           width="150">
-             <combo_box.item
-               label="None"
-               name="0"
-               value="0"/>
-             <combo_box.item
-               label="Sun/Moon"
-               name="1"
-               value="1"/>
-             <combo_box.item
-               label="Sun/Moon + Projectors"
-               name="2"
-               value="2"/>
-          </combo_box>
-
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="AvatarText"
-            top_delta="20"
-            left="5"
-            width="128">
-             Mesh
-          </text>
-
-          <slider
-            control_name="RenderTerrainLODFactor"
-            follows="left|top"
-            height="16"
-            increment="0.125"
-            initial_value="160"
-            label="Terrain Mesh Detail:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            min_val="1"
-            max_val="2"
-            name="TerrainMeshDetail"
-            show_text="false"
-            top_delta="16"
-            width="300">
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="TerrainMeshDetailText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="TerrainMeshDetailText"
-            text_readonly_color="LabelDisabledColor"
-            top_delta="0"
-            left_delta="304"
-            width="128">
-               Low
-          </text>
-
-          <slider
-            control_name="RenderTreeLODFactor"
-            follows="left|top"
-            height="16"
-            increment="0.125"
-            initial_value="160"
-            label="Trees:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            name="TreeMeshDetail"
-            show_text="false"
-            top_delta="16"
-            width="300">
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="TreeMeshDetailText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="TreeMeshDetailText"
-            top_delta="0"
-            left_delta="304"
-            width="128">
-               Low
-          </text>
-
-          <slider
-            control_name="RenderVolumeLODFactor"
-            follows="left|top"
-            height="16"
-            increment="0.125"
-            initial_value="160"
-            label="Objects:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            max_val="2"
-            name="ObjectMeshDetail"
-            show_text="false"
-            top_delta="16"
-            width="300">
-            <slider.commit_callback
-              function="Pref.UpdateSliderText"
-              parameter="ObjectMeshDetailText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="ObjectMeshDetailText"
-            top_delta="0"
-            left_delta="304"
-            width="128">
-               Low
-          </text>
-
-          <slider
-            control_name="RenderFlexTimeFactor"
-            follows="left|top"
-            height="16"
-            initial_value="160"
-            label="Flexiprims:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            name="FlexibleMeshDetail"
-            show_text="false"
-            top_delta="16"
-            width="300">
-            <slider.commit_callback
-	          function="Pref.UpdateSliderText"
-              parameter="FlexibleMeshDetailText" />
-          </slider>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="FlexibleMeshDetailText"
-            top_delta="0"
-            left_delta="304"
-            width="128">
-               Low
-          </text>
-
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            name="ShadersText"
-            top_delta="20"
-            left="5"
-            width="128">
-             Hardware
-          </text>
-
-          <slider
-            control_name="TextureMemory"
-            decimal_digits="0"
-            follows="left|top"
-            height="16"
-            increment="16"
-            initial_value="32"
-            label="Texture Memory (MB):"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            max_val="4096"
-            name="GraphicsCardTextureMemory"
-            tool_tip="Amount of memory to allocate for textures. Defaults to video card memory. Reducing this may improve performance but may also make textures blurry."
-            top_delta="16"
-            width="335" />
-
-          <slider
-            control_name="RenderFogRatio"
-            follows="left|top"
-            height="16"
-            initial_value="4"
-            decimal_digits="1"
-            label="Fog Distance Ratio:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            name="fog"
-            min_val="0.5"
-            max_val="10"
-            increment="0.1"
-            top_delta="16"
-            width="332" />
-
-          <slider
-            control_name="RenderGamma"
-            follows="left|top"
-            height="16"
-            initial_value="1"
-            decimal_digits="2"
-            label="Gamma:"
-            label_width="185"
-            layout="topleft"
-            left="30"
-            name="gamma"
-            min_val="0"
-            max_val="2"
-            increment="0.01"
-            top_delta="16"
-            width="332" />
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            left="30"
-            name="(brightness, lower is brighter)"
-            top_delta="16"
-            width="230">
-              (0 = default brightness, lower = brighter)
-          </text>
-
-          <check_box
-            control_name="RenderAnisotropic"
-            height="16"
-            label="Anisotropic Filtering (slower when enabled)"
-            layout="topleft"
-            left="30"
-            name="ani"
-            top_delta="16"
-            width="256" />
-
-          <check_box
-            control_name="RenderVBOEnable"
-            height="16"
-            initial_value="true"
-            label="Enable OpenGL Vertex Buffer Objects"
-            layout="topleft"
-            left="30"
-            top_delta="16"
-            name="vbo"
-            tool_tip="Enabling this on modern hardware gives a performance gain.  However, older hardware often has poor implementations of VBOs and you may get crashes when this is enabled."
-            width="315" />
-
-          <check_box
-            control_name="RenderCompressTextures"
-            height="16"
-            initial_value="true"
-            label="Enable Texture Compression (requires restart)"
-            layout="topleft"
-            left="30"
-            top_delta="16"
-            name="texture compression"
-            tool_tip="Compresses textures in video memory, allowing for higher resolution textures to be loaded at the cost of some color quality."
-            width="315" />
-
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="20"
-            layout="topleft"
-            left="30"
-            name="antialiasing label"
-            top_delta="20"
-            width="100">
-              Antialiasing:
-          </text>
-          <combo_box
-            control_name="RenderFSAASamples"
-            height="20"
-            initial_value="false"
-            label="Antialiasing"
-            layout="topleft"
-            left_pad="40"
-            name="fsaa"
-            top_delta="0"
-            width="90">
-            <combo_box.item
-              label="Disabled"
-              name="FSAADisabled"
-              value="0" />
-            <combo_box.item
-              label="2x"
-              name="2x"
-              value="2" />
-            <combo_box.item
-             label="4x"
-             name="4x"
-             value="4" />
-            <combo_box.item
-             label="8x"
-             name="8x"
-             value="8" />
-            <combo_box.item
-             label="16x"
-             name="16x"
-             value="16" />
-          </combo_box>
-          <text
-            type="string"
-            length="1"
-            follows="left|top"
-            height="16"
-            layout="topleft"
-            left_pad="10"
-            name="antialiasing restart"
-            top_delta="0"
-            width="190">
-             (requires viewer restart)
-          </text>
-        </panel>
-      </scroll_container>
-    </panel>
-<!-- End of Advanced Settings block -->
+  <button
+    follows="left|bottom"
+    height="23"
+    label="Advanced Settings..."
+    layout="topleft"
+    left="10"
+    name="AdvancedSettings"
+    top_delta="60"
+    width="200">
+    <button.commit_callback
+      function="Pref.Advanced"
+      parameter="advanced" />
+  </button>
 
-    <button
-      follows="left|bottom"
-      height="23"
-      label="Save settings as a preset..."
-      layout="topleft"
-      left="10"
-      name="PrefSaveButton"
-      top="295"
-      width="250">
-      <button.commit_callback
-        function="Pref.PrefSave"
-        parameter="graphic" />
-    </button>
-  </tab_container>
+  <button
+    follows="left|bottom"
+    height="23"
+    label="Save settings as a preset..."
+    layout="topleft"
+    left="10"
+    name="PrefSaveButton"
+    top="295"
+    width="200">
+    <button.commit_callback
+      function="Pref.PrefSave"
+      parameter="graphic" />
+  </button>
 </panel>
-- 
GitLab