From: rpolzer Date: Tue, 30 Sep 2008 13:29:31 +0000 (+0000) Subject: fix deluxemap when lit from the wrong side as good as possible (by ignoring the delux... X-Git-Tag: svn-r421~309 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=ef9e16cdb9e2e971abc7a39c8757e1b32cdf848a;p=xonotic%2Fnetradiant.git 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 --- 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 ); + } } } }