X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=tools%2Fquake3%2Fq3map2%2Flight.c;h=b6dcb1224e1c14589c00f554da66e84353d1f840;hp=c072be0c62e88a347580fa1e2bbaa99a21f14450;hb=98bf67071d2f878028003b14b9d1bcf8d81787f6;hpb=1773a1823c77d3127d92151de0da290d362542b2 diff --git a/tools/quake3/q3map2/light.c b/tools/quake3/q3map2/light.c index c072be0c..b6dcb122 100644 --- a/tools/quake3/q3map2/light.c +++ b/tools/quake3/q3map2/light.c @@ -148,7 +148,6 @@ static void CreateSkyLights( vec3_t color, float value, int iterations, float fi int angleSteps, elevationSteps; float angle, elevation; float angleStep, elevationStep; - float step, start; sun_t sun; @@ -156,10 +155,6 @@ static void CreateSkyLights( vec3_t color, float value, int iterations, float fi if( value <= 0.0f || iterations < 2 ) return; - /* calculate some stuff */ - step = 2.0f / (iterations - 1); - start = -1.0f; - /* basic sun setup */ VectorCopy( color, sun.color ); sun.deviance = 0.0f; @@ -1116,6 +1111,8 @@ int LightContributionToSample( trace_t *trace ) /* return to sender */ return 1; } + else + Error("Light of undefined type!"); /* VorteX: set noShadow color */ VectorScale(light->color, add, trace->colorNoShadow); @@ -1830,7 +1827,7 @@ void LightWorld( void ) vec3_t color; float f; int b, bt; - qboolean minVertex, minGrid, ps; + qboolean minVertex, minGrid; const char *value; @@ -2048,6 +2045,7 @@ int LightMain( int argc, char **argv ) char mapSource[ 1024 ]; const char *value; int lightmapMergeSize = 0; + qboolean lightSamplesInsist = qfalse; /* note it */ @@ -2067,6 +2065,12 @@ int LightMain( int argc, char **argv ) lightmapGamma = game->lightmapGamma; Sys_Printf( " lightning gamma: %f\n", lightmapGamma ); + lightmapsRGB = game->lightmapsRGB; + if(lightmapsRGB) + Sys_Printf( " lightmap colorspace: sRGB\n" ); + else + Sys_Printf( " lightmap colorspace: linear\n" ); + lightmapCompensate = game->lightmapCompensate; Sys_Printf( " lightning compensation: %f\n", lightmapCompensate ); @@ -2181,20 +2185,20 @@ int LightMain( int argc, char **argv ) else if( !strcmp( argv[ i ], "-griddirectionality" ) ) { f = atof( argv[ i + 1 ] ); - if(f < 0) f = 0; - if(f > gridAmbientDirectionality) f = gridAmbientDirectionality; + if(f > 1) f = 1; + if(f < gridAmbientDirectionality) gridAmbientDirectionality = f; Sys_Printf( "Grid directionality is %f\n", f ); - gridDirectionality *= f; + gridDirectionality = f; i++; } else if( !strcmp( argv[ i ], "-gridambientdirectionality" ) ) { f = atof( argv[ i + 1 ] ); - if(f > gridDirectionality) f = gridDirectionality; - if(f > 1) f = 1; + if(f < -1) f = -1; + if(f > gridDirectionality) gridDirectionality = f; Sys_Printf( "Grid ambient directionality is %f\n", f ); - gridAmbientDirectionality *= f; + gridAmbientDirectionality = f; i++; } @@ -2206,6 +2210,18 @@ int LightMain( int argc, char **argv ) i++; } + else if( !strcmp( argv[ i ], "-sRGB" ) ) + { + lightmapsRGB = qtrue; + Sys_Printf( "Lighting is in sRGB\n" ); + } + + else if( !strcmp( argv[ i ], "-nosRGB" ) ) + { + lightmapsRGB = qfalse; + Sys_Printf( "Lighting is linear\n" ); + } + else if( !strcmp( argv[ i ], "-exposure" ) ) { f = atof( argv[ i + 1 ] ); @@ -2245,8 +2261,18 @@ int LightMain( int argc, char **argv ) i++; } + else if( !strcmp( argv[ i ], "-randomsamples" ) ) + { + lightRandomSamples = qtrue; + Sys_Printf( "Random sampling enabled\n", lightRandomSamples ); + } + else if( !strcmp( argv[ i ], "-samples" ) ) { + if(*argv[i+1] == '+') + lightSamplesInsist = qtrue; + else + lightSamplesInsist = qfalse; lightSamples = atoi( argv[ i + 1 ] ); if( lightSamples < 1 ) lightSamples = 1; @@ -2741,6 +2767,11 @@ int LightMain( int argc, char **argv ) { lightmapExtraVisClusterNudge = qtrue; } + else if( !strcmp( argv[ i ], "-fill" ) ) + { + lightmapFill = qtrue; + Sys_Printf( "Filling lightmap colors from surrounding pixels to improve JPEG compression\n" ); + } /* unhandled args */ else { @@ -2749,6 +2780,38 @@ int LightMain( int argc, char **argv ) } + /* fix up samples count */ + if(lightRandomSamples) + { + if(!lightSamplesInsist) + { + /* approximately match -samples in quality */ + switch(lightSamples) + { + /* somewhat okay */ + case 1: + case 2: + lightSamples = 16; + Sys_Printf( "Adaptive supersampling preset enabled with %d random sample(s) per lightmap texel\n", lightSamples ); + break; + + /* good */ + case 3: + lightSamples = 64; + Sys_Printf( "Adaptive supersampling preset enabled with %d random sample(s) per lightmap texel\n", lightSamples ); + break; + + /* perfect */ + case 4: + lightSamples = 256; + Sys_Printf( "Adaptive supersampling preset enabled with %d random sample(s) per lightmap texel\n", lightSamples ); + break; + + default: break; + } + } + } + /* fix up lightmap search power */ if(lightmapMergeSize) { @@ -2792,7 +2855,7 @@ int LightMain( int argc, char **argv ) /* load map file */ value = ValueForKey( &entities[ 0 ], "_keepLights" ); if( value[ 0 ] != '1' ) - LoadMapFile( mapSource, qtrue ); + LoadMapFile( mapSource, qtrue, qfalse ); /* set the entity/model origins and init yDrawVerts */ SetEntityOrigins();