From e089323ef23aebdbfb6ab4b0030cd5a1ed9bbb93 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Fri, 9 Dec 2011 16:36:07 +0100 Subject: [PATCH] PROPERLY ignore sky brushes for minimap --- tools/quake3/q3map2/light_ydnar.c | 16 +++++--- tools/quake3/q3map2/main.c | 65 ++----------------------------- tools/quake3/q3map2/q3map2.h | 1 + 3 files changed, 15 insertions(+), 67 deletions(-) diff --git a/tools/quake3/q3map2/light_ydnar.c b/tools/quake3/q3map2/light_ydnar.c index 117167c2..4bfbd1da 100644 --- a/tools/quake3/q3map2/light_ydnar.c +++ b/tools/quake3/q3map2/light_ydnar.c @@ -2774,15 +2774,16 @@ void IlluminateVertexes( int num ){ 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; qboolean inside; bspBrush_t *brush; bspBrushSide_t *side; bspShader_t *shader; shaderInfo_t *si; - - + + /* note it */ Sys_FPrintf( SYS_VRB, "--- SetupBrushes ---\n" ); @@ -2822,8 +2823,9 @@ void SetupBrushes( void ){ } /* determine if this brush is opaque to light */ - if ( !( compileFlags & C_TRANSLUCENT ) ) { - opaqueBrushes[ b >> 3 ] |= ( 1 << ( b & 7 ) ); + if( (compileFlags & mask) == test ) + { + opaqueBrushes[ b >> 3 ] |= (1 << (b & 7)); numOpaqueBrushes++; maxOpaqueBrush = i; } @@ -2832,6 +2834,10 @@ void SetupBrushes( void ){ /* emit some statistics */ Sys_FPrintf( SYS_VRB, "%9d opaque brushes\n", numOpaqueBrushes ); } +void SetupBrushes( void ) +{ + SetupBrushesFlags(C_TRANSLUCENT, 0); +} diff --git a/tools/quake3/q3map2/main.c b/tools/quake3/q3map2/main.c index 9bad6044..b1d5a547 100644 --- a/tools/quake3/q3map2/main.c +++ b/tools/quake3/q3map2/main.c @@ -389,67 +389,7 @@ determines solid non-sky brushes in the world void MiniMapSetupBrushes( void ) { - int i, b, compileFlags; - 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 ); + SetupBrushesFlags(C_SOLID | C_SKY, C_SOLID); } qboolean MiniMapEvaluateSampleOffsets(int *bestj, int *bestk, float *bestval) @@ -794,6 +734,7 @@ int MiniMapBSPMain( int argc, char **argv ) float s, o; // TODO threads! + q = minimap.data1f; for(y = 0; y < minimap.height; ++y) 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.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 ); } diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index 42c94659..08e9b1c8 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -1764,6 +1764,7 @@ void DirtyRawLightmap( int num ); void IlluminateRawLightmap( int num ); void IlluminateVertexes( int num ); +void SetupBrushesFlags( int mask, int test ); void SetupBrushes( void ); void SetupClusters( void ); qboolean ClusterVisible( int a, int b );