mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-05 03:24:56 +08:00
ref: gl: fix opacity of additive sprites and textures in fog
This commit is contained in:
committed by
a1batross
parent
cca6f8da2d
commit
e9ffe12481
@@ -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 );
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 );
|
||||
|
||||
Reference in New Issue
Block a user