RenderLightingDetail renamed to RenderLocalLights. Toggling light level should work now. RenderDeferredFullscreenLights removed.

This commit is contained in:
Shyotl
2011-05-22 00:11:12 -05:00
parent 0785d392e3
commit 7a907c4448
10 changed files with 52 additions and 43 deletions

View File

@@ -13,7 +13,7 @@
<!--256... but they don't use this--> <!--256... but they don't use this-->
<RenderGlowResolutionPow value="9"/> <RenderGlowResolutionPow value="9"/>
<!--Sun/Moon only--> <!--Sun/Moon only-->
<RenderLightingDetail value="1"/> <RenderLocalLights value="1"/>
<!--Low number--> <!--Low number-->
<RenderMaxPartCount value="4096"/> <RenderMaxPartCount value="4096"/>
<!--bump okay--> <!--bump okay-->

View File

@@ -13,7 +13,7 @@
<!--256... but they don't use this--> <!--256... but they don't use this-->
<RenderGlowResolutionPow value="8"/> <RenderGlowResolutionPow value="8"/>
<!--Sun/Moon only--> <!--Sun/Moon only-->
<RenderLightingDetail value="0"/> <RenderLocalLights value="0"/>
<!--Low number--> <!--Low number-->
<RenderMaxPartCount value="1024"/> <RenderMaxPartCount value="1024"/>
<!--bump okay--> <!--bump okay-->

View File

@@ -13,7 +13,7 @@
<!--256... but they don't use this--> <!--256... but they don't use this-->
<RenderGlowResolutionPow value="8"/> <RenderGlowResolutionPow value="8"/>
<!--Sun/Moon only--> <!--Sun/Moon only-->
<RenderLightingDetail value="1"/> <RenderLocalLights value="1"/>
<!--Low number--> <!--Low number-->
<RenderMaxPartCount value="2048"/> <RenderMaxPartCount value="2048"/>
<!--bump okay--> <!--bump okay-->

View File

@@ -8960,9 +8960,22 @@
<key>Value</key> <key>Value</key>
<integer>1</integer> <integer>1</integer>
</map> </map>
<key>RenderShadowNearDist</key>
<map> <key>RenderLocalLights</key>
<key>Comment</key> <map>
<key>Comment</key>
<string>Whether or not to render local lights.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>RenderShadowNearDist</key>
<map>
<key>Comment</key>
<string>Near clip plane of shadow camera (affects precision of depth shadows).</string> <string>Near clip plane of shadow camera (affects precision of depth shadows).</string>
<key>Persist</key> <key>Persist</key>
<integer>1</integer> <integer>1</integer>
@@ -9096,7 +9109,7 @@
<string>Vector3</string> <string>Vector3</string>
<key>Value</key> <key>Value</key>
<array> <array>
<real>0.40</real> <real>0.80</real>
<real>1.00</real> <real>1.00</real>
<real>0.00</real> <real>0.00</real>
</array> </array>

View File

@@ -13,7 +13,7 @@
<!--256... but they don't use this--> <!--256... but they don't use this-->
<RenderGlowResolutionPow value="9"/> <RenderGlowResolutionPow value="9"/>
<!--Sun/Moon only--> <!--Sun/Moon only-->
<RenderLightingDetail value="1"/> <RenderLocalLights value="1"/>
<!--Low number--> <!--Low number-->
<RenderMaxPartCount value="4096"/> <RenderMaxPartCount value="4096"/>
<!--bump okay--> <!--bump okay-->

View File

