[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51233] trunk/blender/intern/cycles: Cycles: camera motion blur enabled.

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Oct 9 20:37:14 CEST 2012


Revision: 51233
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51233
Author:   blendix
Date:     2012-10-09 18:37:14 +0000 (Tue, 09 Oct 2012)
Log Message:
-----------
Cycles: camera motion blur enabled.

Still more work needed to get object motion blur ready.

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/addon/ui.py
    trunk/blender/intern/cycles/blender/blender_object.cpp
    trunk/blender/intern/cycles/blender/blender_sync.cpp
    trunk/blender/intern/cycles/kernel/kernel_bvh.h
    trunk/blender/intern/cycles/kernel/kernel_camera.h
    trunk/blender/intern/cycles/kernel/kernel_object.h
    trunk/blender/intern/cycles/kernel/kernel_path.h
    trunk/blender/intern/cycles/kernel/kernel_shader.h
    trunk/blender/intern/cycles/kernel/kernel_types.h
    trunk/blender/intern/cycles/render/camera.cpp
    trunk/blender/intern/cycles/render/mesh.cpp
    trunk/blender/intern/cycles/render/object.cpp

Modified: trunk/blender/intern/cycles/blender/addon/ui.py
===================================================================
--- trunk/blender/intern/cycles/blender/addon/ui.py	2012-10-09 18:20:56 UTC (rev 51232)
+++ trunk/blender/intern/cycles/blender/addon/ui.py	2012-10-09 18:37:14 UTC (rev 51233)
@@ -131,13 +131,9 @@
 
 
 class CyclesRender_PT_motion_blur(CyclesButtonsPanel, Panel):
-    bl_label = "Motion Blur"
+    bl_label = "Camera Motion Blur"
     bl_options = {'DEFAULT_CLOSED'}
 
-    @classmethod
-    def poll(cls, context):
-        return False
-
     def draw_header(self, context):
         rd = context.scene.render
 

Modified: trunk/blender/intern/cycles/blender/blender_object.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_object.cpp	2012-10-09 18:20:56 UTC (rev 51232)
+++ trunk/blender/intern/cycles/blender/blender_object.cpp	2012-10-09 18:37:14 UTC (rev 51233)
@@ -17,6 +17,7 @@
  */
 
 #include "camera.h"
+#include "integrator.h"
 #include "graph.h"
 #include "light.h"
 #include "mesh.h"
@@ -227,7 +228,9 @@
 				object->use_motion = true;
 			}
 
-			sync_mesh_motion(b_ob, object->mesh, motion);
+			/* mesh deformation blur not supported yet */
+			if(!scene->integrator->motion_blur)
+				sync_mesh_motion(b_ob, object->mesh, motion);
 		}
 
 		return;

