mirror of
https://github.com/UberGames/lilium-voyager.git
synced 2025-01-31 03:10:33 +00:00
Don't scale shadow multipliers by overbrightbits, and improve documentation.
This commit is contained in:
parent
feb012152c
commit
8270d54a25
6 changed files with 52 additions and 26 deletions
|
@ -3277,7 +3277,8 @@ void RE_LoadWorldMap( const char *name ) {
|
|||
}
|
||||
|
||||
// set default map light scale
|
||||
tr.mapLightScale = 1.0f;
|
||||
tr.mapLightScale = 1.0f;
|
||||
tr.sunShadowScale = 0.5f;
|
||||
|
||||
// set default sun direction to be used if it isn't
|
||||
// overridden by a shader
|
||||
|
|
|
@ -1198,7 +1198,7 @@ void R_Register( void )
|
|||
r_forceSun = ri.Cvar_Get( "r_forceSun", "0", CVAR_CHEAT );
|
||||
r_forceSunMapLightScale = ri.Cvar_Get( "r_forceSunMapLightScale", "1.0", CVAR_CHEAT );
|
||||
r_forceSunLightScale = ri.Cvar_Get( "r_forceSunLightScale", "1.0", CVAR_CHEAT );
|
||||
r_forceSunAmbientScale = ri.Cvar_Get( "r_forceSunAmbientScale", "0.75", CVAR_CHEAT );
|
||||
r_forceSunAmbientScale = ri.Cvar_Get( "r_forceSunAmbientScale", "0.5", CVAR_CHEAT );
|
||||
r_drawSunRays = ri.Cvar_Get( "r_drawSunRays", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_sunlightMode = ri.Cvar_Get( "r_sunlightMode", "1", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
|
||||
|
|
|
@ -1789,10 +1789,10 @@ typedef struct {
|
|||
int viewCluster;
|
||||
|
||||
float mapLightScale;
|
||||
float sunShadowScale;
|
||||
|
||||
qboolean sunShadows;
|
||||
vec3_t sunLight; // from the sky shader for this level
|
||||
vec3_t sunAmbient;
|
||||
vec3_t sunDirection;
|
||||
|
||||
frontEndCounters_t pc;
|
||||
|
|
|
@ -360,19 +360,34 @@ void RE_RenderScene( const refdef_t *fd ) {
|
|||
VectorSet(tr.refdef.sunCol, 0, 0, 0);
|
||||
VectorSet(tr.refdef.sunAmbCol, 0, 0, 0);
|
||||
}
|
||||
else if (r_forceSun->integer == 1)
|
||||
{
|
||||
float scale = pow(2, r_mapOverBrightBits->integer - tr.overbrightBits - 8);
|
||||
tr.refdef.colorScale = r_forceSunMapLightScale->value;
|
||||
VectorScale(tr.sunLight, scale * r_forceSunLightScale->value, tr.refdef.sunCol);
|
||||
VectorScale(tr.sunLight, scale * r_forceSunAmbientScale->value, tr.refdef.sunAmbCol);
|
||||
}
|
||||
else
|
||||
{
|
||||
float scale = pow(2, r_mapOverBrightBits->integer - tr.overbrightBits - 8);
|
||||
tr.refdef.colorScale = tr.mapLightScale;
|
||||
VectorScale(tr.sunLight, scale, tr.refdef.sunCol);
|
||||
VectorScale(tr.sunAmbient, scale, tr.refdef.sunAmbCol);
|
||||
tr.refdef.colorScale = r_forceSun->integer ? r_forceSunMapLightScale->value : tr.mapLightScale;
|
||||
|
||||
if (r_sunlightMode->integer == 1)
|
||||
{
|
||||
tr.refdef.sunCol[0] =
|
||||
tr.refdef.sunCol[1] =
|
||||
tr.refdef.sunCol[2] = 1.0f;
|
||||
|
||||
tr.refdef.sunAmbCol[0] =
|
||||
tr.refdef.sunAmbCol[1] =
|
||||
tr.refdef.sunAmbCol[2] = r_forceSun->integer ? r_forceSunAmbientScale->value : tr.sunShadowScale;
|
||||
}
|
||||
else
|
||||
{
|
||||
float scale = pow(2, r_mapOverBrightBits->integer - tr.overbrightBits - 8);
|
||||
if (r_forceSun->integer)
|
||||
{
|
||||
VectorScale(tr.sunLight, scale * r_forceSunLightScale->value, tr.refdef.sunCol);
|
||||
VectorScale(tr.sunLight, scale * r_forceSunAmbientScale->value, tr.refdef.sunAmbCol);
|
||||
}
|
||||
else
|
||||
{
|
||||
VectorScale(tr.sunLight, scale, tr.refdef.sunCol);
|
||||
VectorScale(tr.sunLight, scale * tr.sunShadowScale, tr.refdef.sunAmbCol);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (r_forceAutoExposure->integer)
|
||||
|
|
|
@ -1636,8 +1636,6 @@ static qboolean ParseShader( char **text )
|
|||
a = atof( token );
|
||||
VectorScale( tr.sunLight, a, tr.sunLight);
|
||||
|
||||
VectorSet( tr.sunAmbient, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
token = COM_ParseExt( text, qfalse );
|
||||
a = atof( token );
|
||||
a = a / 180 * M_PI;
|
||||
|
@ -1656,7 +1654,7 @@ static qboolean ParseShader( char **text )
|
|||
tr.mapLightScale = atof(token);
|
||||
|
||||
token = COM_ParseExt( text, qfalse );
|
||||
VectorScale( tr.sunLight, atof(token), tr.sunAmbient );
|
||||
tr.sunShadowScale = atof(token);
|
||||
}
|
||||
|
||||
SkipRestOfLine( text );
|
||||
|
|
|
@ -240,21 +240,31 @@ Cvars for the sunlight and cascaded shadow maps:
|
|||
|
||||
r_forceSunMapLightScale - Cheat. Scale map brightness by this factor
|
||||
when r_forceSun 1.
|
||||
0.5 - Default
|
||||
1.0 - Default
|
||||
|
||||
r_forceSunLightScale - Cheat. Scale sun brightness by this factor
|
||||
when r_forceSun 1.
|
||||
0.5 - Default
|
||||
1.0 - Default
|
||||
|
||||
r_forceSunAmbientScale - Cheat. Scale sun ambient brightness by this
|
||||
factor when r_forceSun 1.
|
||||
0.2 - Default
|
||||
0.5 - Default
|
||||
|
||||
r_sunShadows - Enable sunlight and cascaded shadow maps for
|
||||
it on maps that support it.
|
||||
0 - No.
|
||||
1 - Yes. (default)
|
||||
|
||||
r_sunlightMode - Specify the method used to add sunlight to
|
||||
the scene.
|
||||
0 - No.
|
||||
1 - Multiply lit areas by light scale, and
|
||||
shadowed areas by ambient scale.
|
||||
(default)
|
||||
2 - Add light. Looks better, but is slower
|
||||
and doesn't integrate well with existing
|
||||
maps.
|
||||
|
||||
r_shadowFilter - Enable filtering shadows for a smoother
|
||||
look.
|
||||
0 - No.
|
||||
|
@ -468,8 +478,8 @@ and is the equivalent for 'exactVertex'.
|
|||
|
||||
This adds a new keyword to sky materials, q3gl2_sun. The syntax is:
|
||||
|
||||
q3gl2_sun <red> <green> <blue> <intensity> <degrees> <mapLightScale>
|
||||
<ambientLightScale>
|
||||
q3gl2_sun <red> <green> <blue> <intensity> <degrees> <elevation>
|
||||
<mapLightScale> <ambientLightScale>
|
||||
|
||||
Note the first six parameters are the same as in q3map_sun or q3map_sunExt,
|
||||
and the last two indicate scaling factors for the map brightness and an ambient
|
||||
|
@ -477,8 +487,9 @@ light of the same color as the sun.
|
|||
|
||||
There are currently two ways to use this in your own (and other people's) maps.
|
||||
|
||||
1. Create your map as normal and add a 'q3gl2_sun' line after your
|
||||
'q3map_sun' line in your sky material, like so:
|
||||
1. Create your map as normal, set r_sunlightMode to 1, and add a
|
||||
'q3gl2_sun' line after your 'q3map_sun' line in your sky material, like
|
||||
so:
|
||||
|
||||
textures/skies/bluesky
|
||||
{
|
||||
|
@ -489,7 +500,7 @@ There are currently two ways to use this in your own (and other people's) maps.
|
|||
surfaceparm nolightmap
|
||||
surfaceparm sky
|
||||
q3map_sunExt 240 238 200 100 195 35 3 16
|
||||
q3gl2_sun 240 238 200 50 195 35 3 0.5 0.2
|
||||
q3gl2_sun 240 238 200 50 195 35 3 1.0 0.2
|
||||
q3map_skylight 50 16
|
||||
q3map_lightimage $whiteimage
|
||||
|
||||
|
@ -501,7 +512,8 @@ There are currently two ways to use this in your own (and other people's) maps.
|
|||
can be used with existing maps without recompilation. The downside is
|
||||
artifacts like doubled shadows and uneven shadow edges.
|
||||
|
||||
2. Use 'q3gl2_sun' instead of 'q3map_sun' or 'q3map_sunExt', like so:
|
||||
2. Set r_sunlightMode to 2 and use 'q3gl2_sun' instead of 'q3map_sun' or
|
||||
'q3map_sunExt', like so:
|
||||
|
||||
textures/skies/bluesky
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue