From ef9e16cdb9e2e971abc7a39c8757e1b32cdf848a Mon Sep 17 00:00:00 2001 From: rpolzer Date: Tue, 30 Sep 2008 13:29:31 +0000 Subject: [PATCH] fix deluxemap when lit from the wrong side as good as possible (by ignoring the deluxemap contribution). now the invariant "deluxemap vector points away from the surface" should hold. cull none + deluxemapping still is broken by design, but less broken now. git-svn-id: svn://svn.icculus.org/netradiant/trunk@111 61c419a2-8eb2-4b30-bcec-8cead039b335 --- tools/quake3/q3map2/light_ydnar.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/quake3/q3map2/light_ydnar.c b/tools/quake3/q3map2/light_ydnar.c index e11f3400..801ef5ac 100644 --- a/tools/quake3/q3map2/light_ydnar.c +++ b/tools/quake3/q3map2/light_ydnar.c @@ -2101,11 +2101,14 @@ void IlluminateRawLightmap( int rawLightmapNum ) /* add to light direction map (fixme: use luxel normal as starting point for deluxel?) */ if( deluxemap ) { - /* color to grayscale (photoshop rgb weighting) */ - brightness = trace.color[ 0 ] * 0.3f + trace.color[ 1 ] * 0.59f + trace.color[ 2 ] * 0.11f; - brightness *= (1.0 / 255.0); - VectorScale( trace.direction, brightness, trace.direction ); - VectorAdd( deluxel, trace.direction, deluxel ); + if(DotProduct(normal, trace.direction) > 0) // do not take light from the back side + { + /* color to grayscale (photoshop rgb weighting) */ + brightness = trace.color[ 0 ] * 0.3f + trace.color[ 1 ] * 0.59f + trace.color[ 2 ] * 0.11f; + brightness *= (1.0 / 255.0); + VectorScale( trace.direction, brightness, trace.direction ); + VectorAdd( deluxel, trace.direction, deluxel ); + } } } } -- 2.39.2