Modified: trunk/blender/intern/cycles/blender/blender_sync.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_sync.cpp	2012-10-09 18:20:56 UTC (rev 51232)
+++ trunk/blender/intern/cycles/blender/blender_sync.cpp	2012-10-09 18:37:14 UTC (rev 51233)
@@ -149,6 +149,9 @@
 
 void BlenderSync::sync_integrator()
 {
+#ifdef __CAMERA_MOTION__
+	BL::RenderSettings r = b_scene.render();
+#endif
 	PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
 
 	experimental = (RNA_enum_get(&cscene, "feature_set") != 0);
@@ -175,7 +178,7 @@
 	integrator->layer_flag = render_layer.layer;
 
 	integrator->sample_clamp = get_float(cscene, "sample_clamp");
-#ifdef __MOTION__
+#ifdef __CAMERA_MOTION__
 	integrator->motion_blur = (!preview && r.use_motion_blur());
 #endif
 

Modified: trunk/blender/intern/cycles/kernel/kernel_bvh.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_bvh.h	2012-10-09 18:20:56 UTC (rev 51232)
+++ trunk/blender/intern/cycles/kernel/kernel_bvh.h	2012-10-09 18:37:14 UTC (rev 51233)
@@ -349,7 +349,7 @@
 
 #ifdef __INTERSECTION_REFINE__
 	if(isect->object != ~0) {
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 		Transform tfm = sd->ob_itfm;
 #else
 		Transform tfm = object_fetch_transform(kg, isect->object, ray->time, OBJECT_INVERSE_TRANSFORM);
@@ -370,7 +370,7 @@
 	P = P + D*rt;
 
 	if(isect->object != ~0) {
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 		Transform tfm = sd->ob_tfm;
 #else
 		Transform tfm = object_fetch_transform(kg, isect->object, ray->time, OBJECT_TRANSFORM);

Modified: trunk/blender/intern/cycles/kernel/kernel_camera.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_camera.h	2012-10-09 18:20:56 UTC (rev 51232)
+++ trunk/blender/intern/cycles/kernel/kernel_camera.h	2012-10-09 18:37:14 UTC (rev 51233)
@@ -63,7 +63,7 @@
 	/* transform ray from camera to world */
 	Transform cameratoworld = kernel_data.cam.cameratoworld;
 
-#ifdef __MOTION__
+#ifdef __CAMERA_MOTION__
 	if(kernel_data.cam.have_motion)
 		transform_motion_interpolate(&cameratoworld, &kernel_data.cam.motion, ray->time);
 #endif
@@ -106,7 +106,7 @@
 	/* transform ray from camera to world */
 	Transform cameratoworld = kernel_data.cam.cameratoworld;
 
-#ifdef __MOTION__
+#ifdef __CAMERA_MOTION__
 	if(kernel_data.cam.have_motion)
 		transform_motion_interpolate(&cameratoworld, &kernel_data.cam.motion, ray->time);
 #endif
@@ -180,7 +180,7 @@
 	/* transform ray from camera to world */
 	Transform cameratoworld = kernel_data.cam.cameratoworld;
 
-#ifdef __MOTION__
+#ifdef __CAMERA_MOTION__
 	if(kernel_data.cam.have_motion)
 		transform_motion_interpolate(&cameratoworld, &kernel_data.cam.motion, ray->time);
 #endif
@@ -212,7 +212,7 @@
 	float raster_x = x + kernel_tex_interp(__filter_table, filter_u, FILTER_TABLE_SIZE);
 	float raster_y = y + kernel_tex_interp(__filter_table, filter_v, FILTER_TABLE_SIZE);
 
-#ifdef __MOTION__
+#ifdef __CAMERA_MOTION__
 	/* motion blur */
 	if(kernel_data.cam.shuttertime == 0.0f)
 		ray->time = TIME_INVALID;

Modified: trunk/blender/intern/cycles/kernel/kernel_object.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_object.h	2012-10-09 18:20:56 UTC (rev 51232)
+++ trunk/blender/intern/cycles/kernel/kernel_object.h	2012-10-09 18:37:14 UTC (rev 51233)
@@ -31,7 +31,7 @@
 {
 	Transform tfm;
 
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	/* if we do motion blur */
 	if(sd->flag & SD_OBJECT_MOTION) {
 		/* fetch motion transforms */
@@ -70,7 +70,7 @@
 
 __device_inline void object_position_transform(KernelGlobals *kg, ShaderData *sd, float3 *P)
 {
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	*P = transform_point(&sd->ob_tfm, *P);
 #else
 	Transform tfm = object_fetch_transform(kg, sd->object, TIME_INVALID, OBJECT_TRANSFORM);
@@ -80,7 +80,7 @@
 
 __device_inline void object_inverse_position_transform(KernelGlobals *kg, ShaderData *sd, float3 *P)
 {
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	*P = transform_point(&sd->ob_itfm, *P);
 #else
 	Transform tfm = object_fetch_transform(kg, sd->object, TIME_INVALID, OBJECT_INVERSE_TRANSFORM);
@@ -90,7 +90,7 @@
 
 __device_inline void object_inverse_normal_transform(KernelGlobals *kg, ShaderData *sd, float3 *N)
 {
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	*N = normalize(transform_direction_transposed(&sd->ob_tfm, *N));
 #else
 	Transform tfm = object_fetch_transform(kg, sd->object, TIME_INVALID, OBJECT_TRANSFORM);
@@ -100,7 +100,7 @@
 
 __device_inline void object_normal_transform(KernelGlobals *kg, ShaderData *sd, float3 *N)
 {
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	*N = normalize(transform_direction_transposed(&sd->ob_itfm, *N));
 #else
 	Transform tfm = object_fetch_transform(kg, sd->object, TIME_INVALID, OBJECT_INVERSE_TRANSFORM);
@@ -110,7 +110,7 @@
 
 __device_inline void object_dir_transform(KernelGlobals *kg, ShaderData *sd, float3 *D)
 {
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	*D = transform_direction(&sd->ob_tfm, *D);
 #else
 	Transform tfm = object_fetch_transform(kg, sd->object, 0.0f, OBJECT_TRANSFORM);
@@ -120,7 +120,7 @@
 
 __device_inline float3 object_location(KernelGlobals *kg, ShaderData *sd)
 {
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	return make_float3(sd->ob_tfm.x.w, sd->ob_tfm.y.w, sd->ob_tfm.z.w);
 #else
 	Transform tfm = object_fetch_transform(kg, sd->object, 0.0f, OBJECT_TRANSFORM);

Modified: trunk/blender/intern/cycles/kernel/kernel_path.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_path.h	2012-10-09 18:20:56 UTC (rev 51232)
+++ trunk/blender/intern/cycles/kernel/kernel_path.h	2012-10-09 18:37:14 UTC (rev 51233)
@@ -343,7 +343,7 @@
 				light_ray.P = ray_offset(sd.P, sd.Ng);
 				light_ray.D = ao_D;
 				light_ray.t = kernel_data.background.ao_distance;
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 				light_ray.time = sd.time;
 #endif
 
@@ -368,7 +368,7 @@
 				BsdfEval L_light;
 				bool is_lamp;
 
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 				light_ray.time = sd.time;
 #endif
 
@@ -520,7 +520,7 @@
 				light_ray.P = ray_offset(sd.P, sd.Ng);
 				light_ray.D = ao_D;
 				light_ray.t = kernel_data.background.ao_distance;
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 				light_ray.time = sd.time;
 #endif
 
@@ -545,7 +545,7 @@
 				BsdfEval L_light;
 				bool is_lamp;
 
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 				light_ray.time = sd.time;
 #endif
 
@@ -728,7 +728,7 @@
 					light_ray.P = ray_offset(sd.P, sd.Ng);
 					light_ray.D = ao_D;
 					light_ray.t = kernel_data.background.ao_distance;
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 					light_ray.time = sd.time;
 #endif
 
@@ -748,7 +748,7 @@
 			BsdfEval L_light;
 			bool is_lamp;
 
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 			light_ray.time = sd.time;
 #endif
 
@@ -867,7 +867,7 @@
 				bsdf_ray.dP = sd.dP;
 				bsdf_ray.dD = bsdf_domega_in;
 #endif
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 				bsdf_ray.time = sd.time;
 #endif
 
@@ -925,7 +925,7 @@
 	float lens_u = path_rng(kg, &rng, sample, PRNG_LENS_U);
 	float lens_v = path_rng(kg, &rng, sample, PRNG_LENS_V);
 
-#ifdef __MOTION__
+#ifdef __CAMERA_MOTION__
 	float time = path_rng(kg, &rng, sample, PRNG_TIME);
 #else
 	float time = 0.0f;

Modified: trunk/blender/intern/cycles/kernel/kernel_shader.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_shader.h	2012-10-09 18:20:56 UTC (rev 51232)
+++ trunk/blender/intern/cycles/kernel/kernel_shader.h	2012-10-09 18:37:14 UTC (rev 51233)
@@ -68,7 +68,7 @@
 #endif
 
 	/* matrices and time */
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	sd->ob_tfm = object_fetch_transform(kg, sd->object, ray->time, OBJECT_TRANSFORM);
 	sd->ob_itfm = object_fetch_transform(kg, sd->object, ray->time, OBJECT_INVERSE_TRANSFORM);
 
@@ -171,7 +171,7 @@
 	}
 #endif
 
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	sd->time = time;
 
 	sd->ob_tfm = object_fetch_transform(kg, sd->object, time, OBJECT_TRANSFORM);
@@ -275,7 +275,7 @@
 	sd->I = -sd->P;
 	sd->shader = kernel_data.background.shader;
 	sd->flag = kernel_tex_fetch(__shader_flag, (sd->shader & SHADER_MASK)*2);
-#ifdef __MOTION__
+#ifdef __OBJECT_MOTION__
 	sd->time = ray->time;
 #endif
 	sd->ray_length = 0.0f;

Modified: trunk/blender/intern/cycles/kernel/kernel_types.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_types.h	2012-10-09 18:20:56 UTC (rev 51232)
+++ trunk/blender/intern/cycles/kernel/kernel_types.h	2012-10-09 18:37:14 UTC (rev 51233)
@@ -108,7 +108,8 @@
 #define __PASSES__
 #define __BACKGROUND_MIS__
 #define __AO__
-//#define __MOTION__
+#define __CAMERA_MOTION__
+//#define __OBJECT_MOTION__
 #endif
 
 //#define __SOBOL_FULL_SCREEN__
@@ -129,7 +130,7 @@
 	PRNG_FILTER_V = 1,
 	PRNG_LENS_U = 2,
 	PRNG_LENS_V = 3,
-#ifdef __MOTION__
+#ifdef __CAMERA_MOTION__
 	PRNG_TIME = 4,
 	PRNG_UNUSED = 5,
 	PRNG_BASE_NUM = 6,
@@ -426,7 +427,7 @@

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list