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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2016-05-02 01:05:16 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2016-05-05 22:43:46 +0300
commitdd8bfa0929f9f1ae940e7da0468fbdd6744e50bb (patch)
treeb4bfab7872a9ce0ea32f25cfe46547e41d5de601 /intern/cycles/blender/blender_shader.cpp
parent2cfadecf97b8c7be5e24ea387c8aef34e9f0a1e9 (diff)
Code refactor: reduce special node types, use generic constant folding.
Diffstat (limited to 'intern/cycles/blender/blender_shader.cpp')
-rw-r--r--intern/cycles/blender/blender_shader.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index 3f919bcad88..6e4ca6627a1 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -32,7 +32,7 @@ CCL_NAMESPACE_BEGIN
typedef map<void*, ShaderInput*> PtrInputMap;
typedef map<void*, ShaderOutput*> PtrOutputMap;
-typedef map<std::string, ProxyNode*> ProxyMap;
+typedef map<std::string, ConvertNode*> ProxyMap;
/* Find */
@@ -321,10 +321,6 @@ static ShaderNode *add_node(Scene *scene,
BL::ShaderNodeMixRGB b_mix_node(b_node);
MixNode *mix = new MixNode();
mix->type = MixNode::type_enum[b_mix_node.blend_type()];
- /* Tag if it's Mix */
- if(b_mix_node.blend_type() == 0)
- mix->special_type = SHADER_SPECIAL_TYPE_MIX_RGB;
-
mix->use_clamp = b_mix_node.use_clamp();
node = mix;
}
@@ -1029,7 +1025,8 @@ static void add_nodes(Scene *scene,
BL::Node::internal_links_iterator b_link;
for(b_node->internal_links.begin(b_link); b_link != b_node->internal_links.end(); ++b_link) {
BL::NodeSocket to_socket(b_link->to_socket());
- ProxyNode *proxy = new ProxyNode(convert_socket_type(to_socket));
+ ShaderSocketType to_socket_type = convert_socket_type(to_socket);
+ ConvertNode *proxy = new ConvertNode(to_socket_type, to_socket_type, true);
input_map[b_link->from_socket().ptr.data] = proxy->inputs[0];
output_map[b_link->to_socket().ptr.data] = proxy->outputs[0];
@@ -1051,7 +1048,8 @@ static void add_nodes(Scene *scene,
* so that links have something to connect to and assert won't fail.
*/
for(b_node->inputs.begin(b_input); b_input != b_node->inputs.end(); ++b_input) {
- ProxyNode *proxy = new ProxyNode(convert_socket_type(*b_input));
+ ShaderSocketType input_type = convert_socket_type(*b_input);
+ ConvertNode *proxy = new ConvertNode(input_type, input_type, true);
graph->add(proxy);
/* register the proxy node for internal binding */
@@ -1062,7 +1060,8 @@ static void add_nodes(Scene *scene,
set_default_value(proxy->inputs[0], *b_input, b_data, b_ntree);
}
for(b_node->outputs.begin(b_output); b_output != b_node->outputs.end(); ++b_output) {
- ProxyNode *proxy = new ProxyNode(convert_socket_type(*b_output));
+ ShaderSocketType output_type = convert_socket_type(*b_output);
+ ConvertNode *proxy = new ConvertNode(output_type, output_type, true);
graph->add(proxy);
/* register the proxy node for internal binding */
@@ -1088,7 +1087,7 @@ static void add_nodes(Scene *scene,
for(b_node->outputs.begin(b_output); b_output != b_node->outputs.end(); ++b_output) {
ProxyMap::const_iterator proxy_it = proxy_input_map.find(b_output->identifier());
if(proxy_it != proxy_input_map.end()) {
- ProxyNode *proxy = proxy_it->second;
+ ConvertNode *proxy = proxy_it->second;
output_map[b_output->ptr.data] = proxy->outputs[0];
}
@@ -1102,7 +1101,7 @@ static void add_nodes(Scene *scene,
for(b_node->inputs.begin(b_input); b_input != b_node->inputs.end(); ++b_input) {
ProxyMap::const_iterator proxy_it = proxy_output_map.find(b_input->identifier());
if(proxy_it != proxy_output_map.end()) {
- ProxyNode *proxy = proxy_it->second;
+ ConvertNode *proxy = proxy_it->second;
input_map[b_input->ptr.data] = proxy->inputs[0];