From: Rudolf Polzer Date: Thu, 23 Sep 2010 06:30:17 +0000 (+0200) Subject: more deluxemap+surfacelight fixes X-Git-Tag: xonotic-v0.5.0~211^2 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=30a8c2c22c5e5bc4f11b86f41884dc606779fe29;p=xonotic%2Fnetradiant.git more deluxemap+surfacelight fixes --- diff --git a/tools/quake3/q3map2/light.c b/tools/quake3/q3map2/light.c index 2a20d6c4..c072be0c 100644 --- a/tools/quake3/q3map2/light.c +++ b/tools/quake3/q3map2/light.c @@ -822,7 +822,7 @@ int LightContributionToSample( trace_t *trace ) angle = DotProduct( trace->normal, trace->direction ); /* twosided lighting */ - if( trace->twoSided ) + if( trace->twoSided && angle < 0 ) { angle = -angle; @@ -836,8 +836,13 @@ int LightContributionToSample( trace_t *trace ) return 0; else if( angle < 0.0f && (trace->twoSided || (light->flags & LIGHT_TWOSIDED)) ) + { angle = -angle; + /* no deluxemap contribution from "other side" light */ + doAddDeluxe = qfalse; + } + /* clamp the distance to prevent super hot spots */ dist = sqrt(dist * dist + light->extraDist * light->extraDist); if( dist < 16.0f ) @@ -878,6 +883,13 @@ int LightContributionToSample( trace_t *trace ) else return 0; } + + /* also don't deluxe if the direction is on the wrong side */ + if(DotProduct(trace->normal, trace->direction) < 0) + { + /* no deluxemap contribution from "other side" light */ + doAddDeluxe = qfalse; + } /* ydnar: moved to here */ add = factor * light->add;