]> git.rm.cloudns.org Git - xonotic/netradiant.git/commitdiff
more deluxemap+surfacelight fixes
authorRudolf Polzer <divverent@alientrap.org>
Thu, 23 Sep 2010 06:30:17 +0000 (08:30 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 23 Sep 2010 06:30:17 +0000 (08:30 +0200)
tools/quake3/q3map2/light.c

index 2a20d6c4e3d0b4719bfa9fdaca3c15af56d2a625..c072be0c62e88a347580fa1e2bbaa99a21f14450 100644 (file)
@@ -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;