STORM-2082 Attempt to put advanced settings into separate floater

master
Jonathan Yap 2015-02-11 13:28:39 -05:00
parent 4e1bd474f2
commit b4c99cbb0a
5 changed files with 1078 additions and 1017 deletions

View File

@ -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)

View File

@ -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:

View File

@ -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>);

View File

@ -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>