24 Apr 2011

This commit is contained in:
g-cont 2011-04-24 00:00:00 +04:00 committed by Alibek Omarov
parent 3efa573411
commit 30b1c0cd63
5 changed files with 21 additions and 14 deletions

View File

@ -1637,7 +1637,7 @@ static void pfnFillRGBA( int x, int y, int width, int height, int r, int g, int
SPR_AdjustSize( (float *)&x, (float *)&y, (float *)&width, (float *)&height );
GL_SetRenderMode( kRenderTransTexture );
GL_SetRenderMode( kRenderTransAdd );
R_DrawStretchPic( x, y, width, height, 0, 0, 1, 1, cls.fillImage );
pglColor4ub( 255, 255, 255, 255 );
}

View File

@ -278,9 +278,12 @@ int R_ComputeFxBlend( cl_entity_t *e )
break;
}
// NOTE: never pass sprites with rendercolor '0 0 0' it's a stupid Valve Hammer Editor bug
if( !e->curstate.rendercolor.r && !e->curstate.rendercolor.g && !e->curstate.rendercolor.b )
e->curstate.rendercolor.r = e->curstate.rendercolor.g = e->curstate.rendercolor.b = 255;
if( RI.currentmodel->type != mod_brush )
{
// NOTE: never pass sprites with rendercolor '0 0 0' it's a stupid Valve Hammer Editor bug
if( !e->curstate.rendercolor.r && !e->curstate.rendercolor.g && !e->curstate.rendercolor.b )
e->curstate.rendercolor.r = e->curstate.rendercolor.g = e->curstate.rendercolor.b = 255;
}
// apply scale to studiomodels and sprites only
if( e->model && e->model->type != mod_brush && !e->curstate.scale )
@ -393,7 +396,7 @@ R_GetFarClip
static float R_GetFarClip( void )
{
if( cl.worldmodel && RI.drawWorld )
return RI.refdef.movevars->zmax + 1024.0f;
return RI.refdef.movevars->zmax * 1.5f;
return 2048.0f;
}

View File

@ -1207,6 +1207,7 @@ void R_DrawBrushModel( cl_entity_t *e )
pglColor4ub( 255, 255, 255, e->curstate.renderamt );
break;
case kRenderTransColor:
pglDisable( GL_TEXTURE_2D );
pglColor4ub( e->curstate.rendercolor.r, e->curstate.rendercolor.g,
e->curstate.rendercolor.b, e->curstate.renderamt );
break;
@ -1258,6 +1259,9 @@ void R_DrawBrushModel( cl_entity_t *e )
for( i = 0; i < num_sorted; i++ )
R_RenderBrushPoly( world.draw_surfaces[i] );
if( e->curstate.rendermode == kRenderTransColor )
pglEnable( GL_TEXTURE_2D );
R_BlendLightmaps();
R_RenderFullbrights();
R_LoadIdentity(); // restore worldmatrix

View File

@ -885,6 +885,7 @@ void R_DrawSpriteModel( cl_entity_t *e )
switch( e->curstate.rendermode )
{
case kRenderTransAlpha:
case kRenderTransColor:
case kRenderTransTexture:
pglEnable( GL_BLEND );
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
@ -912,7 +913,7 @@ void R_DrawSpriteModel( cl_entity_t *e )
// all sprites can have color
pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
// add basecolor
// add basecolor (any rendermode can colored sprite)
color[0] = (float)e->curstate.rendercolor.r * ( 1.0f / 255.0f );
color[1] = (float)e->curstate.rendercolor.g * ( 1.0f / 255.0f );
color[2] = (float)e->curstate.rendercolor.b * ( 1.0f / 255.0f );

View File

@ -1707,13 +1707,11 @@ static void R_StudioDrawPoints( void )
if( flags & STUDIO_NF_TRANSPARENT )
{
GL_SetRenderMode( kRenderTransAlpha );
if( glState.drawTrans ) pglDepthMask( GL_TRUE );
alpha = 1.0f;
}
else if(( flags & STUDIO_NF_ADDITIVE ) || ( g_nFaceFlags & STUDIO_NF_CHROME ))
{
GL_SetRenderMode( kRenderTransAdd );
if( !glState.drawTrans ) pglDepthMask( GL_FALSE );
alpha = RI.currententity->curstate.renderamt * (1.0f / 255.0f);
if( g_nFaceFlags & STUDIO_NF_CHROME )
@ -1735,9 +1733,8 @@ static void R_StudioDrawPoints( void )
pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
alpha = 1.0f;
}
if( !glState.drawTrans )
pglDepthMask( GL_TRUE );
else pglDepthMask( GL_FALSE );
}
if(!( g_nFaceFlags & STUDIO_NF_CHROME ))
@ -2206,6 +2203,9 @@ static void R_StudioSetupRenderer( int rendermode )
g_iRenderMode = bound( 0, rendermode, kRenderTransInverse );
pglShadeModel( GL_SMOOTH ); // enable gouraud shading
GL_Cull( GL_FRONT );
// enable depthmask on studiomodels
if( glState.drawTrans ) pglDepthMask( GL_TRUE );
}
/*
@ -2219,9 +2219,8 @@ static void R_StudioRestoreRenderer( void )
pglTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE );
pglShadeModel( GL_FLAT );
if( !glState.drawTrans )
pglDepthMask( GL_TRUE );
else pglDepthMask( GL_FALSE );
// restore depthmask state for sprites etc
if( glState.drawTrans ) pglDepthMask( GL_FALSE );
}
/*