[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13873] trunk/blender/source/blender/ render/intern/source/rayshade.c:

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Feb 26 14:05:19 CET 2008


Revision: 13873
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13873
Author:   blendix
Date:     2008-02-26 14:05:18 +0100 (Tue, 26 Feb 2008)

Log Message:
-----------

Tweak bugfix #8347 a bit, the self intersection problem with raytraced
shadows and jittering.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/rayshade.c

Modified: trunk/blender/source/blender/render/intern/source/rayshade.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rayshade.c	2008-02-26 11:48:12 UTC (rev 13872)
+++ trunk/blender/source/blender/render/intern/source/rayshade.c	2008-02-26 13:05:18 UTC (rev 13873)
@@ -1808,11 +1808,6 @@
 			pos[0] += shi->dxco[0]*jit[0] + shi->dyco[0]*jit[1];
 			pos[1] += shi->dxco[1]*jit[0] + shi->dyco[1]*jit[1];
 			pos[2] += shi->dxco[2]*jit[0] + shi->dyco[2]*jit[1];
-			
-			/* bias away somewhat to avoid self intersection */
-			pos[0] -= jitbias*shi->vn[0];
-			pos[1] -= jitbias*shi->vn[1];
-			pos[2] -= jitbias*shi->vn[2];
 		}
 
 		if (do_soft) {
@@ -1836,6 +1831,13 @@
 				s[2] = samp3d[0]*ru[2] + samp3d[1]*rv[2];
 				
 				VECCOPY(samp3d, s);
+
+				if(jitbias != 0.0f) {
+					/* bias away somewhat to avoid self intersection */
+					pos[0] -= jitbias*v[0];
+					pos[1] -= jitbias*v[1];
+					pos[2] -= jitbias*v[2];
+				}
 			}
 			else {
 				/* sampling, returns quasi-random vector in [sizex,sizey]^2 plane */
@@ -1850,6 +1852,19 @@
 		} else {
 			VECCOPY(isec->end, vec);
 		}
+
+		if(jitbias != 0.0f && !(do_soft && lar->type==LA_LOCAL)) {
+			/* bias away somewhat to avoid self intersection */
+			float v[3];
+
+			VECSUB(v, pos, isec->end);
+			Normalize(v);
+
+			pos[0] -= jitbias*v[0];
+			pos[1] -= jitbias*v[1];
+			pos[2] -= jitbias*v[2];
+		}
+
 		VECCOPY(isec->start, pos);
 		
 		





More information about the Bf-blender-cvs mailing list