Skip to content

Commit 356efc5

Browse files
committed
Fix bloom texture binds
1 parent b555c7f commit 356efc5

File tree

1 file changed

+49
-52
lines changed

1 file changed

+49
-52
lines changed

src/engine/renderer/tr_backend.cpp

Lines changed: 49 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3045,9 +3045,6 @@ void RB_RenderGlobalFog()
30453045

30463046
void RB_RenderBloom()
30473047
{
3048-
int i, j, flip = 0;
3049-
matrix_t ortho;
3050-
30513048
GLimp_LogComment( "--- RB_RenderBloom ---\n" );
30523049

30533050
if ( ( backEnd.refdef.rdflags & ( RDF_NOWORLDMODEL | RDF_NOBLOOM ) )
@@ -3058,6 +3055,7 @@ void RB_RenderBloom()
30583055

30593056
// set 2D virtual screen size
30603057
GL_PushMatrix();
3058+
matrix_t ortho;
30613059
MatrixOrthogonalProjection( ortho, backEnd.viewParms.viewportX,
30623060
backEnd.viewParms.viewportX + backEnd.viewParms.viewportWidth,
30633061
backEnd.viewParms.viewportY, backEnd.viewParms.viewportY + backEnd.viewParms.viewportHeight,
@@ -3092,73 +3090,72 @@ void RB_RenderBloom()
30923090
backEnd.viewParms.viewportWidth, backEnd.viewParms.viewportHeight );
30933091

30943092
// render bloom in multiple passes
3095-
gl_contrastShader->SetUniform_ColorMapBindless(
3096-
GL_BindToTMU( 0, tr.contrastRenderFBOImage )
3097-
);
3098-
for ( i = 0; i < 2; i++ )
3099-
{
3100-
for ( j = 0; j < r_bloomPasses->integer; j++ )
3101-
{
3102-
vec2_t texScale;
3093+
GL_ClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
3094+
GL_State( GLS_DEPTHTEST_DISABLE );
31033095

3104-
texScale[ 0 ] = 1.0f / tr.bloomRenderFBO[ flip ]->width;
3105-
texScale[ 1 ] = 1.0f / tr.bloomRenderFBO[ flip ]->height;
3096+
GL_PushMatrix();
31063097

3107-
R_BindFBO( tr.bloomRenderFBO[ flip ] );
3098+
MatrixOrthogonalProjection( ortho, 0, tr.bloomRenderFBO[0]->width, 0, tr.bloomRenderFBO[0]->height, -99999, 99999 );
3099+
GL_LoadProjectionMatrix( ortho );
31083100

3109-
GL_ClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
3110-
glClear( GL_COLOR_BUFFER_BIT );
3101+
vec2_t texScale;
3102+
texScale[0] = 1.0f / tr.bloomRenderFBO[0]->width;
3103+
texScale[1] = 1.0f / tr.bloomRenderFBO[0]->height;
31113104

3112-
GL_State( GLS_DEPTHTEST_DISABLE );
3105+
gl_blurXShader->BindProgram( 0 );
31133106

3114-
GL_PushMatrix();
3107+
gl_blurXShader->SetUniform_DeformMagnitude( r_bloomBlur->value );
3108+
gl_blurXShader->SetUniform_TexScale( texScale );
31153109

3116-
MatrixOrthogonalProjection( ortho, 0, tr.bloomRenderFBO[ 0 ]->width, 0, tr.bloomRenderFBO[ 0 ]->height, -99999, 99999 );
3117-
GL_LoadProjectionMatrix( ortho );
3110+
gl_blurXShader->SetUniform_ColorMapBindless(
3111+
GL_BindToTMU( 0, tr.contrastRenderFBOImage )
3112+
);
31183113

3119-
if ( i == 0 )
3120-
{
3121-
gl_blurXShader->BindProgram( 0 );
3114+
int flip = 0;
3115+
for ( int i = 0; i < r_bloomPasses->integer; i++ ) {
3116+
R_BindFBO( tr.bloomRenderFBO[flip] );
3117+
glClear( GL_COLOR_BUFFER_BIT );
3118+
Tess_InstantQuad( *gl_blurXShader,
3119+
backEnd.viewParms.viewportX, backEnd.viewParms.viewportY,
3120+
backEnd.viewParms.viewportWidth, backEnd.viewParms.viewportHeight );
31223121

3123-
gl_blurXShader->SetUniform_DeformMagnitude( r_bloomBlur->value );
3124-
gl_blurXShader->SetUniform_TexScale( texScale );
3125-
gl_blurXShader->SetUniform_ColorMapBindless(
3126-
GL_BindToTMU( 0, tr.bloomRenderFBOImage[flip] )
3127-
);
3128-
Tess_InstantQuad( *gl_blurXShader,
3129-
backEnd.viewParms.viewportX, backEnd.viewParms.viewportY,
3130-
backEnd.viewParms.viewportWidth, backEnd.viewParms.viewportHeight );
3131-
}
3132-
else
3133-
{
3134-
gl_blurYShader->BindProgram( 0 );
3122+
gl_blurXShader->SetUniform_ColorMapBindless(
3123+
GL_BindToTMU( 0, tr.bloomRenderFBOImage[flip] )
3124+
);
3125+
flip ^= 1;
3126+
}
31353127

3136-
gl_blurYShader->SetUniform_DeformMagnitude( r_bloomBlur->value );
3137-
gl_blurYShader->SetUniform_TexScale( texScale );
3138-
gl_blurYShader->SetUniform_ColorMapBindless(
3139-
GL_BindToTMU( 0, tr.bloomRenderFBOImage[flip] )
3140-
);
3141-
Tess_InstantQuad( *gl_blurYShader,
3142-
backEnd.viewParms.viewportX, backEnd.viewParms.viewportY,
3143-
backEnd.viewParms.viewportWidth, backEnd.viewParms.viewportHeight );
3144-
}
3128+
gl_blurYShader->BindProgram( 0 );
31453129

3146-
GL_BindToTMU( 0, tr.bloomRenderFBOImage[ flip ] );
3130+
gl_blurYShader->SetUniform_DeformMagnitude( r_bloomBlur->value );
3131+
gl_blurYShader->SetUniform_TexScale( texScale );
31473132

3148-
GL_PopMatrix();
3149-
flip ^= 1;
3150-
}
3133+
gl_blurYShader->SetUniform_ColorMapBindless(
3134+
GL_BindToTMU( 0, tr.bloomRenderFBOImage[flip ^ 1] )
3135+
);
3136+
3137+
for ( int i = 0; i < r_bloomPasses->integer; i++ ) {
3138+
R_BindFBO( tr.bloomRenderFBO[flip] );
3139+
glClear( GL_COLOR_BUFFER_BIT );
3140+
Tess_InstantQuad( *gl_blurYShader,
3141+
backEnd.viewParms.viewportX, backEnd.viewParms.viewportY,
3142+
backEnd.viewParms.viewportWidth, backEnd.viewParms.viewportHeight );
3143+
3144+
gl_blurYShader->SetUniform_ColorMapBindless(
3145+
GL_BindToTMU( 0, tr.bloomRenderFBOImage[flip] )
3146+
);
3147+
flip ^= 1;
31513148
}
31523149

3153-
R_BindFBO( tr.mainFBO[ backEnd.currentMainFBO ] );
3150+
GL_PopMatrix();
3151+
3152+
R_BindFBO( tr.mainFBO[backEnd.currentMainFBO] );
31543153

31553154
gl_screenShader->BindProgram( 0 );
31563155
GL_State( GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE );
31573156
glVertexAttrib4fv( ATTR_INDEX_COLOR, Color::White.ToArray() );
31583157

3159-
GL_BindToTMU( 0, tr.blackImage );
3160-
3161-
gl_screenShader->SetUniform_CurrentMapBindless( GL_BindToTMU( 0, tr.blackImage ) );
3158+
gl_screenShader->SetUniform_CurrentMapBindless( GL_BindToTMU( 0, tr.bloomRenderFBOImage[flip ^ 1] ) );
31623159
Tess_InstantQuad( *gl_screenShader,
31633160
backEnd.viewParms.viewportX, backEnd.viewParms.viewportY,
31643161
backEnd.viewParms.viewportWidth, backEnd.viewParms.viewportHeight );

0 commit comments

Comments
 (0)