From 7a907c444875eea82e0410be704add0b83b8a992 Mon Sep 17 00:00:00 2001 From: Shyotl Date: Sun, 22 May 2011 00:11:12 -0500 Subject: [PATCH] RenderLightingDetail renamed to RenderLocalLights. Toggling light level should work now. RenderDeferredFullscreenLights removed. --- indra/newview/app_settings/high_graphics.xml | 2 +- indra/newview/app_settings/low_graphics.xml | 2 +- indra/newview/app_settings/mid_graphics.xml | 2 +- indra/newview/app_settings/settings.xml | 21 ++++++-- indra/newview/app_settings/ultra_graphics.xml | 2 +- indra/newview/llpaneldisplay.cpp | 3 +- indra/newview/llpaneldisplay.h | 2 +- indra/newview/llviewercontrol.cpp | 7 +++ indra/newview/pipeline.cpp | 52 +++++++------------ .../xui/en-us/panel_preferences_graphics1.xml | 2 +- 10 files changed, 52 insertions(+), 43 deletions(-) diff --git a/indra/newview/app_settings/high_graphics.xml b/indra/newview/app_settings/high_graphics.xml index 6368f7099..2e939f47e 100644 --- a/indra/newview/app_settings/high_graphics.xml +++ b/indra/newview/app_settings/high_graphics.xml @@ -13,7 +13,7 @@ - + diff --git a/indra/newview/app_settings/low_graphics.xml b/indra/newview/app_settings/low_graphics.xml index 3f67a70d7..79b25003f 100644 --- a/indra/newview/app_settings/low_graphics.xml +++ b/indra/newview/app_settings/low_graphics.xml @@ -13,7 +13,7 @@ - + diff --git a/indra/newview/app_settings/mid_graphics.xml b/indra/newview/app_settings/mid_graphics.xml index 12da77da4..4660d0cd4 100644 --- a/indra/newview/app_settings/mid_graphics.xml +++ b/indra/newview/app_settings/mid_graphics.xml @@ -13,7 +13,7 @@ - + diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d343bd925..7735306ff 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8960,9 +8960,22 @@ Value 1 - RenderShadowNearDist - - Comment + + RenderLocalLights + + Comment + Whether or not to render local lights. + Persist + 1 + Type + Boolean + Value + 1 + + + RenderShadowNearDist + + Comment Near clip plane of shadow camera (affects precision of depth shadows). Persist 1 @@ -9096,7 +9109,7 @@ Vector3 Value - 0.40 + 0.80 1.00 0.00 diff --git a/indra/newview/app_settings/ultra_graphics.xml b/indra/newview/app_settings/ultra_graphics.xml index f16ec6c30..78213ff87 100644 --- a/indra/newview/app_settings/ultra_graphics.xml +++ b/indra/newview/app_settings/ultra_graphics.xml @@ -13,7 +13,7 @@ - + diff --git a/indra/newview/llpaneldisplay.cpp b/indra/newview/llpaneldisplay.cpp index 26b65f685..ae0620cb2 100644 --- a/indra/newview/llpaneldisplay.cpp +++ b/indra/newview/llpaneldisplay.cpp @@ -432,7 +432,7 @@ void LLPanelDisplay::refresh() mPostProcess = gSavedSettings.getS32("RenderGlowResolutionPow"); // lighting and terrain radios - mLightingDetail = gSavedSettings.getS32("RenderLightingDetail"); + mLocalLights = gSavedSettings.getBOOL("RenderLocalLights"); mTerrainDetail = gSavedSettings.getS32("RenderTerrainDetail"); // slider text boxes @@ -753,6 +753,7 @@ void LLPanelDisplay::cancel() gSavedSettings.setBOOL("RenderUseImpostors", mAvatarImpostors); gSavedSettings.setBOOL("RenderAvatarCloth", mAvatarCloth); + gSavedSettings.setBOOL("RenderLocalLights", mLocalLights); gSavedSettings.setS32("RenderTerrainDetail", mTerrainDetail); gSavedSettings.setF32("RenderFarClip", mRenderFarClip); diff --git a/indra/newview/llpaneldisplay.h b/indra/newview/llpaneldisplay.h index 4938ec0f5..69b05857d 100644 --- a/indra/newview/llpaneldisplay.h +++ b/indra/newview/llpaneldisplay.h @@ -163,7 +163,7 @@ protected: BOOL mAvatarImpostors; BOOL mAvatarCloth; S32 mAvatarMode; - S32 mLightingDetail; + BOOL mLocalLights; S32 mTerrainDetail; F32 mRenderFarClip; diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 81fdb8f78..410dcc004 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -427,6 +427,12 @@ static bool handleRenderDynamicLODChanged(const LLSD& newvalue) return true; } +static bool handleRenderLocalLightsChanged(const LLSD& newvalue) +{ + gPipeline.setLightingDetail(-1); + return true; +} + static bool handleRenderUseFBOChanged(const LLSD& newvalue) { LLRenderTarget::sUseFBO = newvalue.asBoolean(); @@ -611,6 +617,7 @@ void settings_setup_listeners() gSavedSettings.getControl("RenderFogRatio")->getSignal()->connect(boost::bind(&handleFogRatioChanged, _1)); gSavedSettings.getControl("RenderMaxPartCount")->getSignal()->connect(boost::bind(&handleMaxPartCountChanged, _1)); gSavedSettings.getControl("RenderDynamicLOD")->getSignal()->connect(boost::bind(&handleRenderDynamicLODChanged, _1)); + gSavedSettings.getControl("RenderLocalLights")->getSignal()->connect(boost::bind(&handleRenderLocalLightsChanged, _1)); gSavedSettings.getControl("RenderDebugTextureBind")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _1)); gSavedSettings.getControl("RenderFastAlpha")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _1)); gSavedSettings.getControl("RenderObjectBump")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _1)); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index a59127baf..dd1b1727e 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -959,11 +959,9 @@ S32 LLPipeline::getMaxLightingDetail() const S32 LLPipeline::setLightingDetail(S32 level) { - assertInitialized(); - if (level < 0) { - if (gSavedSettings.getBOOL("VertexShaderEnable")) + if (gSavedSettings.getBOOL("RenderLocalLights")) { level = 1; } @@ -973,15 +971,12 @@ S32 LLPipeline::setLightingDetail(S32 level) } } level = llclamp(level, 0, getMaxLightingDetail()); - if (level != mLightingDetail) + //Bugfix: If setshaders was called with RenderLocalLights off then enabling RenderLocalLights later will not work. Reloading shaders fixes this. + if (level != mLightingDetail && mVertexShadersLoaded) { - mLightingDetail = level; - - if (mVertexShadersLoaded == 1) - { - LLViewerShaderMgr::instance()->setShaders(); - } + LLViewerShaderMgr::instance()->setShaders(); } + mLightingDetail = level; return mLightingDetail; } @@ -4794,7 +4789,6 @@ void LLPipeline::enableLightsStatic() if (mLightingDetail >= 2) { mask |= mLightMovingMask; // Hardware moving lights - glColor4f(0.f, 0.f, 0.f, 1.0f); // no local lighting by default } else { @@ -4808,10 +4802,7 @@ void LLPipeline::enableLightsDynamic() assertInitialized(); U32 mask = 0xff & (~2); // Local lights enableLights(mask); - if (mLightingDetail >= 2) - { - glColor4f(0.f, 0.f, 0.f, 1.f); // no local lighting by default - } + LLVOAvatar* avatarp = gAgent.getAvatarObject(); @@ -4851,10 +4842,6 @@ void LLPipeline::enableLightsFullbright(const LLColor4& color) enableLights(mask); glLightModelfv(GL_LIGHT_MODEL_AMBIENT,color.mV); - /*if (mLightingDetail >= 2) - { - glColor4f(0.f, 0.f, 0.f, 1.f); // no local lighting by default - }*/ } void LLPipeline::disableLights() @@ -6746,8 +6733,7 @@ void LLPipeline::renderDeferredLighting() gPipeline.popRenderTypeMask(); } - static const LLCachedControl render_local("RenderDeferredLocalLights",false); - static const LLCachedControl render_fullscreen("RenderDeferredFullscreenLights",false); + static const LLCachedControl render_local("RenderLocalLights",false); if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2) { @@ -6756,7 +6742,7 @@ void LLPipeline::renderDeferredLighting() mDeferredLight[2].clear(GL_COLOR_BUFFER_BIT); } - if (render_local || render_fullscreen) + if (render_local) { gGL.setSceneBlendType(LLRender::BT_ADD); std::list fullscreen_lights; @@ -6768,16 +6754,18 @@ void LLPipeline::renderDeferredLighting() mTargetShadowSpotLight[i] = NULL; } - std::list light_colors; + std::list light_colors; - LLVertexBuffer::unbind(); - F32 v[24]; - glVertexPointer(3, GL_FLOAT, 0, v); - { - bindDeferredShader(gDeferredLightProgram); - LLGLDepthTest depth(GL_TRUE, GL_FALSE); - for (LLDrawable::drawable_set_t::iterator iter = mLights.begin(); iter != mLights.end(); ++iter) - { + LLVertexBuffer::unbind(); + + F32 v[24]; + glVertexPointer(3, GL_FLOAT, 0, v); + + { + bindDeferredShader(gDeferredLightProgram); + LLGLDepthTest depth(GL_TRUE, GL_FALSE); + for (LLDrawable::drawable_set_t::iterator iter = mLights.begin(); iter != mLights.end(); ++iter) + { LLDrawable* drawablep = *iter; LLVOVolume* volume = drawablep->getVOVolume(); @@ -6858,7 +6846,7 @@ void LLPipeline::renderDeferredLighting() GL_UNSIGNED_BYTE, get_box_fan_indices(camera, center)); } } - else if (render_fullscreen) + else { if (volume->isLightSpotlight()) { 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 c49092d80..2ae8ff78d 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 @@ -416,7 +416,7 @@ width="128"> Lighting Detail: -