Updated graphical options panel to work with new setting configuration.

This commit is contained in:
Shyotl
2011-05-21 00:13:38 -05:00
parent c029f00e12
commit 127dd659fa
4 changed files with 111 additions and 48 deletions

View File

@@ -230,11 +230,10 @@ BOOL LLPanelDisplay::postBuild()
//----------------------------------------------------------------------------
// Enable Reflections
mCtrlReflections = getChild<LLCheckBoxCtrl>("Reflections");
mCtrlReflections->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable);
mCtrlReflections->setCallbackUserData(this);
mCtrlReflectionDetail = getChild<LLComboBox>("ReflectionDetailCombo");
mCtrlReflectionDetail->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable);
mCtrlReflectionDetail->setCallbackUserData(this);
// WindLight
mCtrlWindLight = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
mCtrlWindLight->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable);
@@ -244,9 +243,12 @@ BOOL LLPanelDisplay::postBuild()
mCtrlDeferred = getChild<LLCheckBoxCtrl>("RenderDeferred");
mCtrlDeferred->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable);
mCtrlDeferred->setCallbackUserData(this);
mCtrlSunShadow = getChild<LLCheckBoxCtrl>("RenderDeferredSunShadow");
mCtrlSunShadow->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable);
mCtrlSunShadow->setCallbackUserData(this);
mCtrlDeferredGI = getChild<LLCheckBoxCtrl>("RenderDeferredGI");
mCtrlDeferredGI->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable);
mCtrlDeferredGI->setCallbackUserData(this);
mCtrlShadowDetail = getChild<LLComboBox>("ShadowDetailCombo");
mCtrlShadowDetail->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable);
mCtrlShadowDetail->setCallbackUserData(this);
//----------------------------------------------------------------------------
// Enable Avatar Shaders
@@ -306,6 +308,12 @@ BOOL LLPanelDisplay::postBuild()
mCtrlAvatarFactor->setCommitCallback(&LLPanelDisplay::updateSliderText);
mCtrlAvatarFactor->setCallbackUserData(mAvatarFactorText);
// Avatar physics detail slider
mCtrlAvatarPhysicsFactor = getChild<LLSliderCtrl>("AvatarPhysicsDetail");
mAvatarPhysicsFactorText = getChild<LLTextBox>("AvatarPhysicsDetailText");
mCtrlAvatarPhysicsFactor->setCommitCallback(&LLPanelDisplay::updateSliderText);
mCtrlAvatarPhysicsFactor->setCallbackUserData(mAvatarPhysicsFactorText);
// Terrain detail slider
mCtrlTerrainFactor = getChild<LLSliderCtrl>("TerrainMeshDetail");
mTerrainFactorText = getChild<LLTextBox>("TerrainMeshDetailText");
@@ -397,14 +405,15 @@ void LLPanelDisplay::refresh()
mBumpShiny = gSavedSettings.getBOOL("RenderObjectBump");
mShaderEnable = gSavedSettings.getBOOL("VertexShaderEnable");
mWindLight = gSavedSettings.getBOOL("WindLightUseAtmosShaders");
mReflections = gSavedSettings.getBOOL("RenderWaterReflections");
mAvatarVP = gSavedSettings.getBOOL("RenderAvatarVP");
mDeferred = gSavedSettings.getBOOL("RenderDeferred");
mSunShadow = gSavedSettings.getBOOL("RenderDeferredSunShadow");
mDeferredGI = gSavedSettings.getBOOL("RenderDeferredGI");
// reflection radio
mReflectionDetail = gSavedSettings.getS32("RenderReflectionDetail");
mShadowDetail = gSavedSettings.getS32("RenderShadowDetail");
// avatar settings
mAvatarImpostors = gSavedSettings.getBOOL("RenderUseImpostors");
mAvatarCloth = gSavedSettings.getBOOL("RenderAvatarCloth");
@@ -431,6 +440,7 @@ void LLPanelDisplay::refresh()
updateSliderText(mCtrlFlexFactor, mFlexFactorText);
updateSliderText(mCtrlTreeFactor, mTreeFactorText);
updateSliderText(mCtrlAvatarFactor, mAvatarFactorText);
updateSliderText(mCtrlAvatarPhysicsFactor, mAvatarPhysicsFactorText);
updateSliderText(mCtrlTerrainFactor, mTerrainFactorText);
updateSliderText(mCtrlPostProcess, mPostProcessText);
updateSliderText(mCtrlSkyFactor, mSkyFactorText);
@@ -468,13 +478,11 @@ void LLPanelDisplay::refreshEnabledState()
BOOL reflections = gSavedSettings.getBOOL("VertexShaderEnable")
&& gGLManager.mHasCubeMap
&& LLCubeMap::sUseCubeMaps;
mCtrlReflections->setEnabled(reflections);
mCtrlReflectionDetail->setEnabled(reflections);
// Bump & Shiny
bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump");
mCtrlBumpShiny->setEnabled(bumpshiny ? TRUE : FALSE);
mCtrlReflectionDetail->setEnabled(mCtrlReflections->get() && reflections);
// Avatar Mode
S32 max_avatar_shader = LLViewerShaderMgr::instance()->mMaxAvatarShaderLevel;
@@ -501,8 +509,9 @@ void LLPanelDisplay::refreshEnabledState()
mCtrlDeferred->setEnabled(can_defer);
mCtrlSunShadow->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred"));
mCtrlAvatarCloth->setValue(gSavedSettings.getBOOL("RenderAvatarVP")); //Enabling RenderDeferred changes this setting behind this floaters back.
mCtrlShadowDetail->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred"));
//GI won't do anything with shadows off, but disabling it here is less than intuitive. Ignore shadow setting for now.
mCtrlDeferredGI->setEnabled(mCtrlShadowDetail->getEnabled()/* && gSavedSettings.getS32("RenderShadowDetail") > 0*/);
// Vertex Shaders
// mCtrlShaderEnable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable"));
@@ -551,8 +560,8 @@ void LLPanelDisplay::disableUnavailableSettings()
mCtrlWindLight->setEnabled(FALSE);
mCtrlWindLight->setValue(FALSE);
mCtrlReflections->setEnabled(FALSE);
mCtrlReflections->setValue(FALSE);
mCtrlReflectionDetail->setEnabled(FALSE);
mCtrlReflectionDetail->setValue(FALSE);
mCtrlAvatarVP->setEnabled(FALSE);
mCtrlAvatarVP->setValue(FALSE);
@@ -562,8 +571,10 @@ void LLPanelDisplay::disableUnavailableSettings()
mCtrlDeferred->setEnabled(FALSE);
mCtrlDeferred->setValue(FALSE);
mCtrlSunShadow->setEnabled(FALSE);
mCtrlSunShadow->setValue(FALSE);
mCtrlDeferredGI->setEnabled(FALSE);
mCtrlDeferredGI->setValue(FALSE);
mCtrlShadowDetail->setEnabled(FALSE);
mCtrlShadowDetail->setValue(FALSE);
}
// disabled windlight
@@ -576,8 +587,8 @@ void LLPanelDisplay::disableUnavailableSettings()
// disabled reflections
if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderWaterReflections"))
{
mCtrlReflections->setEnabled(FALSE);
mCtrlReflections->setValue(FALSE);
mCtrlReflectionDetail->setEnabled(FALSE);
mCtrlReflectionDetail->setValue(FALSE);
}
// disabled av
@@ -606,8 +617,10 @@ void LLPanelDisplay::disableUnavailableSettings()
{
mCtrlDeferred->setEnabled(FALSE);
mCtrlDeferred->setValue(FALSE);
mCtrlSunShadow->setEnabled(FALSE);
mCtrlSunShadow->setValue(FALSE);
mCtrlDeferredGI->setEnabled(FALSE);
mCtrlDeferredGI->setValue(FALSE);
mCtrlShadowDetail->setEnabled(FALSE);
mCtrlShadowDetail->setValue(FALSE);
}
}
@@ -669,6 +682,7 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
mCtrlFlexFactor->setVisible(!isHidden);
mCtrlTreeFactor->setVisible(!isHidden);
mCtrlAvatarFactor->setVisible(!isHidden);
mCtrlAvatarPhysicsFactor->setVisible(!isHidden);
mCtrlTerrainFactor->setVisible(!isHidden);
mCtrlSkyFactor->setVisible(!isHidden);
mCtrlMaxParticle->setVisible(!isHidden);
@@ -678,12 +692,12 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
mFlexFactorText->setVisible(!isHidden);
mTreeFactorText->setVisible(!isHidden);
mAvatarFactorText->setVisible(!isHidden);
mAvatarPhysicsFactorText->setVisible(!isHidden);
mTerrainFactorText->setVisible(!isHidden);
mSkyFactorText->setVisible(!isHidden);
mPostProcessText->setVisible(!isHidden);
mCtrlBumpShiny->setVisible(!isHidden);
mCtrlReflections->setVisible(!isHidden);
mCtrlWindLight->setVisible(!isHidden);
mCtrlAvatarVP->setVisible(!isHidden);
mCtrlShaderEnable->setVisible(!isHidden);
@@ -695,7 +709,8 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
mCtrlReflectionDetail->setVisible(!isHidden);
mCtrlDeferred->setVisible(!isHidden);
mCtrlSunShadow->setVisible(!isHidden);
mCtrlDeferredGI->setVisible(!isHidden);
mCtrlShadowDetail->setVisible(!isHidden);
// text boxes
mShaderText->setVisible(!isHidden);
@@ -727,12 +742,13 @@ void LLPanelDisplay::cancel()
gSavedSettings.setBOOL("RenderObjectBump", mBumpShiny);
gSavedSettings.setBOOL("VertexShaderEnable", mShaderEnable);
gSavedSettings.setBOOL("WindLightUseAtmosShaders", mWindLight);
gSavedSettings.setBOOL("RenderWaterReflections", mReflections);
gSavedSettings.setBOOL("RenderAvatarVP", mAvatarVP);
gSavedSettings.setBOOL("RenderDeferred", mDeferred);
gSavedSettings.setBOOL("RenderDeferredSunShadow", mSunShadow);
gSavedSettings.setBOOL("RenderDeferredGI", mDeferredGI);
gSavedSettings.setS32("RenderReflectionDetail", mReflectionDetail);
gSavedSettings.setS32("RenderShadowDetail", mShadowDetail);
gSavedSettings.setBOOL("RenderUseImpostors", mAvatarImpostors);
gSavedSettings.setBOOL("RenderAvatarCloth", mAvatarCloth);
@@ -989,6 +1005,13 @@ void LLPanelDisplay::updateSliderText(LLUICtrl* ctrl, void* user_data)
return;
}
//Hack to display 'Off' for avatar physics slider.
if(slider->getName() == "AvatarPhysicsDetail" && !slider->getValueF32())
{
text_box->setText(std::string("Off"));
return;
}
// get range and points when text should change
F32 range = slider->getMaxValue() - slider->getMinValue();
llassert(range > 0);
@@ -1004,10 +1027,14 @@ void LLPanelDisplay::updateSliderText(LLUICtrl* ctrl, void* user_data)
{
text_box->setText(std::string("Mid"));
}
else
else if(slider->getValueF32() < slider->getMaxValue())
{
text_box->setText(std::string("High"));
}
else
{
text_box->setText(std::string("Max"));
}
}
void LLPanelDisplay::updateMeterText(LLUICtrl* ctrl, void* user_data)

