An extra rendertarget is needed when fxaa dof are used in conjunction. mDeferredScreens color attachment was being used for both input and output when doing DoF combine, which is undefined behavior. Using mDeferredScreen for this works as it's no longer needed after lighting has been applied.

This commit is contained in:
Shyotl
2012-09-26 20:45:47 -05:00
parent efbd339dc8
commit 88482a2431

View File

@@ -6709,7 +6709,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
{ //combine result based on alpha
if (multisample)
{
mDeferredLight.bindTarget();
mDeferredScreen.bindTarget();
glViewport(0, 0, mDeferredScreen.getWidth(), mDeferredScreen.getHeight());
}
else
@@ -6752,7 +6752,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
if (multisample)
{
mDeferredLight.flush();
mDeferredScreen.flush();
}
}
}
@@ -6760,7 +6760,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
{
if (multisample)
{
mDeferredLight.bindTarget();
mDeferredScreen.bindTarget();
}
LLGLSLShader* shader = &gDeferredPostNoDoFProgram;
@@ -6788,7 +6788,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
if (multisample)
{
mDeferredLight.flush();
mDeferredScreen.flush();
}
}
@@ -6809,7 +6809,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield, b
S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredLight.getUsage());
if (channel > -1)
{
mDeferredLight.bindTexture(0, channel);
mDeferredScreen.bindTexture(0, channel);
}
gGL.begin(LLRender::TRIANGLE_STRIP);