@@ -432,7 +432,7 @@ void LLPanelDisplay::refresh()
mPostProcess = gSavedSettings.getS32("RenderGlowResolutionPow"); mPostProcess = gSavedSettings.getS32("RenderGlowResolutionPow");
// lighting and terrain radios // lighting and terrain radios
mLightingDetail = gSavedSettings.getS32("RenderLightingDetail"); mLocalLights = gSavedSettings.getBOOL("RenderLocalLights");
mTerrainDetail = gSavedSettings.getS32("RenderTerrainDetail"); mTerrainDetail = gSavedSettings.getS32("RenderTerrainDetail");
// slider text boxes // slider text boxes
@@ -753,6 +753,7 @@ void LLPanelDisplay::cancel()
gSavedSettings.setBOOL("RenderUseImpostors", mAvatarImpostors); gSavedSettings.setBOOL("RenderUseImpostors", mAvatarImpostors);
gSavedSettings.setBOOL("RenderAvatarCloth", mAvatarCloth); gSavedSettings.setBOOL("RenderAvatarCloth", mAvatarCloth);
gSavedSettings.setBOOL("RenderLocalLights", mLocalLights);
gSavedSettings.setS32("RenderTerrainDetail", mTerrainDetail); gSavedSettings.setS32("RenderTerrainDetail", mTerrainDetail);
gSavedSettings.setF32("RenderFarClip", mRenderFarClip); gSavedSettings.setF32("RenderFarClip", mRenderFarClip);

View File

@@ -163,7 +163,7 @@ protected:
BOOL mAvatarImpostors; BOOL mAvatarImpostors;
BOOL mAvatarCloth; BOOL mAvatarCloth;
S32 mAvatarMode; S32 mAvatarMode;
S32 mLightingDetail; BOOL mLocalLights;
S32 mTerrainDetail; S32 mTerrainDetail;
F32 mRenderFarClip; F32 mRenderFarClip;

View File

@@ -427,6 +427,12 @@ static bool handleRenderDynamicLODChanged(const LLSD& newvalue)
return true; return true;
} }
static bool handleRenderLocalLightsChanged(const LLSD& newvalue)
{
gPipeline.setLightingDetail(-1);
return true;
}
static bool handleRenderUseFBOChanged(const LLSD& newvalue) static bool handleRenderUseFBOChanged(const LLSD& newvalue)
{ {
LLRenderTarget::sUseFBO = newvalue.asBoolean(); LLRenderTarget::sUseFBO = newvalue.asBoolean();
@@ -611,6 +617,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderFogRatio")->getSignal()->connect(boost::bind(&handleFogRatioChanged, _1)); gSavedSettings.getControl("RenderFogRatio")->getSignal()->connect(boost::bind(&handleFogRatioChanged, _1));
gSavedSettings.getControl("RenderMaxPartCount")->getSignal()->connect(boost::bind(&handleMaxPartCountChanged, _1)); gSavedSettings.getControl("RenderMaxPartCount")->getSignal()->connect(boost::bind(&handleMaxPartCountChanged, _1));
gSavedSettings.getControl("RenderDynamicLOD")->getSignal()->connect(boost::bind(&handleRenderDynamicLODChanged, _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("RenderDebugTextureBind")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _1));
gSavedSettings.getControl("RenderFastAlpha")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _1)); gSavedSettings.getControl("RenderFastAlpha")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _1));
gSavedSettings.getControl("RenderObjectBump")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _1)); gSavedSettings.getControl("RenderObjectBump")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _1));

View File