View File

@@ -101,18 +101,19 @@ protected:
LLSliderCtrl *mCtrlFlexFactor; // Timeslice for flexible objects
LLSliderCtrl *mCtrlTreeFactor; // Control tree cutoff distance
LLSliderCtrl *mCtrlAvatarFactor; // LOD for avatars
LLSliderCtrl *mCtrlAvatarPhysicsFactor; // Physics LOD for avatars
LLSliderCtrl *mCtrlTerrainFactor; // LOD for terrain
LLSliderCtrl *mCtrlSkyFactor; // LOD for terrain
LLSliderCtrl *mCtrlMaxParticle; // Max Particle
LLSliderCtrl *mCtrlPostProcess; // Max Particle
LLCheckBoxCtrl *mCtrlBumpShiny;
LLCheckBoxCtrl *mCtrlReflections;
LLCheckBoxCtrl *mCtrlWindLight;
LLCheckBoxCtrl *mCtrlAvatarVP;
LLCheckBoxCtrl *mCtrlShaderEnable;
LLCheckBoxCtrl *mCtrlDeferred;
LLCheckBoxCtrl *mCtrlSunShadow;
LLCheckBoxCtrl *mCtrlDeferredGI;
LLComboBox *mCtrlShadowDetail;
LLCheckBoxCtrl *mCtrlAvatarImpostors;
LLCheckBoxCtrl *mCtrlAvatarCloth;
LLRadioGroup *mRadioLightingDetail2;
@@ -136,6 +137,7 @@ protected:
LLTextBox *mFlexFactorText;
LLTextBox *mTreeFactorText;
LLTextBox *mAvatarFactorText;
LLTextBox *mAvatarPhysicsFactorText;
LLTextBox *mTerrainFactorText;
LLTextBox *mSkyFactorText;
LLTextBox *mPostProcessText;
@@ -151,12 +153,12 @@ protected:
BOOL mBumpShiny;
BOOL mShaderEnable;
BOOL mWindLight;
BOOL mReflections;
BOOL mDeferred;
BOOL mSunShadow;
BOOL mDeferredGI;
BOOL mAvatarVP;
S32 mReflectionDetail;
S32 mShadowDetail;
BOOL mAvatarImpostors;
BOOL mAvatarCloth;

