int angleSteps, elevationSteps;
float angle, elevation;
float angleStep, elevationStep;
- float step, start;
sun_t sun;
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;
if( _color && _color[ 0 ] )
{
sscanf( _color, "%f %f %f", &light->color[ 0 ], &light->color[ 1 ], &light->color[ 2 ] );
+ if (colorsRGB)
+ {
+ light->color[0] = Image_LinearFloatFromsRGBFloat(light->color[0]);
+ light->color[1] = Image_LinearFloatFromsRGBFloat(light->color[1]);
+ light->color[2] = Image_LinearFloatFromsRGBFloat(light->color[2]);
+ }
if (!(light->flags & LIGHT_UNNORMALIZED))
{
ColorNormalize( light->color, light->color );
if(light->extraDist == 0.0f)
light->extraDist = extraDist;
- intensity = intensity * pointScale;
light->photons = intensity;
light->type = EMIT_POINT;
{
Sys_Printf( "WARNING: light at (%i %i %i) has missing target\n",
(int) light->origin[ 0 ], (int) light->origin[ 1 ], (int) light->origin[ 2 ] );
+ light->photons *= pointScale;
}
else
{
/* make a sun */
VectorScale( light->normal, -1.0f, sun.direction );
VectorCopy( light->color, sun.color );
- sun.photons = (intensity / pointScale);
+ sun.photons = intensity;
sun.deviance = deviance / 180.0f * Q_PI;
sun.numSamples = numSamples;
sun.style = noStyles ? LS_NORMAL : light->style;
/* skip the rest of this love story */
continue;
}
+ else
+ {
+ light->photons *= spotScale;
+ }
}
}
+ else
+ light->photons *= pointScale;
/* jitter the light */
for( j = 1; j < numSamples; j++ )
/* find the optional minimum lighting values */
GetVectorForKey( &entities[ 0 ], "_color", color );
+ if (colorsRGB)
+ {
+ color[0] = Image_LinearFloatFromsRGBFloat(color[0]);
+ color[1] = Image_LinearFloatFromsRGBFloat(color[1]);
+ color[2] = Image_LinearFloatFromsRGBFloat(color[2]);
+ }
if( VectorLength( color ) == 0.0f )
VectorSet( color, 1.0, 1.0, 1.0 );
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" );
+
+ texturesRGB = game->texturesRGB;
+ if(texturesRGB)
+ Sys_Printf( " texture colorspace: sRGB\n" );
+ else
+ Sys_Printf( " texture colorspace: linear\n" );
+
+ colorsRGB = game->colorsRGB;
+ if(colorsRGB)
+ Sys_Printf( " _color colorspace: sRGB\n" );
+ else
+ Sys_Printf( " _color colorspace: linear\n" );
+
lightmapCompensate = game->lightmapCompensate;
Sys_Printf( " lightning compensation: %f\n", lightmapCompensate );
else
Sys_Printf( " shader lightstyles hack: enabled\n" );
- keepLights = game->keepLights;
- if (keepLights == qtrue)
- Sys_Printf( " keep lights: enabled\n" );
- else
- Sys_Printf( " keep lights: disabled\n" );
-
patchShadows = game->patchShadows;
if (patchShadows == qtrue)
Sys_Printf( " patch shadows: enabled\n" );
{
f = atof( argv[ i + 1 ] );
pointScale *= f;
- Sys_Printf( "Point (entity) light scaled by %f to %f\n", f, pointScale );
+ spotScale *= f;
+ Sys_Printf( "Spherical point (entity) light scaled by %f to %f\n", f, pointScale );
+ Sys_Printf( "Spot point (entity) light scaled by %f to %f\n", f, spotScale );
+ i++;
+ }
+
+ else if( !strcmp( argv[ i ], "-spherical" ) || !strcmp( argv[ i ], "-sphericalscale" ) )
+ {
+ f = atof( argv[ i + 1 ] );
+ pointScale *= f;
+ Sys_Printf( "Spherical point (entity) light scaled by %f to %f\n", f, pointScale );
+ i++;
+ }
+
+ else if( !strcmp( argv[ i ], "-spot" ) || !strcmp( argv[ i ], "-spotscale" ) )
+ {
+ f = atof( argv[ i + 1 ] );
+ spotScale *= f;
+ Sys_Printf( "Spot point (entity) light scaled by %f to %f\n", f, spotScale );
i++;
}
{
f = atof( argv[ i + 1 ] );
pointScale *= f;
+ spotScale *= f;
areaScale *= f;
skyScale *= f;
bounceScale *= f;
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++;
}
i++;
}
+ else if( !strcmp( argv[ i ], "-sRGBlight" ) )
+ {
+ lightmapsRGB = qtrue;
+ Sys_Printf( "Lighting is in sRGB\n" );
+ }
+
+ else if( !strcmp( argv[ i ], "-nosRGBlight" ) )
+ {
+ lightmapsRGB = qfalse;
+ Sys_Printf( "Lighting is linear\n" );
+ }
+
+ else if( !strcmp( argv[ i ], "-sRGBtex" ) )
+ {
+ texturesRGB = qtrue;
+ Sys_Printf( "Textures are in sRGB\n" );
+ }
+
+ else if( !strcmp( argv[ i ], "-nosRGBtex" ) )
+ {
+ texturesRGB = qfalse;
+ Sys_Printf( "Textures are linear\n" );
+ }
+
+ else if( !strcmp( argv[ i ], "-sRGBcolor" ) )
+ {
+ colorsRGB = qtrue;
+ Sys_Printf( "Colors are in sRGB\n" );
+ }
+
+ else if( !strcmp( argv[ i ], "-nosRGBcolor" ) )
+ {
+ colorsRGB = qfalse;
+ Sys_Printf( "Colors are linear\n" );
+ }
+
else if( !strcmp( argv[ i ], "-exposure" ) )
{
f = atof( argv[ i + 1 ] );
{
if(*argv[i+1] == '+')
lightSamplesInsist = qtrue;
+ else
+ lightSamplesInsist = qfalse;
lightSamples = atoi( argv[ i + 1 ] );
if( lightSamples < 1 )
lightSamples = 1;
noStyles = qfalse;
Sys_Printf( "Enabling lightstyles\n" );
}
- else if( !strcmp( argv[ i ], "-keeplights" ))
- {
- keepLights = qtrue;
- Sys_Printf( "Leaving light entities on map after compile\n" );
- }
else if( !strcmp( argv[ i ], "-cpma" ) )
{
cpmaHack = qtrue;
{
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
{
{
/* somewhat okay */
case 1:
- case 2: lightSamples = 16; break;
+ 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; break;
+ 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; break;
+ case 4:
+ lightSamples = 256;
+ Sys_Printf( "Adaptive supersampling preset enabled with %d random sample(s) per lightmap texel\n", lightSamples );
+ break;
default: break;
}