force subsampling only where REALLY needed
This commit is contained in:
parent
382e2da9a0
commit
c13784bc3a
|
|
@ -758,7 +758,7 @@ int LightContributionToSample( trace_t *trace )
|
|||
light = trace->light;
|
||||
|
||||
/* clear color */
|
||||
trace->forceSubsampling = qfalse; /* to make sure */
|
||||
trace->forceSubsampling = 0.0f; /* to make sure */
|
||||
VectorClear( trace->color );
|
||||
VectorClear( trace->colorNoShadow );
|
||||
VectorClear( trace->directionContribution );
|
||||
|
|
@ -1091,6 +1091,7 @@ int LightContributionToSample( trace_t *trace )
|
|||
{
|
||||
/* trace */
|
||||
TraceLine( trace );
|
||||
trace->forceSubsampling *= add;
|
||||
if( !(trace->compileFlags & C_SKY) || trace->opaque )
|
||||
{
|
||||
VectorClear( trace->color );
|
||||
|
|
@ -1145,6 +1146,7 @@ int LightContributionToSample( trace_t *trace )
|
|||
|
||||
/* raytrace */
|
||||
TraceLine( trace );
|
||||
trace->forceSubsampling *= add;
|
||||
if( trace->passSolid || trace->opaque )
|
||||
{
|
||||
VectorClear( trace->color );
|
||||
|
|
|
|||
|
|
@ -1513,7 +1513,7 @@ qboolean TraceTriangle( traceInfo_t *ti, traceTriangle_t *tt, trace_t *trace )
|
|||
}
|
||||
|
||||
/* force subsampling because the lighting is texture dependent */
|
||||
trace->forceSubsampling = qtrue;
|
||||
trace->forceSubsampling = 1.0;
|
||||
|
||||
/* try to avoid double shadows near triangle seams */
|
||||
if( u < -ASLF_EPSILON || u > (1.0f + ASLF_EPSILON) ||
|
||||
|
|
|
|||
|
|
@ -1817,7 +1817,7 @@ static void SubsampleRawLuxel_r( rawLightmap_t *lm, trace_t *trace, vec3_t sampl
|
|||
/* sample light */
|
||||
|
||||
LightContributionToSample( trace );
|
||||
if(trace->forceSubsampling)
|
||||
if(trace->forceSubsampling > 1.0f)
|
||||
{
|
||||
/* alphashadow: we subsample as deep as we can */
|
||||
++lighted;
|
||||
|
|
@ -2152,7 +2152,7 @@ void IlluminateRawLightmap( int rawLightmapNum )
|
|||
VectorAdd( deluxel, trace.directionContribution, deluxel );
|
||||
|
||||
/* check for evilness */
|
||||
if(trace.forceSubsampling && lightSamples > 1 && luxelFilterRadius == 0)
|
||||
if(trace.forceSubsampling > 1.0f && lightSamples > 1 && luxelFilterRadius == 0)
|
||||
{
|
||||
totalLighted++;
|
||||
*flag |= FLAG_FORCE_SUBSAMPLING; /* force */
|
||||
|
|
|
|||
|
|
@ -1363,7 +1363,7 @@ typedef struct
|
|||
int compileFlags; /* for determining surface compile flags traced through */
|
||||
qboolean passSolid;
|
||||
qboolean opaque;
|
||||
qboolean forceSubsampling; /* needs subsampling (alphashadow) */
|
||||
vec_t forceSubsampling; /* needs subsampling (alphashadow), value = max color contribution possible from it */
|
||||
|
||||
/* working data */
|
||||
int numTestNodes;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user