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
path: root/intern
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2015-06-01 13:26:36 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-06-01 17:49:52 +0300
commit4d8cf1329df3cf545acbe369e3d7c39428cf91d2 (patch)
tree40e345d43babf2b61594d53f0d1fb5bf8834e025 /intern
parent36ef6d1532293a29701e658590c76f06af1f00a8 (diff)
Cycles: Add bump feature for selective nodes compilation
For now it is unused in the kernel, actual usage will come with the next commits.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/kernel/svm/svm_types.h7
-rw-r--r--intern/cycles/render/graph.h2
-rw-r--r--intern/cycles/render/shader.cpp6
3 files changed, 13 insertions, 2 deletions
diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h
index 8bf6c647e15..11dc14f72e0 100644
--- a/intern/cycles/kernel/svm/svm_types.h
+++ b/intern/cycles/kernel/svm/svm_types.h
@@ -43,7 +43,12 @@ CCL_NAMESPACE_BEGIN
#define NODE_FEATURE_VOLUME (1 << 0)
#define NODE_FEATURE_HAIR (1 << 1)
-#define NODE_FEATURE_ALL (NODE_FEATURE_VOLUME|NODE_FEATURE_HAIR)
+#define NODE_FEATURE_BUMP (1 << 2)
+/* TODO(sergey): Consider using something like ((uint)(-1)).
+ * Need to ceck carefully operand types around usage of this
+ * define first.
+ */
+#define NODE_FEATURE_ALL (NODE_FEATURE_VOLUME|NODE_FEATURE_HAIR|NODE_FEATURE_BUMP)
typedef enum NodeType {
NODE_END = 0,
diff --git a/intern/cycles/render/graph.h b/intern/cycles/render/graph.h
index 1a17909bddc..93341b56d99 100644
--- a/intern/cycles/render/graph.h
+++ b/intern/cycles/render/graph.h
@@ -225,7 +225,7 @@ public:
* so it's possible to disable huge nodes inside of the required
* nodes group.
*/
- virtual int get_feature() { return 0; }
+ virtual int get_feature() { return bump == SHADER_BUMP_NONE ? 0 : NODE_FEATURE_BUMP; }
};
diff --git a/intern/cycles/render/shader.cpp b/intern/cycles/render/shader.cpp
index 667279360c3..2f8eabbf0a9 100644
--- a/intern/cycles/render/shader.cpp
+++ b/intern/cycles/render/shader.cpp
@@ -487,6 +487,7 @@ void ShaderManager::get_requested_features(Scene *scene, int& max_group, int& fe
features = 0;
for(int i = 0; i < scene->shaders.size(); i++) {
Shader *shader = scene->shaders[i];
+ /* Gather requested features from all the nodes from the graph nodes. */
foreach(ShaderNode *node, shader->graph->nodes) {
max_group = min(max_group, node->get_group());
features |= node->get_feature();
@@ -497,6 +498,11 @@ void ShaderManager::get_requested_features(Scene *scene, int& max_group, int& fe
}
}
}
+ /* Gather requested features from the graph itself. */
+ ShaderNode *output_node = shader->graph->output();
+ if(output_node->input("Displacement")->link != NULL) {
+ features |= NODE_FEATURE_BUMP;
+ }
}
}