add shader key q3map_noDirty, which disables the dirty pass on the surface. It's handy for lightmapped terrain models where dirty produces odd darkness on mesh splits.
This commit is contained in:
parent
1a0d1500f7
commit
778af4dde0
|
|
@ -1546,7 +1546,8 @@ void DirtyRawLightmap( int rawLightmapNum )
|
|||
rawLightmap_t *lm;
|
||||
surfaceInfo_t *info;
|
||||
trace_t trace;
|
||||
|
||||
qboolean noDirty;
|
||||
|
||||
|
||||
/* bail if this number exceeds the number of raw lightmaps */
|
||||
if( rawLightmapNum >= numRawLightmaps )
|
||||
|
|
@ -1578,6 +1579,20 @@ void DirtyRawLightmap( int rawLightmapNum )
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
noDirty = qfalse;
|
||||
for( i = 0; i < trace.numSurfaces; i++ )
|
||||
{
|
||||
/* get surface */
|
||||
info = &surfaceInfos[ trace.surfaces[ i ] ];
|
||||
|
||||
/* check twosidedness */
|
||||
if( info->si->noDirty )
|
||||
{
|
||||
noDirty = qtrue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* gather dirt */
|
||||
for( y = 0; y < lm->sh; y++ )
|
||||
|
|
@ -1596,6 +1611,13 @@ void DirtyRawLightmap( int rawLightmapNum )
|
|||
/* only look at mapped luxels */
|
||||
if( *cluster < 0 )
|
||||
continue;
|
||||
|
||||
/* don't apply dirty on this surface */
|
||||
if( noDirty )
|
||||
{
|
||||
*dirt = 1.0f;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* copy to trace */
|
||||
trace.cluster = *cluster;
|
||||
|
|
|
|||
|
|
@ -749,7 +749,8 @@ typedef struct shaderInfo_s
|
|||
qb_t noFog; /* ydnar: supress fogging */
|
||||
qb_t clipModel; /* ydnar: solid model hack */
|
||||
qb_t noVertexLight; /* ydnar: leave vertex color alone */
|
||||
|
||||
qb_t noDirty; /* jal: do not apply the dirty pass to this surface */
|
||||
|
||||
byte styleMarker; /* ydnar: light styles hack */
|
||||
|
||||
float vertexScale; /* vertex light scale */
|
||||
|
|
|
|||
|
|
@ -1523,6 +1523,12 @@ static void ParseShaderFile( const char *filename )
|
|||
GetTokenAppend( shaderText, qfalse );
|
||||
si->floodlightDirectionScale = atof( token );
|
||||
}
|
||||
|
||||
/* jal: q3map_nodirty : skip dirty */
|
||||
else if( !Q_stricmp( token, "q3map_nodirty" ) )
|
||||
{
|
||||
si->noDirty = qtrue;
|
||||
}
|
||||
|
||||
/* q3map_lightmapSampleSize <value> */
|
||||
else if( !Q_stricmp( token, "q3map_lightmapSampleSize" ) )
|
||||
|
|
@ -1668,7 +1674,7 @@ static void ParseShaderFile( const char *filename )
|
|||
si->offset = atof( token );
|
||||
}
|
||||
|
||||
/* ydnar: q3map_textureSize <width> <height> (substitute for q3map_lightimage derivation for terrain) */
|
||||
/* ydnar: q3map_fur <numlayers> <offset> <fade> */
|
||||
else if( !Q_stricmp( token, "q3map_fur" ) )
|
||||
{
|
||||
GetTokenAppend( shaderText, qfalse );
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user