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
This commit is contained in:
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user