@@ -959,11 +959,9 @@ S32 LLPipeline::getMaxLightingDetail() const
S32 LLPipeline::setLightingDetail(S32 level) S32 LLPipeline::setLightingDetail(S32 level)
{ {
assertInitialized();
if (level < 0) if (level < 0)
{ {
if (gSavedSettings.getBOOL("VertexShaderEnable")) if (gSavedSettings.getBOOL("RenderLocalLights"))
{ {
level = 1; level = 1;
} }
@@ -973,15 +971,12 @@ S32 LLPipeline::setLightingDetail(S32 level)
} }
} }
level = llclamp(level, 0, getMaxLightingDetail()); 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; LLViewerShaderMgr::instance()->setShaders();
if (mVertexShadersLoaded == 1)
{
LLViewerShaderMgr::instance()->setShaders();
}
} }
mLightingDetail = level;
return mLightingDetail; return mLightingDetail;
} }
@@ -4794,7 +4789,6 @@ void LLPipeline::enableLightsStatic()
if (mLightingDetail >= 2) if (mLightingDetail >= 2)
{ {
mask |= mLightMovingMask; // Hardware moving lights mask |= mLightMovingMask; // Hardware moving lights
glColor4f(0.f, 0.f, 0.f, 1.0f); // no local lighting by default
} }
else else
{ {
@@ -4808,10 +4802,7 @@ void LLPipeline::enableLightsDynamic()
assertInitialized(); assertInitialized();
U32 mask = 0xff & (~2); // Local lights U32 mask = 0xff & (~2); // Local lights
enableLights(mask); enableLights(mask);
if (mLightingDetail >= 2)
{
glColor4f(0.f, 0.f, 0.f, 1.f); // no local lighting by default
}
LLVOAvatar* avatarp = gAgent.getAvatarObject(); LLVOAvatar* avatarp = gAgent.getAvatarObject();
@@ -4851,10 +4842,6 @@ void LLPipeline::enableLightsFullbright(const LLColor4& color)
enableLights(mask); enableLights(mask);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,color.mV); 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() void LLPipeline::disableLights()
@@ -6746,8 +6733,7 @@ void LLPipeline::renderDeferredLighting()
gPipeline.popRenderTypeMask(); gPipeline.popRenderTypeMask();
} }
static const LLCachedControl<bool> render_local("RenderDeferredLocalLights",false); static const LLCachedControl<bool> render_local("RenderLocalLights",false);
static const LLCachedControl<bool> render_fullscreen("RenderDeferredFullscreenLights",false);
if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2) if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
{ {
@@ -6756,7 +6742,7 @@ void LLPipeline::renderDeferredLighting()
mDeferredLight[2].clear(GL_COLOR_BUFFER_BIT); mDeferredLight[2].clear(GL_COLOR_BUFFER_BIT);
} }
if (render_local || render_fullscreen) if (render_local)
{ {
gGL.setSceneBlendType(LLRender::BT_ADD); gGL.setSceneBlendType(LLRender::BT_ADD);
std::list<LLVector4> fullscreen_lights; std::list<LLVector4> fullscreen_lights;
@@ -6768,16 +6754,18 @@ void LLPipeline::renderDeferredLighting()
mTargetShadowSpotLight[i] = NULL; mTargetShadowSpotLight[i] = NULL;
} }
std::list<LLVector4> light_colors; std::list<LLVector4> light_colors;
LLVertexBuffer::unbind(); LLVertexBuffer::unbind();
F32 v[24];
glVertexPointer(3, GL_FLOAT, 0, v); 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) bindDeferredShader(gDeferredLightProgram);
{ LLGLDepthTest depth(GL_TRUE, GL_FALSE);
for (LLDrawable::drawable_set_t::iterator iter = mLights.begin(); iter != mLights.end(); ++iter)
{
LLDrawable* drawablep = *iter; LLDrawable* drawablep = *iter;
LLVOVolume* volume = drawablep->getVOVolume(); LLVOVolume* volume = drawablep->getVOVolume();
@@ -6858,7 +6846,7 @@ void LLPipeline::renderDeferredLighting()
GL_UNSIGNED_BYTE, get_box_fan_indices(camera, center)); GL_UNSIGNED_BYTE, get_box_fan_indices(camera, center));
} }
} }
else if (render_fullscreen) else
{ {
if (volume->isLightSpotlight()) if (volume->isLightSpotlight())
{ {

View File

@@ -416,7 +416,7 @@
width="128"> width="128">
Lighting Detail: Lighting Detail:
</text> </text>
<radio_group bottom_delta="-43" control_name="RenderLightingDetail" draw_border="false" <radio_group bottom_delta="-43" control_name="RenderLocalLights" draw_border="false"
enabled="true" follows="left|top" height="38" left_delta="0" enabled="true" follows="left|top" height="38" left_delta="0"
mouse_opaque="true" name="LightingDetailRadio" width="321"> mouse_opaque="true" name="LightingDetailRadio" width="321">
<radio_item type="string" length="1" bottom="-19" enabled="true" follows="left|top" height="16" <radio_item type="string" length="1" bottom="-19" enabled="true" follows="left|top" height="16"