PROPERLY ignore sky brushes for minimap

This commit is contained in:
Rudolf Polzer 2011-12-09 16:36:07 +01:00 committed by Thomas Debesse
parent 4d47b8ed5b
commit e089323ef2
3 changed files with 15 additions and 67 deletions

View file

@ -2774,7 +2774,8 @@ void IlluminateVertexes( int num ){
determines opaque brushes in the world and find sky shaders for sunlight calculations determines opaque brushes in the world and find sky shaders for sunlight calculations
*/ */
void SetupBrushes( void ){ void SetupBrushesFlags( int mask, int test )
{
int i, j, b, compileFlags; int i, j, b, compileFlags;
qboolean inside; qboolean inside;
bspBrush_t *brush; bspBrush_t *brush;
@ -2822,8 +2823,9 @@ void SetupBrushes( void ){
} }
/* determine if this brush is opaque to light */ /* determine if this brush is opaque to light */
if ( !( compileFlags & C_TRANSLUCENT ) ) { if( (compileFlags & mask) == test )
opaqueBrushes[ b >> 3 ] |= ( 1 << ( b & 7 ) ); {
opaqueBrushes[ b >> 3 ] |= (1 << (b & 7));
numOpaqueBrushes++; numOpaqueBrushes++;
maxOpaqueBrush = i; maxOpaqueBrush = i;
} }
@ -2832,6 +2834,10 @@ void SetupBrushes( void ){
/* emit some statistics */ /* emit some statistics */
Sys_FPrintf( SYS_VRB, "%9d opaque brushes\n", numOpaqueBrushes ); Sys_FPrintf( SYS_VRB, "%9d opaque brushes\n", numOpaqueBrushes );
} }
void SetupBrushes( void )
{
SetupBrushesFlags(C_TRANSLUCENT, 0);
}

View file

@ -389,67 +389,7 @@ determines solid non-sky brushes in the world
void MiniMapSetupBrushes( void ) void MiniMapSetupBrushes( void )
{ {
int i, b, compileFlags; SetupBrushesFlags(C_SOLID | C_SKY, C_SOLID);
bspBrush_t *brush;
bspShader_t *shader;
shaderInfo_t *si;
/* note it */
Sys_FPrintf( SYS_VRB, "--- MiniMapSetupBrushes ---\n" );
/* allocate */
if( opaqueBrushes == NULL )
opaqueBrushes = safe_malloc( numBSPBrushes / 8 + 1 );
/* clear */
memset( opaqueBrushes, 0, numBSPBrushes / 8 + 1 );
numOpaqueBrushes = 0;
/* walk the list of worldspawn brushes */
for( i = 0; i < minimap.model->numBSPBrushes; i++ )
{
/* get brush */
b = minimap.model->firstBSPBrush + i;
brush = &bspBrushes[ b ];
#if 0
/* check all sides */
compileFlags = 0;
for( j = 0; j < brush->numSides; j++ )
{
/* do bsp shader calculations */
side = &bspBrushSides[ brush->firstSide + j ];
shader = &bspShaders[ side->shaderNum ];
/* get shader info */
si = ShaderInfoForShader( shader->shader );
if( si == NULL )
continue;
/* or together compile flags */
compileFlags |= si->compileFlags;
}
#else
shader = &bspShaders[ brush->shaderNum ];
si = ShaderInfoForShader( shader->shader );
if( si == NULL )
compileFlags = 0;
else
compileFlags = si->compileFlags;
#endif
/* determine if this brush is solid */
if( (compileFlags & (C_SOLID | C_SKY)) == C_SOLID )
{
opaqueBrushes[ b >> 3 ] |= (1 << (b & 7));
numOpaqueBrushes++;
maxOpaqueBrush = i;
}
}
/* emit some statistics */
Sys_FPrintf( SYS_VRB, "%9d solid brushes\n", numOpaqueBrushes );
} }
qboolean MiniMapEvaluateSampleOffsets(int *bestj, int *bestk, float *bestval) qboolean MiniMapEvaluateSampleOffsets(int *bestj, int *bestk, float *bestval)
@ -794,6 +734,7 @@ int MiniMapBSPMain( int argc, char **argv )
float s, o; float s, o;
// TODO threads! // TODO threads!
q = minimap.data1f;
for(y = 0; y < minimap.height; ++y) for(y = 0; y < minimap.height; ++y)
for(x = 0; x < minimap.width; ++x) for(x = 0; x < minimap.width; ++x)
{ {
@ -815,7 +756,7 @@ int MiniMapBSPMain( int argc, char **argv )
minimap.brightness = minimap.brightness - minimap.contrast * o; minimap.brightness = minimap.brightness - minimap.contrast * o;
minimap.contrast *= s; minimap.contrast *= s;
Sys_Printf( "Auto level: Brightness changed to %f\n", minimap.boost ); Sys_Printf( "Auto level: Brightness changed to %f\n", minimap.brightness );
Sys_Printf( "Auto level: Contrast changed to %f\n", minimap.contrast ); Sys_Printf( "Auto level: Contrast changed to %f\n", minimap.contrast );
} }

View file

@ -1764,6 +1764,7 @@ void DirtyRawLightmap( int num );
void IlluminateRawLightmap( int num ); void IlluminateRawLightmap( int num );
void IlluminateVertexes( int num ); void IlluminateVertexes( int num );
void SetupBrushesFlags( int mask, int test );
void SetupBrushes( void ); void SetupBrushes( void );
void SetupClusters( void ); void SetupClusters( void );
qboolean ClusterVisible( int a, int b ); qboolean ClusterVisible( int a, int b );