[Bf-blender-cvs] [6e53fdc18fa] blender2.7: Cycles OpenCL: Motion Blur Compile Directives

Jeroen Bakker noreply at git.blender.org
Thu Feb 21 16:34:00 CET 2019


Commit: 6e53fdc18fa0a2003bd8c39d968fe379b5d1d082
Author: Jeroen Bakker
Date:   Thu Feb 21 13:31:52 2019 +0100
Branches: blender2.7
https://developer.blender.org/rB6e53fdc18fa0a2003bd8c39d968fe379b5d1d082

Cycles OpenCL: Motion Blur Compile Directives

When using preview rendering through a camera or final rendering
the `scene.render.use_motion_blur` was not respected when building
the compile directives.

This patch will when building the compile directives check if
motion blur is enabled at all. This should lead to more efficient
kernels when no motion blur is needed.

Tags: #cycles

Differential Revision: https://developer.blender.org/D4387

===================================================================

M	intern/cycles/blender/blender_object.cpp
M	intern/cycles/render/session.cpp

===================================================================

diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp
index a05c982b367..62db5d705e0 100644
--- a/intern/cycles/blender/blender_object.cpp
+++ b/intern/cycles/blender/blender_object.cpp
@@ -419,7 +419,7 @@ Object *BlenderSync::sync_object(BL::Object& b_parent,
 
 			uint motion_steps;
 
-			if(scene->need_motion() == Scene::MOTION_BLUR) {
+			if(need_motion == Scene::MOTION_BLUR) {
 				motion_steps = object_motion_steps(b_parent, b_ob);
 				mesh->motion_steps = motion_steps;
 				if(motion_steps && object_use_deform_motion(b_parent, b_ob)) {
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index ac69251c908..69969987352 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -666,16 +666,19 @@ DeviceRequestedFeatures Session::get_requested_device_features()
 	/* This features are not being tweaked as often as shaders,
 	 * so could be done selective magic for the viewport as well.
 	 */
+	bool use_motion = scene->need_motion() == Scene::MotionType::MOTION_BLUR;
 	requested_features.use_hair = false;
 	requested_features.use_object_motion = false;
-	requested_features.use_camera_motion = scene->camera->use_motion();
+	requested_features.use_camera_motion = use_motion && scene->camera->use_motion();
 	foreach(Object *object, scene->objects) {
 		Mesh *mesh = object->mesh;
 		if(mesh->num_curves()) {
 			requested_features.use_hair = true;
 		}
-		requested_features.use_object_motion |= object->use_motion() | mesh->use_motion_blur;
-		requested_features.use_camera_motion |= mesh->use_motion_blur;
+		if (use_motion) {
+			requested_features.use_object_motion |= object->use_motion() | mesh->use_motion_blur;
+			requested_features.use_camera_motion |= mesh->use_motion_blur;
+		}
 #ifdef WITH_OPENSUBDIV
 		if(mesh->subdivision_type != Mesh::SUBDIVISION_NONE) {
 			requested_features.use_patch_evaluation = true;



More information about the Bf-blender-cvs mailing list