diff --git a/ref/gl/gl_backend.c b/ref/gl/gl_backend.c index e3982c38..66497afc 100644 --- a/ref/gl/gl_backend.c +++ b/ref/gl/gl_backend.c @@ -438,26 +438,31 @@ void GL_SetRenderMode( int mode ) { case kRenderNormal: default: + R_AllowFog( true ); pglDisable( GL_BLEND ); pglDisable( GL_ALPHA_TEST ); break; case kRenderTransColor: case kRenderTransTexture: + R_AllowFog( true ); pglEnable( GL_BLEND ); pglDisable( GL_ALPHA_TEST ); pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); break; case kRenderTransAlpha: + R_AllowFog( true ); pglDisable( GL_BLEND ); pglEnable( GL_ALPHA_TEST ); break; case kRenderGlow: case kRenderTransAdd: + R_AllowFog( false ); pglEnable( GL_BLEND ); pglDisable( GL_ALPHA_TEST ); pglBlendFunc( GL_SRC_ALPHA, GL_ONE ); break; case kRenderScreenFadeModulate: + R_AllowFog( true ); pglEnable( GL_BLEND ); pglDisable( GL_ALPHA_TEST ); pglBlendFunc( GL_ZERO, GL_SRC_COLOR ); diff --git a/ref/gl/gl_rpart.c b/ref/gl/gl_rpart.c index 9264170d..f5d7b906 100644 --- a/ref/gl/gl_rpart.c +++ b/ref/gl/gl_rpart.c @@ -181,6 +181,7 @@ void CL_DrawTracers( double frametime, particle_t *cl_active_tracers ) if( !TriSpriteTexture( gEngfuncs.GetDefaultSprite( REF_DOT_SPRITE ), 0 )) return; + R_AllowFog( false ); pglEnable( GL_BLEND ); pglBlendFunc( GL_SRC_ALPHA, GL_ONE ); pglDisable( GL_ALPHA_TEST ); @@ -267,6 +268,7 @@ void CL_DrawTracers( double frametime, particle_t *cl_active_tracers ) pglEnd(); pglDepthMask( GL_TRUE ); + R_AllowFog( true ); } /* diff --git a/ref/gl/gl_studio.c b/ref/gl/gl_studio.c index 7709f8d7..b183df32 100644 --- a/ref/gl/gl_studio.c +++ b/ref/gl/gl_studio.c @@ -2866,6 +2866,9 @@ static void R_StudioSetupRenderer( int rendermode ) if( rendermode > kRenderTransAdd ) rendermode = 0; g_studio.rendermode = bound( 0, rendermode, kRenderTransAdd ); + if( g_studio.rendermode == kRenderTransAdd || g_studio.rendermode == kRenderGlow ) + R_AllowFog( false ); + pglTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); pglDisable( GL_ALPHA_TEST ); pglShadeModel( GL_SMOOTH ); @@ -2892,6 +2895,9 @@ static void R_StudioRestoreRenderer( void ) if( g_studio.rendermode != kRenderNormal ) pglDisable( GL_BLEND ); + if( g_studio.rendermode == kRenderTransAdd || g_studio.rendermode == kRenderGlow ) + R_AllowFog( true ); + pglTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE ); pglShadeModel( GL_FLAT ); m_fDoRemap = false; diff --git a/ref/gl/gl_triapi.c b/ref/gl/gl_triapi.c index 81cb06bf..6d73209c 100644 --- a/ref/gl/gl_triapi.c +++ b/ref/gl/gl_triapi.c @@ -45,21 +45,25 @@ void TriRenderMode( int mode ) switch( mode ) { case kRenderNormal: + R_AllowFog( true ); pglDisable( GL_BLEND ); pglDepthMask( GL_TRUE ); break; case kRenderTransAlpha: + R_AllowFog( true ); pglEnable( GL_BLEND ); pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); pglDepthMask( GL_FALSE ); break; case kRenderTransColor: case kRenderTransTexture: + R_AllowFog( true ); pglEnable( GL_BLEND ); pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); break; case kRenderGlow: case kRenderTransAdd: + R_AllowFog( false ); pglBlendFunc( GL_SRC_ALPHA, GL_ONE ); pglEnable( GL_BLEND ); pglDepthMask( GL_FALSE );