From 30a8c2c22c5e5bc4f11b86f41884dc606779fe29 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Thu, 23 Sep 2010 08:30:17 +0200 Subject: [PATCH] more deluxemap+surfacelight fixes --- tools/quake3/q3map2/light.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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; -- 2.39.2