Skip to content

Commit e6c9f58

Browse files
committed
tr_backend: run FXAA after the camera shader (after tone mapping and color conversion)
1 parent bf076ba commit e6c9f58

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

src/engine/renderer/tr_backend.cpp

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1621,12 +1621,12 @@ void RB_FXAA()
16211621
// set the shader parameters
16221622
gl_fxaaShader->BindProgram();
16231623

1624-
// Swap main FBOs
16251624
gl_fxaaShader->SetUniform_ColorMapBindless(
16261625
GL_BindToTMU( 0, tr.currentRenderImage[backEnd.currentMainFBO] )
16271626
);
1628-
backEnd.currentMainFBO = 1 - backEnd.currentMainFBO;
1629-
R_BindFBO( tr.mainFBO[ backEnd.currentMainFBO ] );
1627+
1628+
// This shader is run last, so let it render to screen.
1629+
R_BindNullFBO();
16301630

16311631
Tess_InstantScreenSpaceQuad();
16321632

@@ -1693,13 +1693,22 @@ void RB_CameraPostFX() {
16931693
}
16941694
gl_cameraEffectsShader->SetUniform_Tonemap( tonemap );
16951695

1696-
// This shader is run last, so let it render to screen instead of
1697-
// tr.mainFBO
1698-
R_BindNullFBO();
16991696
gl_cameraEffectsShader->SetUniform_CurrentMapBindless(
17001697
GL_BindToTMU( 0, tr.currentRenderImage[backEnd.currentMainFBO] )
17011698
);
17021699

1700+
if ( r_FXAA.Get() && gl_fxaaShader )
1701+
{
1702+
// Swap main FBOs.
1703+
backEnd.currentMainFBO = 1 - backEnd.currentMainFBO;
1704+
R_BindFBO( tr.mainFBO[ backEnd.currentMainFBO ] );
1705+
}
1706+
else
1707+
{
1708+
// Without FXAA this shader is run last, so let it render to screen.
1709+
R_BindNullFBO();
1710+
}
1711+
17031712
if ( glConfig.colorGrading ) {
17041713
gl_cameraEffectsShader->SetUniform_ColorMap3DBindless( GL_BindToTMU( 3, tr.colorGradeImage ) );
17051714
}
@@ -2810,11 +2819,11 @@ static void RB_RenderPostProcess()
28102819

28112820
TransitionMSAAToMain( GL_COLOR_BUFFER_BIT );
28122821

2813-
RB_FXAA();
2814-
28152822
// render chromatic aberration
28162823
RB_CameraPostFX();
28172824

2825+
RB_FXAA();
2826+
28182827
// copy to given byte buffer that is NOT a FBO
28192828
if ( tr.refdef.pixelTarget != nullptr ) {
28202829
glReadPixels( 0, 0, tr.refdef.pixelTargetWidth, tr.refdef.pixelTargetHeight, GL_RGBA,

0 commit comments

Comments
 (0)