View File

@@ -496,7 +496,9 @@ BOOL LLPhysicsMotionController::onUpdate(F32 time, U8* joint_mask)
{
// Skip if disabled globally.
static const LLCachedControl<bool> avatar_physics("AvatarPhysics",false);
if (!avatar_physics || (!((LLVOAvatar*)mCharacter)->isSelf() && !((LLVOAvatar*)mCharacter)->mSupportsPhysics))
bool supports_physics = !avatar_physics || (!((LLVOAvatar*)mCharacter)->isSelf() && !((LLVOAvatar*)mCharacter)->mSupportsPhysics);
//Treat lod 0 as AvatarPhyiscs:FALSE. AvatarPhyiscs setting is superfluous unless we decide to hook it into param sending.
if (supports_physics || !LLVOAvatar::sPhysicsLODFactor)
{
if(!mIsDefault)
{
@@ -507,6 +509,7 @@ BOOL LLPhysicsMotionController::onUpdate(F32 time, U8* joint_mask)
}
mCharacter->updateVisualParams();
}
if(!supports_physics) //Only use emerald physics if avatarphysiscs is really off, or the client doesn't seem to support new physics.
((LLVOAvatar*)mCharacter)->idleUpdateBoobEffect(); //Fall back to emerald physics
return TRUE;
}

