03 Sep 2017

This commit is contained in:
g-cont 2017-09-03 00:00:00 +03:00 committed by Alibek Omarov
parent e608c11e81
commit 8e6264beb1
14 changed files with 56 additions and 38 deletions

View File

@ -785,7 +785,7 @@ void CL_ParseServerData( sizebuf_t *msg )
sf->fadeEnd = title->holdtime + title->fadeout; sf->fadeEnd = title->holdtime + title->fadeout;
sf->fadeReset = title->fadeout; sf->fadeReset = title->fadeout;
} }
else sf->fadeEnd = sf->fadeReset = 4.0f; else sf->fadeEnd = sf->fadeReset = 5.0f;
sf->fadeFlags = FFADE_IN; sf->fadeFlags = FFADE_IN;
sf->fader = sf->fadeg = sf->fadeb = 0; sf->fader = sf->fadeg = sf->fadeb = 0;
@ -1439,18 +1439,20 @@ void CL_ParseScreenFade( sizebuf_t *msg )
{ {
float duration, holdTime; float duration, holdTime;
screenfade_t *sf = &clgame.fade; screenfade_t *sf = &clgame.fade;
float flScale;
duration = (float)(word)MSG_ReadShort( msg ) * (1.0f / (float)(1<<12)); duration = (float)MSG_ReadShort( msg );
holdTime = (float)(word)MSG_ReadShort( msg ) * (1.0f / (float)(1<<12)); holdTime = (float)MSG_ReadShort( msg );
sf->fadeFlags = MSG_ReadShort( msg ); sf->fadeFlags = MSG_ReadShort( msg );
flScale = ( sf->fadeFlags & FFADE_LONGFADE ) ? (1.0f / 256.0f) : (1.0f / 4096.0f);
sf->fader = MSG_ReadByte( msg ); sf->fader = MSG_ReadByte( msg );
sf->fadeg = MSG_ReadByte( msg ); sf->fadeg = MSG_ReadByte( msg );
sf->fadeb = MSG_ReadByte( msg ); sf->fadeb = MSG_ReadByte( msg );
sf->fadealpha = MSG_ReadByte( msg ); sf->fadealpha = MSG_ReadByte( msg );
sf->fadeSpeed = 0.0f; sf->fadeSpeed = 0.0f;
sf->fadeEnd = duration; sf->fadeEnd = duration * flScale;
sf->fadeReset = holdTime; sf->fadeReset = holdTime * flScale;
// calc fade speed // calc fade speed
if( duration > 0 ) if( duration > 0 )

View File

@ -94,7 +94,7 @@ int CL_FxBlend( cl_entity_t *e )
break; break;
// JAY: HACK for now -- not time based // JAY: HACK for now -- not time based
case kRenderFxFadeSlow: case kRenderFxFadeSlow:
if( tr.frametime ) if( RP_NORMALPASS( ))
{ {
if( e->curstate.renderamt > 0 ) if( e->curstate.renderamt > 0 )
e->curstate.renderamt -= 1; e->curstate.renderamt -= 1;
@ -103,7 +103,7 @@ int CL_FxBlend( cl_entity_t *e )
blend = e->curstate.renderamt; blend = e->curstate.renderamt;
break; break;
case kRenderFxFadeFast: case kRenderFxFadeFast:
if( tr.frametime ) if( RP_NORMALPASS( ))
{ {
if( e->curstate.renderamt > 3 ) if( e->curstate.renderamt > 3 )
e->curstate.renderamt -= 4; e->curstate.renderamt -= 4;
@ -112,7 +112,7 @@ int CL_FxBlend( cl_entity_t *e )
blend = e->curstate.renderamt; blend = e->curstate.renderamt;
break; break;
case kRenderFxSolidSlow: case kRenderFxSolidSlow:
if( tr.frametime ) if( RP_NORMALPASS( ))
{ {
if( e->curstate.renderamt < 255 ) if( e->curstate.renderamt < 255 )
e->curstate.renderamt += 1; e->curstate.renderamt += 1;
@ -121,7 +121,7 @@ int CL_FxBlend( cl_entity_t *e )
blend = e->curstate.renderamt; blend = e->curstate.renderamt;
break; break;
case kRenderFxSolidFast: case kRenderFxSolidFast:
if( tr.frametime ) if( RP_NORMALPASS( ))
{ {
if( e->curstate.renderamt < 252 ) if( e->curstate.renderamt < 252 )
e->curstate.renderamt += 4; e->curstate.renderamt += 4;
@ -867,7 +867,7 @@ void R_RocketFlare( const vec3_t pos )
pTemp->entity.curstate.frame = COM_RandomLong( 0, pTemp->frameMax ); pTemp->entity.curstate.frame = COM_RandomLong( 0, pTemp->frameMax );
pTemp->entity.curstate.scale = 1.0; pTemp->entity.curstate.scale = 1.0;
pTemp->die = cl.time + 0.01f; // when 100 fps die at next frame pTemp->die = cl.time + 0.01f; // when 100 fps die at next frame
pTemp->flags |= FTENT_SPRANIMATE; pTemp->entity.curstate.effects = EF_NOINTERP;
} }
/* /*

View File

@ -910,8 +910,6 @@ void DrawSurfaceDecals( msurface_t *fa, qboolean single, qboolean reverse )
pglEnable( GL_POLYGON_OFFSET_FILL ); pglEnable( GL_POLYGON_OFFSET_FILL );
pglPolygonOffset( -1.0f, -gl_polyoffset->value ); pglPolygonOffset( -1.0f, -gl_polyoffset->value );
} }
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
} }
if( FBitSet( fa->flags, SURF_TRANSPARENT ) && glState.stencilEnabled ) if( FBitSet( fa->flags, SURF_TRANSPARENT ) && glState.stencilEnabled )
@ -1013,6 +1011,8 @@ void DrawSurfaceDecals( msurface_t *fa, qboolean single, qboolean reverse )
// restore blendfunc here // restore blendfunc here
if( e->curstate.rendermode == kRenderTransAdd || e->curstate.rendermode == kRenderGlow ) if( e->curstate.rendermode == kRenderTransAdd || e->curstate.rendermode == kRenderGlow )
pglBlendFunc( GL_SRC_ALPHA, GL_ONE ); pglBlendFunc( GL_SRC_ALPHA, GL_ONE );
pglTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
} }
} }

View File

@ -142,6 +142,7 @@ typedef struct
float fogStart; float fogStart;
float fogEnd; float fogEnd;
int cached_contents; // in water int cached_contents; // in water
int cached_waterlevel; // was in water
float skyMins[2][6]; float skyMins[2][6];
float skyMaxs[2][6]; float skyMaxs[2][6];

View File

@ -257,7 +257,7 @@ qboolean R_AddEntity( struct cl_entity_s *clent, int type )
if( clent->curstate.effects & EF_NODRAW ) if( clent->curstate.effects & EF_NODRAW )
return false; // done return false; // done
if( clent->curstate.rendermode != kRenderNormal && clent->curstate.renderamt <= 0 ) if( clent->curstate.rendermode != kRenderNormal && CL_FxBlend( clent ) <= 0 )
return true; // invisible return true; // invisible
if( type == ET_FRAGMENTED ) if( type == ET_FRAGMENTED )
@ -715,13 +715,24 @@ static void R_CheckFog( void )
RI.fogEnabled = false; RI.fogEnabled = false;
if( RI.onlyClientDraw || cl.local.waterlevel < 2 || !RI.drawWorld || !RI.viewleaf ) if( RI.onlyClientDraw || cl.local.waterlevel < 2 || !RI.drawWorld || !RI.viewleaf )
{
if( RI.cached_waterlevel == 3 )
{
// in some cases waterlevel jumps from 3 to 1. Catch it
RI.cached_waterlevel = cl.local.waterlevel;
RI.cached_contents = CONTENTS_EMPTY;
pglDisable( GL_FOG );
}
return; return;
}
ent = CL_GetWaterEntity( RI.vieworg ); ent = CL_GetWaterEntity( RI.vieworg );
if( ent && ent->model && ent->model->type == mod_brush && ent->curstate.skin < 0 ) if( ent && ent->model && ent->model->type == mod_brush && ent->curstate.skin < 0 )
cnt = ent->curstate.skin; cnt = ent->curstate.skin;
else cnt = RI.viewleaf->contents; else cnt = RI.viewleaf->contents;
RI.cached_waterlevel = cl.local.waterlevel;
if( IsLiquidContents( RI.cached_contents ) && !IsLiquidContents( cnt )) if( IsLiquidContents( RI.cached_contents ) && !IsLiquidContents( cnt ))
{ {
RI.cached_contents = CONTENTS_EMPTY; RI.cached_contents = CONTENTS_EMPTY;
@ -773,13 +784,13 @@ static void R_CheckFog( void )
RI.fogColor[3] = 1.0f; RI.fogColor[3] = 1.0f;
RI.fogCustom = false; RI.fogCustom = false;
RI.fogEnabled = true; RI.fogEnabled = true;
RI.fogSkybox = false; RI.fogSkybox = true;
} }
else else
{ {
RI.fogCustom = false; RI.fogCustom = false;
RI.fogEnabled = true; RI.fogEnabled = true;
RI.fogSkybox = false; RI.fogSkybox = true;
} }
} }

View File

@ -1032,9 +1032,7 @@ void R_RenderDetails( void )
pglEnable( GL_BLEND ); pglEnable( GL_BLEND );
pglBlendFunc( GL_DST_COLOR, GL_SRC_COLOR ); pglBlendFunc( GL_DST_COLOR, GL_SRC_COLOR );
pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL );
pglDepthFunc( GL_EQUAL );
if( RI.currententity->curstate.rendermode == kRenderTransAlpha )
pglDepthFunc( GL_EQUAL );
for( i = 1; i < MAX_TEXTURES; i++ ) for( i = 1; i < MAX_TEXTURES; i++ )
{ {
@ -1056,9 +1054,7 @@ void R_RenderDetails( void )
pglDisable( GL_BLEND ); pglDisable( GL_BLEND );
pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE ); pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE );
pglDepthFunc( GL_LEQUAL );
if( RI.currententity->curstate.rendermode == kRenderTransAlpha )
pglDepthFunc( GL_LEQUAL );
draw_details = false; draw_details = false;

View File

@ -2760,6 +2760,15 @@ static void R_StudioClientEvents( void )
if( g_studio.frametime == 0.0 ) if( g_studio.frametime == 0.0 )
return; // gamepaused return; // gamepaused
// fill attachments with interpolated origin
if( m_pStudioHeader->numattachments <= 0 )
{
Matrix3x4_OriginFromMatrix( g_studio.rotationmatrix, e->attachment[0] );
Matrix3x4_OriginFromMatrix( g_studio.rotationmatrix, e->attachment[1] );
Matrix3x4_OriginFromMatrix( g_studio.rotationmatrix, e->attachment[2] );
Matrix3x4_OriginFromMatrix( g_studio.rotationmatrix, e->attachment[3] );
}
if( FBitSet( e->curstate.effects, EF_MUZZLEFLASH )) if( FBitSet( e->curstate.effects, EF_MUZZLEFLASH ))
{ {
dlight_t *el = CL_AllocElight( 0 ); dlight_t *el = CL_AllocElight( 0 );

View File

@ -414,7 +414,9 @@ void R_DrawSkyBox( void )
if( RI.skyMins[0][i] >= RI.skyMaxs[0][i] || RI.skyMins[1][i] >= RI.skyMaxs[1][i] ) if( RI.skyMins[0][i] >= RI.skyMaxs[0][i] || RI.skyMins[1][i] >= RI.skyMaxs[1][i] )
continue; continue;
GL_Bind( GL_TEXTURE0, tr.skyboxTextures[r_skyTexOrder[i]] ); if( tr.skyboxTextures[r_skyTexOrder[i]] )
GL_Bind( GL_TEXTURE0, tr.skyboxTextures[r_skyTexOrder[i]] );
else GL_Bind( GL_TEXTURE0, tr.skyTexture ); // stub
pglBegin( GL_QUADS ); pglBegin( GL_QUADS );
MakeSkyVec( RI.skyMins[0][i], RI.skyMins[1][i], i ); MakeSkyVec( RI.skyMins[0][i], RI.skyMins[1][i], i );

View File

@ -97,7 +97,7 @@ typedef enum
// PERFORMANCE INFO // PERFORMANCE INFO
#define MIN_FPS 20.0 // host minimum fps value for maxfps. #define MIN_FPS 20.0 // host minimum fps value for maxfps.
#define MAX_FPS 100.0 // upper limit for maxfps. #define MAX_FPS 200.0 // upper limit for maxfps.
#define HOST_FPS 72.0 // multiplayer games typical fps #define HOST_FPS 72.0 // multiplayer games typical fps
#define MAX_FRAMETIME 0.25 #define MAX_FRAMETIME 0.25

View File

@ -31,7 +31,7 @@ void BuildGammaTable( float lightgamma, float brightness )
float f, g, g1, g3; float f, g, g1, g3;
lightgamma = bound( 1.8f, lightgamma, 3.0f ); lightgamma = bound( 1.8f, lightgamma, 3.0f );
brightness = bound( 0.0f, brightness, 3.0f ); brightness = bound( 0.0f, brightness, 10.0f );
if( brightness <= 0.0f ) if( brightness <= 0.0f )
g3 = 0.125f; g3 = 0.125f;

View File

@ -317,18 +317,15 @@ void Image_SetPalette( const byte *pal, uint *d_table )
} }
break; break;
case LUMP_MASKED: case LUMP_MASKED:
for( i = 0; i < 256; i++ ) for( i = 0; i < 255; i++ )
{ {
if( i != 255 ) rgba[0] = pal[i*3+0];
{ rgba[1] = pal[i*3+1];
rgba[0] = pal[i*3+0]; rgba[2] = pal[i*3+2];
rgba[1] = pal[i*3+1]; rgba[3] = 0xFF;
rgba[2] = pal[i*3+2]; d_table[i] = *(uint *)rgba;
rgba[3] = 0xFF;
d_table[i] = *(uint *)rgba;
}
else d_table[i] = 0;
} }
d_table[255] = 0;
break; break;
case LUMP_EXTENDED: case LUMP_EXTENDED:
for( i = 0; i < 256; i++ ) for( i = 0; i < 256; i++ )

View File

@ -611,7 +611,7 @@ void Mod_Init( void )
{ {
com_studiocache = Mem_AllocPool( "Studio Cache" ); com_studiocache = Mem_AllocPool( "Studio Cache" );
mod_studiocache = Cvar_Get( "r_studiocache", "1", FCVAR_ARCHIVE, "enables studio cache for speedup tracing hitboxes" ); mod_studiocache = Cvar_Get( "r_studiocache", "1", FCVAR_ARCHIVE, "enables studio cache for speedup tracing hitboxes" );
r_wadtextures = Cvar_Get( "r_wadtextures", "1", FCVAR_ARCHIVE, "completely ignore textures in the wad-files if disabled" ); r_wadtextures = Cvar_Get( "r_wadtextures", "0", 0, "completely ignore textures in the wad-files if disabled" );
Cmd_AddCommand( "mapstats", Mod_PrintBSPFileSizes_f, "show stats for currently loaded map" ); Cmd_AddCommand( "mapstats", Mod_PrintBSPFileSizes_f, "show stats for currently loaded map" );
Cmd_AddCommand( "modellist", Mod_Modellist_f, "display loaded models list" ); Cmd_AddCommand( "modellist", Mod_Modellist_f, "display loaded models list" );

View File

@ -6,7 +6,7 @@
--------------------Configuration: engine - Win32 Release-------------------- --------------------Configuration: engine - Win32 Release--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\WINDOWS\TEMP\RSP75B3.bat" with contents Creating temporary file "C:\WINDOWS\TEMP\RSP964B.bat" with contents
[ [
@echo off @echo off
copy \Xash3D\src_main\temp\engine\!release\xash.dll "D:\Xash3D\xash.dll" copy \Xash3D\src_main\temp\engine\!release\xash.dll "D:\Xash3D\xash.dll"
@ -14,7 +14,7 @@ copy \Xash3D\src_main\temp\engine\!release\xash.dll "D:\Paranoia2\xash.dll"
copy \Xash3D\src_main\temp\engine\!release\xash.dll "D:\Area51\xash.dll" copy \Xash3D\src_main\temp\engine\!release\xash.dll "D:\Area51\xash.dll"
copy \Xash3D\src_main\temp\engine\!release\xash.dll "D:\Quake\xash.dll" copy \Xash3D\src_main\temp\engine\!release\xash.dll "D:\Quake\xash.dll"
] ]
Creating command line "C:\WINDOWS\TEMP\RSP75B3.bat" Creating command line "C:\WINDOWS\TEMP\RSP964B.bat"
<h3>Output Window</h3> <h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\engine\!release\xash.dll Performing Custom Build Step on \Xash3D\src_main\temp\engine\!release\xash.dll
‘ª®¯¨à®¢ ­® ä ©«®¢: 1. ‘ª®¯¨à®¢ ­® ä ©«®¢: 1.

View File

@ -36,7 +36,7 @@ extern int gmsgFade;
#define FFADE_OUT 0x0001 // Fade out (not in) #define FFADE_OUT 0x0001 // Fade out (not in)
#define FFADE_MODULATE 0x0002 // Modulate (don't blend) #define FFADE_MODULATE 0x0002 // Modulate (don't blend)
#define FFADE_STAYOUT 0x0004 // ignores the duration, stays faded out until new ScreenFade message received #define FFADE_STAYOUT 0x0004 // ignores the duration, stays faded out until new ScreenFade message received
#define FFADE_LONGFADE 0x0008 // used to indicate the fade can be longer than 16 seconds (added for czero)
// This structure is sent over the net to describe a screen fade event // This structure is sent over the net to describe a screen fade event
typedef struct typedef struct