[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51366] trunk/blender/intern/cycles/kernel : Fix object motion blur crash with lamp sampling(?), missed a check.

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Oct 16 15:20:59 CEST 2012


Revision: 51366
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51366
Author:   blendix
Date:     2012-10-16 13:20:57 +0000 (Tue, 16 Oct 2012)
Log Message:
-----------
Fix object motion blur crash with lamp sampling(?), missed a check.

Motion blur documentation is here:
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.65/Cycles#Motion_Blur

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/kernel_object.h
    trunk/blender/intern/cycles/kernel/kernel_shader.h

Modified: trunk/blender/intern/cycles/kernel/kernel_object.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_object.h	2012-10-16 11:57:46 UTC (rev 51365)
+++ trunk/blender/intern/cycles/kernel/kernel_object.h	2012-10-16 13:20:57 UTC (rev 51366)
@@ -134,6 +134,9 @@
 
 __device_inline float3 object_location(KernelGlobals *kg, ShaderData *sd)
 {
+	if(sd->object == ~0)
+		return make_float3(0.0f, 0.0f, 0.0f);
+
 #ifdef __OBJECT_MOTION__
 	return make_float3(sd->ob_tfm.x.w, sd->ob_tfm.y.w, sd->ob_tfm.z.w);
 #else

Modified: trunk/blender/intern/cycles/kernel/kernel_shader.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_shader.h	2012-10-16 11:57:46 UTC (rev 51365)
+++ trunk/blender/intern/cycles/kernel/kernel_shader.h	2012-10-16 13:20:57 UTC (rev 51366)
@@ -179,19 +179,22 @@
 #endif
 
 	sd->flag = kernel_tex_fetch(__shader_flag, (sd->shader & SHADER_MASK)*2);
-	if(sd->object != -1)
+	if(sd->object != -1) {
 		sd->flag |= kernel_tex_fetch(__object_flag, sd->object);
 
 #ifdef __OBJECT_MOTION__
-	if(sd->flag & SD_OBJECT_MOTION) {
-		sd->ob_tfm = object_fetch_transform_motion(kg, sd->object, time, &sd->ob_itfm);
+		if(sd->flag & SD_OBJECT_MOTION) {
+			sd->ob_tfm = object_fetch_transform_motion(kg, sd->object, time, &sd->ob_itfm);
+		}
+		else {
+			sd->ob_tfm = object_fetch_transform(kg, sd->object, OBJECT_TRANSFORM);
+			sd->ob_itfm = object_fetch_transform(kg, sd->object, OBJECT_INVERSE_TRANSFORM);
+		}
 	}
-	else {
-		sd->ob_tfm = object_fetch_transform(kg, sd->object, OBJECT_TRANSFORM);
-		sd->ob_itfm = object_fetch_transform(kg, sd->object, OBJECT_INVERSE_TRANSFORM);
-	}
 
 	sd->time = time;
+#else
+	}
 #endif
 
 	/* smooth normal */




More information about the Bf-blender-cvs mailing list