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:
|
case kRenderNormal:
|
||||||
default:
|
default:
|
||||||
|
R_AllowFog( true );
|
||||||
pglDisable( GL_BLEND );
|
pglDisable( GL_BLEND );
|
||||||
pglDisable( GL_ALPHA_TEST );
|
pglDisable( GL_ALPHA_TEST );
|
||||||
break;
|
break;
|
||||||
case kRenderTransColor:
|
case kRenderTransColor:
|
||||||
case kRenderTransTexture:
|
case kRenderTransTexture:
|
||||||
|
R_AllowFog( true );
|
||||||
pglEnable( GL_BLEND );
|
pglEnable( GL_BLEND );
|
||||||
pglDisable( GL_ALPHA_TEST );
|
pglDisable( GL_ALPHA_TEST );
|
||||||
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
||||||
break;
|
break;
|
||||||
case kRenderTransAlpha:
|
case kRenderTransAlpha:
|
||||||
|
R_AllowFog( true );
|
||||||
pglDisable( GL_BLEND );
|
pglDisable( GL_BLEND );
|
||||||
pglEnable( GL_ALPHA_TEST );
|
pglEnable( GL_ALPHA_TEST );
|
||||||
break;
|
break;
|
||||||
case kRenderGlow:
|
case kRenderGlow:
|
||||||
case kRenderTransAdd:
|
case kRenderTransAdd:
|
||||||
|
R_AllowFog( false );
|
||||||
pglEnable( GL_BLEND );
|
pglEnable( GL_BLEND );
|
||||||
pglDisable( GL_ALPHA_TEST );
|
pglDisable( GL_ALPHA_TEST );
|
||||||
pglBlendFunc( GL_SRC_ALPHA, GL_ONE );
|
pglBlendFunc( GL_SRC_ALPHA, GL_ONE );
|
||||||
break;
|
break;
|
||||||
case kRenderScreenFadeModulate:
|
case kRenderScreenFadeModulate:
|
||||||
|
R_AllowFog( true );
|
||||||
pglEnable( GL_BLEND );
|
pglEnable( GL_BLEND );
|
||||||
pglDisable( GL_ALPHA_TEST );
|
pglDisable( GL_ALPHA_TEST );
|
||||||
pglBlendFunc( GL_ZERO, GL_SRC_COLOR );
|
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 ))
|
if( !TriSpriteTexture( gEngfuncs.GetDefaultSprite( REF_DOT_SPRITE ), 0 ))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
R_AllowFog( false );
|
||||||
pglEnable( GL_BLEND );
|
pglEnable( GL_BLEND );
|
||||||
pglBlendFunc( GL_SRC_ALPHA, GL_ONE );
|
pglBlendFunc( GL_SRC_ALPHA, GL_ONE );
|
||||||
pglDisable( GL_ALPHA_TEST );
|
pglDisable( GL_ALPHA_TEST );
|
||||||
@@ -267,6 +268,7 @@ void CL_DrawTracers( double frametime, particle_t *cl_active_tracers )
|
|||||||
pglEnd();
|
pglEnd();
|
||||||
|
|
||||||
pglDepthMask( GL_TRUE );
|
pglDepthMask( GL_TRUE );
|
||||||
|
R_AllowFog( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -2866,6 +2866,9 @@ static void R_StudioSetupRenderer( int rendermode )
|
|||||||
if( rendermode > kRenderTransAdd ) rendermode = 0;
|
if( rendermode > kRenderTransAdd ) rendermode = 0;
|
||||||
g_studio.rendermode = bound( 0, rendermode, kRenderTransAdd );
|
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 );
|
pglTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
|
||||||
pglDisable( GL_ALPHA_TEST );
|
pglDisable( GL_ALPHA_TEST );
|
||||||
pglShadeModel( GL_SMOOTH );
|
pglShadeModel( GL_SMOOTH );
|
||||||
@@ -2892,6 +2895,9 @@ static void R_StudioRestoreRenderer( void )
|
|||||||
if( g_studio.rendermode != kRenderNormal )
|
if( g_studio.rendermode != kRenderNormal )
|
||||||
pglDisable( GL_BLEND );
|
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 );
|
pglTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE );
|
||||||
pglShadeModel( GL_FLAT );
|
pglShadeModel( GL_FLAT );
|
||||||
m_fDoRemap = false;
|
m_fDoRemap = false;
|
||||||
|
|||||||
@@ -45,21 +45,25 @@ void TriRenderMode( int mode )
|
|||||||
switch( mode )
|
switch( mode )
|
||||||
{
|
{
|
||||||
case kRenderNormal:
|
case kRenderNormal:
|
||||||
|
R_AllowFog( true );
|
||||||
pglDisable( GL_BLEND );
|
pglDisable( GL_BLEND );
|
||||||
pglDepthMask( GL_TRUE );
|
pglDepthMask( GL_TRUE );
|
||||||
break;
|
break;
|
||||||
case kRenderTransAlpha:
|
case kRenderTransAlpha:
|
||||||
|
R_AllowFog( true );
|
||||||
pglEnable( GL_BLEND );
|
pglEnable( GL_BLEND );
|
||||||
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
||||||
pglDepthMask( GL_FALSE );
|
pglDepthMask( GL_FALSE );
|
||||||
break;
|
break;
|
||||||
case kRenderTransColor:
|
case kRenderTransColor:
|
||||||
case kRenderTransTexture:
|
case kRenderTransTexture:
|
||||||
|
R_AllowFog( true );
|
||||||
pglEnable( GL_BLEND );
|
pglEnable( GL_BLEND );
|
||||||
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
||||||
break;
|
break;
|
||||||
case kRenderGlow:
|
case kRenderGlow:
|
||||||
case kRenderTransAdd:
|
case kRenderTransAdd:
|
||||||
|
R_AllowFog( false );
|
||||||
pglBlendFunc( GL_SRC_ALPHA, GL_ONE );
|
pglBlendFunc( GL_SRC_ALPHA, GL_ONE );
|
||||||
pglEnable( GL_BLEND );
|
pglEnable( GL_BLEND );
|
||||||
pglDepthMask( GL_FALSE );
|
pglDepthMask( GL_FALSE );
|
||||||
|
|||||||
Reference in New Issue
Block a user