Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--intern/cycles/blender/blender_session.cpp6
-rw-r--r--intern/cycles/device/device.h10
-rw-r--r--intern/cycles/device/device_opencl.cpp3
-rw-r--r--intern/cycles/render/session.cpp3
4 files changed, 20 insertions, 2 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index cdc44748923..7342ed3b4f1 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -543,6 +543,11 @@ void BlenderSession::bake(BL::Object b_object, const string& pass_type, const in
size_t object_index = OBJECT_NONE;
int tri_offset = 0;
+ /* Set baking flag in advance, so kernel loading can check if we need
+ * any baking capabilities.
+ */
+ scene->bake_manager->set_baking(true);
+
/* ensure kernels are loaded before we do any scene updates */
session->load_kernels();
@@ -572,7 +577,6 @@ void BlenderSession::bake(BL::Object b_object, const string& pass_type, const in
BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height);
scene->bake_manager->set_shader_limit((size_t)b_engine.tile_x(), (size_t)b_engine.tile_y());
- scene->bake_manager->set_baking(true);
/* set number of samples */
session->tile_manager.set_samples(session_params.samples);
diff --git a/intern/cycles/device/device.h b/intern/cycles/device/device.h
index 6b4a190bbf0..7c4f5b61a48 100644
--- a/intern/cycles/device/device.h
+++ b/intern/cycles/device/device.h
@@ -97,6 +97,9 @@ public:
bool use_object_motion;
bool use_camera_motion;
+ /* Denotes whether baking functionality is needed. */
+ bool use_baking;
+
DeviceRequestedFeatures()
{
/* TODO(sergey): Find more meaningful defaults. */
@@ -107,6 +110,7 @@ public:
use_hair = false;
use_object_motion = false;
use_camera_motion = false;
+ use_baking = false;
}
bool modified(const DeviceRequestedFeatures& requested_features)
@@ -114,7 +118,11 @@ public:
return !(experimental == requested_features.experimental &&
max_closure == requested_features.max_closure &&
max_nodes_group == requested_features.max_nodes_group &&
- nodes_features == requested_features.nodes_features);
+ nodes_features == requested_features.nodes_features &&
+ use_hair == requested_features.use_hair &&
+ use_object_motion == requested_features.use_object_motion &&
+ use_camera_motion == requested_features.use_camera_motion &&
+ use_baking == requested_features.use_baking);
}
};
diff --git a/intern/cycles/device/device_opencl.cpp b/intern/cycles/device/device_opencl.cpp
index 3305ef4bb14..35810266218 100644
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@ -1560,6 +1560,9 @@ protected:
if(!requested_features.use_camera_motion) {
build_options += " -D__NO_CAMERA_MOTION__";
}
+ if(!requested_features.use_baking) {
+ build_options += " -D__NO_BAKING__";
+ }
return build_options;
}
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index 57c1500628a..f3acebd33d5 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -637,6 +637,9 @@ DeviceRequestedFeatures Session::get_requested_device_features()
requested_features.use_camera_motion |= mesh->use_motion_blur;
}
+ BakeManager *bake_manager = scene->bake_manager;
+ requested_features.use_baking = bake_manager->get_baking();
+
return requested_features;
}