View File

@@ -191,37 +191,35 @@
initial_value="true" label="Deferred Shading" left_delta="0"
mouse_opaque="true" name="RenderDeferred" radio_style="false"
width="256" />
<check_box bottom_delta="-17" control_name="RenderDeferredSunShadow" enabled="true"
<check_box bottom_delta="-17" control_name="RenderDeferredGI" enabled="true"
follows="left|top" font="SansSerifSmall" height="16"
initial_value="true" label="Primary Shadows" left_delta="0"
mouse_opaque="true" name="RenderDeferredSunShadow" radio_style="false"
initial_value="true" label="Global Illumination (Experimental!)" left_delta="0"
mouse_opaque="true" name="RenderDeferredGI" radio_style="false"
width="256" />
<check_box bottom_delta="-17" control_name="RenderWaterReflections" enabled="true"
follows="left|top" font="SansSerifSmall" height="16"
initial_value="true" label="Water Reflections" left_delta="0"
mouse_opaque="true" name="Reflections" radio_style="false" width="256" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-17" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="12"
left="10" mouse_opaque="true" name="ReflectionDetailText" v_pad="0"
left="15" mouse_opaque="true" name="ReflectionDetailText" v_pad="0"
width="128">
Reflection Detail:
Water Reflections:
</text>
<combo_box bottom_delta="-20" control_name="RenderReflectionDetail" enabled = "true" follows="left|top" label="Reflection Detail"
left_delta="-2" mouse_opaque="true" name="ReflectionDetailCombo" width="160" height="16">
<combo_item type="string" length="1" name="0" value="0">
<combo_item type="string" length="1" name="0" value="0">
Disabled
</combo_item>
<combo_item type="string" length="1" name="1" value="1">
Terrain and Trees
</combo_item>
<combo_item type="string" length="1" name="1" value="1">
<combo_item type="string" length="1" name="2" value="2">
All Static Objects
</combo_item>
<combo_item type="string" length="1" name="2" value="2">
<combo_item type="string" length="1" name="3" value="3">
All Avatars and Objects
</combo_item>
<combo_item type="string" length="1" name="3" value="3">
<combo_item type="string" length="1" name="4" value="4">
Everything
</combo_item>
</combo_box>
<!--radio_group bottom_delta="-73" control_name="RenderReflectionDetail" draw_border="false"
@@ -245,6 +243,27 @@
Everything
</radio_item>
</radio_group-->
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-17" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="12"
left="15" mouse_opaque="true" name="ShadowDetailText" v_pad="0"
width="128">
Deferred Shadows:
</text>
<combo_box bottom_delta="-20" control_name="RenderShadowDetail" enabled = "true" follows="left|top" label="Shadow Detail"
left_delta="-2" mouse_opaque="true" name="ShadowDetailCombo" width="160" height="16">
<combo_item type="string" length="1" name="0" value="0">
Disabled
</combo_item>
<combo_item type="string" length="1" name="1" value="1">
Sun shadows
</combo_item>
<combo_item type="string" length="1" name="2" value="2">
Sun and spotlight shadows
</combo_item>
</combo_box>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-313" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
@@ -320,6 +339,11 @@
increment="0.125" initial_val="160" label=" Avatars:"
label_width="140" left_delta="0" max_val="1" min_val="0"
mouse_opaque="true" name="AvatarMeshDetail" show_text="false" width="223" />
<slider bottom_delta="-20" can_edit_text="false" control_name="RenderAvatarPhysicsLODFactor"
decimal_digits="3" enabled="true" follows="left|top" height="16"
increment="0.1" initial_val="160" label=" Avatar Physics:"
label_width="140" left_delta="0" max_val="1" min_val="0"
mouse_opaque="true" name="AvatarPhysicsDetail" show_text="false" width="223" />
<slider bottom_delta="-20" can_edit_text="false" control_name="RenderTerrainLODFactor"
decimal_digits="3" enabled="true" follows="left|top" height="16"
increment="0.125" initial_val="160" label=" Terrain:"
@@ -364,6 +388,13 @@
name="AvatarMeshDetailText" v_pad="0" width="128">
Low
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" enabled="true"
follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
height="12" left_delta="0" mouse_opaque="true"
name="AvatarPhysicsDetailText" v_pad="0" width="128">
Off
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom_delta="-20" drop_shadow_visible="true" enabled="true"
follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
@@ -379,7 +410,7 @@
Low
</text>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-331" drop_shadow_visible="true" enabled="true" follows="left|top"
bottom="-352" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="12"
left="210" mouse_opaque="true" name="LightingDetailText" v_pad="0"
width="128">
@@ -398,7 +429,7 @@
</radio_item>
</radio_group>
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-331" drop_shadow_visible="true" enabled="true" follows="left|top"
bottom="-352" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerifSmall" h_pad="0" halign="left" height="12" left="360"
mouse_opaque="true" name="TerrainDetailText" v_pad="0" width="128">
Terrain Detail: