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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user