From 4d9e7fa8c158a256f816f22b8223cf739d1f87f2 Mon Sep 17 00:00:00 2001 From: Siana Gearz Date: Thu, 12 May 2011 22:10:10 +0200 Subject: [PATCH] Deferred settings --- indra/newview/llpaneldisplay.cpp | 46 ++++++++++--- indra/newview/llpaneldisplay.h | 7 +- .../xui/en-us/panel_preferences_graphics1.xml | 65 ++++++++++++++----- 3 files changed, 92 insertions(+), 26 deletions(-) diff --git a/indra/newview/llpaneldisplay.cpp b/indra/newview/llpaneldisplay.cpp index 273e68fdb..77ee2e2c7 100644 --- a/indra/newview/llpaneldisplay.cpp +++ b/indra/newview/llpaneldisplay.cpp @@ -233,13 +233,21 @@ BOOL LLPanelDisplay::postBuild() mCtrlReflections = getChild("Reflections"); mCtrlReflections->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable); mCtrlReflections->setCallbackUserData(this); - mRadioReflectionDetail = getChild("ReflectionDetailRadio"); + mCtrlReflectionDetail = getChild("ReflectionDetailCombo"); // WindLight mCtrlWindLight = getChild("WindLightUseAtmosShaders"); mCtrlWindLight->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable); mCtrlWindLight->setCallbackUserData(this); + // Deferred + mCtrlDeferred = getChild("RenderDeferred"); + mCtrlDeferred->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable); + mCtrlDeferred->setCallbackUserData(this); + mCtrlSunShadow = getChild("RenderDeferredSunShadow"); + mCtrlSunShadow->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable); + mCtrlSunShadow->setCallbackUserData(this); + //---------------------------------------------------------------------------- // Enable Avatar Shaders mCtrlAvatarVP = getChild("AvatarVertexProgram"); @@ -391,6 +399,8 @@ void LLPanelDisplay::refresh() mWindLight = gSavedSettings.getBOOL("WindLightUseAtmosShaders"); mReflections = gSavedSettings.getBOOL("RenderWaterReflections"); mAvatarVP = gSavedSettings.getBOOL("RenderAvatarVP"); + mDeferred = gSavedSettings.getBOOL("RenderDeferred"); + mSunShadow = gSavedSettings.getBOOL("RenderDeferredSunShadow"); // reflection radio mReflectionDetail = gSavedSettings.getS32("RenderReflectionDetail"); @@ -464,10 +474,7 @@ void LLPanelDisplay::refreshEnabledState() bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump"); mCtrlBumpShiny->setEnabled(bumpshiny ? TRUE : FALSE); - for (S32 i = 0; i < mRadioReflectionDetail->getItemCount(); ++i) - { - mRadioReflectionDetail->setIndexEnabled(i, mCtrlReflections->get() && reflections); - } + mCtrlReflectionDetail->setEnabled(mCtrlReflections->get() && reflections); // Avatar Mode S32 max_avatar_shader = LLViewerShaderMgr::instance()->mMaxAvatarShaderLevel; @@ -483,6 +490,10 @@ void LLPanelDisplay::refreshEnabledState() mCtrlAvatarCloth->setEnabled(true); } + BOOL can_defer = gSavedSettings.getBOOL("RenderUseFBO"); + mCtrlDeferred->setEnabled(can_defer); + mCtrlSunShadow->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred")); + // Vertex Shaders // mCtrlShaderEnable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")); // [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) | Modified: RLVa-0.2.0a @@ -538,6 +549,11 @@ void LLPanelDisplay::disableUnavailableSettings() mCtrlAvatarCloth->setEnabled(FALSE); mCtrlAvatarCloth->setValue(FALSE); + + mCtrlDeferred->setEnabled(FALSE); + mCtrlDeferred->setValue(FALSE); + mCtrlSunShadow->setEnabled(FALSE); + mCtrlSunShadow->setValue(FALSE); } // disabled windlight @@ -575,6 +591,15 @@ void LLPanelDisplay::disableUnavailableSettings() mCtrlAvatarImpostors->setEnabled(FALSE); mCtrlAvatarImpostors->setValue(FALSE); } + // disabled deferred + if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred")) + { + mCtrlDeferred->setEnabled(FALSE); + mCtrlDeferred->setValue(FALSE); + mCtrlSunShadow->setEnabled(FALSE); + mCtrlSunShadow->setValue(FALSE); + } + } void LLPanelDisplay::setHiddenGraphicsState(bool isHidden) @@ -610,7 +635,7 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden) llassert(mRadioLightingDetail2 != NULL); llassert(mRadioTerrainDetail != NULL); - llassert(mRadioReflectionDetail != NULL); + llassert(mCtrlReflectionDetail != NULL); llassert(mMeshDetailText != NULL); llassert(mShaderText != NULL); @@ -633,7 +658,7 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden) mCtrlLODFactor->setVisible(!isHidden); mCtrlFlexFactor->setVisible(!isHidden); mCtrlTreeFactor->setVisible(!isHidden); - mCtrlAvatarFactor->setVisible(!isHidden); + mCtrlAvatarFactor->setVisible(!isHidden); mCtrlTerrainFactor->setVisible(!isHidden); mCtrlSkyFactor->setVisible(!isHidden); mCtrlMaxParticle->setVisible(!isHidden); @@ -657,7 +682,10 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden) mRadioLightingDetail2->setVisible(!isHidden); mRadioTerrainDetail->setVisible(!isHidden); - mRadioReflectionDetail->setVisible(!isHidden); + mCtrlReflectionDetail->setVisible(!isHidden); + + mCtrlDeferred->setVisible(!isHidden); + mCtrlSunShadow->setVisible(!isHidden); // text boxes mShaderText->setVisible(!isHidden); @@ -691,6 +719,8 @@ void LLPanelDisplay::cancel() gSavedSettings.setBOOL("WindLightUseAtmosShaders", mWindLight); gSavedSettings.setBOOL("RenderWaterReflections", mReflections); gSavedSettings.setBOOL("RenderAvatarVP", mAvatarVP); + gSavedSettings.setBOOL("RenderDeferred", mDeferred); + gSavedSettings.setBOOL("RenderDeferredSunShadow", mSunShadow); gSavedSettings.setS32("RenderReflectionDetail", mReflectionDetail); diff --git a/indra/newview/llpaneldisplay.h b/indra/newview/llpaneldisplay.h index 1aedee499..677f1086c 100644 --- a/indra/newview/llpaneldisplay.h +++ b/indra/newview/llpaneldisplay.h @@ -84,6 +84,7 @@ protected: LLComboBox *mCtrlFullScreen; // Fullscreen resolution LLCheckBoxCtrl *mCtrlAutoDetectAspect; // automatically detect aspect ratio LLComboBox *mCtrlAspectRatio; // user provided aspect ratio + LLComboBox *mCtrlReflectionDetail; LLCheckBoxCtrl *mCtrlWindowed; // windowed mode LLComboBox *mCtrlWindowSize; // window size for windowed mode @@ -110,12 +111,12 @@ protected: LLCheckBoxCtrl *mCtrlWindLight; LLCheckBoxCtrl *mCtrlAvatarVP; LLCheckBoxCtrl *mCtrlShaderEnable; + LLCheckBoxCtrl *mCtrlDeferred; + LLCheckBoxCtrl *mCtrlSunShadow; LLCheckBoxCtrl *mCtrlAvatarImpostors; LLCheckBoxCtrl *mCtrlAvatarCloth; LLRadioGroup *mRadioLightingDetail2; - LLRadioGroup *mRadioTerrainDetail; - LLRadioGroup *mRadioReflectionDetail; LLTextBox *mAspectRatioLabel1; LLTextBox *mDisplayResLabel; @@ -151,6 +152,8 @@ protected: BOOL mShaderEnable; BOOL mWindLight; BOOL mReflections; + BOOL mDeferred; + BOOL mSunShadow; BOOL mAvatarVP; S32 mReflectionDetail; diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml index e04fd72d1..cfca131fe 100644 --- a/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml @@ -1,6 +1,6 @@ -