Commit: b94bfe4cd8362abc4e8d256a081dc364c28a3117
Author: Brecht Van Lommel
Date:   Sun May 8 01:32:09 2016 +0200
Branches: master
https://developer.blender.org/rBb94bfe4cd8362abc4e8d256a081dc364c28a3117

Code refactor: make ShaderNode match Node a bit more, reusing types and enums.

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

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

M       intern/cycles/app/cycles_xml.cpp
M       intern/cycles/blender/blender_shader.cpp
M       intern/cycles/render/graph.cpp
M       intern/cycles/render/graph.h
M       intern/cycles/render/nodes.cpp
M       intern/cycles/render/nodes.h
M       intern/cycles/render/osl.cpp
M       intern/cycles/render/shader.cpp
M       intern/cycles/render/svm.cpp
M       intern/cycles/render/svm.h

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

diff --git a/intern/cycles/app/cycles_xml.cpp b/intern/cycles/app/cycles_xml.cpp
index bee8fa7..896a490 100644
--- a/intern/cycles/app/cycles_xml.cpp
+++ b/intern/cycles/app/cycles_xml.cpp
@@ -214,7 +214,7 @@ static bool xml_equal_string(pugi::xml_node node, const 
char *name, const char *
        return false;
 }
 
-static bool xml_read_enum(ustring *str, ShaderEnum& enm, pugi::xml_node node, 
const char *name)
+static bool xml_read_enum(ustring *str, NodeEnum& enm, pugi::xml_node node, 
const char *name)
 {
        pugi::xml_attribute attr = node.attribute(name);
 
@@ -232,7 +232,7 @@ static bool xml_read_enum(ustring *str, ShaderEnum& enm, 
pugi::xml_node node, co
        return false;
 }
 
-static bool xml_read_enum_value(int *value, ShaderEnum& enm, pugi::xml_node 
node, const char *name)
+static bool xml_read_enum_value(int *value, NodeEnum& enm, pugi::xml_node 
node, const char *name)
 {
        pugi::xml_attribute attr = node.attribute(name);
 
@@ -250,33 +250,33 @@ static bool xml_read_enum_value(int *value, ShaderEnum& 
enm, pugi::xml_node node
        return false;
 }
 
-static ShaderSocketType xml_read_socket_type(pugi::xml_node node, const char 
*name)
+static SocketType::Type xml_read_socket_type(pugi::xml_node node, const char 
*name)
 {
        pugi::xml_attribute attr = node.attribute(name);
 
        if(attr) {
                string value = attr.value();
                if(string_iequals(value, "float"))
-                       return SHADER_SOCKET_FLOAT;
+                       return SocketType::FLOAT;
                else if(string_iequals(value, "int"))
-                       return SHADER_SOCKET_INT;
+                       return SocketType::INT;
                else if(string_iequals(value, "color"))
-                       return SHADER_SOCKET_COLOR;
+                       return SocketType::COLOR;
                else if(string_iequals(value, "vector"))
-                       return SHADER_SOCKET_VECTOR;
+                       return SocketType::VECTOR;
                else if(string_iequals(value, "point"))
-                       return SHADER_SOCKET_POINT;
+                       return SocketType::POINT;
                else if(string_iequals(value, "normal"))
-                       return SHADER_SOCKET_NORMAL;
+                       return SocketType::NORMAL;
                else if(string_iequals(value, "closure color"))
-                       return SHADER_SOCKET_CLOSURE;
+                       return SocketType::CLOSURE;
                else if(string_iequals(value, "string"))
-                       return SHADER_SOCKET_STRING;
+                       return SocketType::STRING;
                else
                        fprintf(stderr, "Unknown shader socket type \"%s\" for 
attribute \"%s\".\n", value.c_str(), name);
        }
        
-       return SHADER_SOCKET_UNDEFINED;
+       return SocketType::UNDEFINED;
 }
 
 /* Camera */
@@ -371,8 +371,8 @@ static void xml_read_shader_graph(XMLReadState& state, 
Shader *shader, pugi::xml
                                        if(!xml_read_string(&name, param, 
"name"))
                                                continue;
                                        
-                                       ShaderSocketType type = 
xml_read_socket_type(param, "type");
-                                       if(type == SHADER_SOCKET_UNDEFINED)
+                                       SocketType::Type type = 
xml_read_socket_type(param, "type");
+                                       if(type == SocketType::UNDEFINED)
                                                continue;
                                        
                                        osl->add_input(ustring(name).c_str(), 
type);
@@ -382,8 +382,8 @@ static void xml_read_shader_graph(XMLReadState& state, 
Shader *shader, pugi::xml
                                        if(!xml_read_string(&name, param, 
"name"))
                                                continue;
                                        
-                                       ShaderSocketType type = 
xml_read_socket_type(param, "type");
-                                       if(type == SHADER_SOCKET_UNDEFINED)
+                                       SocketType::Type type = 
xml_read_socket_type(param, "type");
+                                       if(type == SocketType::UNDEFINED)
                                                continue;
                                        
                                        osl->add_output(ustring(name).c_str(), 
type);
@@ -699,7 +699,7 @@ static void xml_read_shader_graph(XMLReadState& state, 
Shader *shader, pugi::xml
                                        ShaderNode *fromnode = 
nodemap[from_tokens[0]];
 
                                        foreach(ShaderOutput *out, 
fromnode->outputs)
-                                               
if(string_iequals(xml_socket_name(out->name), from_tokens[1]))
+                                               
if(string_iequals(xml_socket_name(out->name().c_str()), from_tokens[1]))
                                                        output = out;
 
                                        if(!output)
@@ -712,7 +712,7 @@ static void xml_read_shader_graph(XMLReadState& state, 
Shader *shader, pugi::xml
                                        ShaderNode *tonode = 
nodemap[to_tokens[0]];
 
                                        foreach(ShaderInput *in, tonode->inputs)
-                                               
if(string_iequals(xml_socket_name(in->name), to_tokens[1]))
+                                               
if(string_iequals(xml_socket_name(in->name().c_str()), to_tokens[1]))
                                                        input = in;
 
                                        if(!input)
@@ -744,20 +744,20 @@ static void xml_read_shader_graph(XMLReadState& state, 
Shader *shader, pugi::xml
                        /* read input values */
                        for(pugi::xml_attribute attr = node.first_attribute(); 
attr; attr = attr.next_attribute()) {
                                foreach(ShaderInput *in, snode->inputs) {
-                                       if(string_iequals(in->name, 
attr.name())) {
-                                               switch(in->type) {
-                                                       case 
SHADER_SOCKET_FLOAT:
-                                                       case SHADER_SOCKET_INT:
-                                                               
xml_read_float(&in->value.x, node, attr.name());
+                                       if(string_iequals(in->name().c_str(), 
attr.name())) {
+                                               switch(in->type()) {
+                                                       case SocketType::FLOAT:
+                                                       case SocketType::INT:
+                                                               
xml_read_float(&in->value_float(), node, attr.name());
                                                                break;
-                                                       case 
SHADER_SOCKET_COLOR:
-                                                       case 
SHADER_SOCKET_VECTOR:
-                                                       case 
SHADER_SOCKET_POINT:
-                                                       case 
SHADER_SOCKET_NORMAL:
-                                                               
xml_read_float3(&in->value, node, attr.name());
+                                                       case SocketType::COLOR:
+                                                       case SocketType::VECTOR:
+                                                       case SocketType::POINT:
+                                                       case SocketType::NORMAL:
+                                                               
xml_read_float3(&in->value(), node, attr.name());
                                                                break;
-                                                       case 
SHADER_SOCKET_STRING:
-                                                               
xml_read_ustring( &in->value_string, node, attr.name() );
+                                                       case SocketType::STRING:
+                                                               
xml_read_ustring( &in->value_string(), node, attr.name() );
                                                                break;
                                                        default:
                                                                break;
diff --git a/intern/cycles/blender/blender_shader.cpp 
b/intern/cycles/blender/blender_shader.cpp
index a56c2e7..346fe0c 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -127,42 +127,42 @@ static float3 get_node_output_vector(BL::Node& b_node, 
const string& name)
        return make_float3(value[0], value[1], value[2]);
 }
 
-static ShaderSocketType convert_socket_type(BL::NodeSocket& b_socket)
+static SocketType::Type convert_socket_type(BL::NodeSocket& b_socket)
 {
        switch(b_socket.type()) {
                case BL::NodeSocket::type_VALUE:
-                       return SHADER_SOCKET_FLOAT;
+                       return SocketType::FLOAT;
                case BL::NodeSocket::type_INT:
-                       return SHADER_SOCKET_INT;
+                       return SocketType::INT;
                case BL::NodeSocket::type_VECTOR:
-                       return SHADER_SOCKET_VECTOR;
+                       return SocketType::VECTOR;
                case BL::NodeSocket::type_RGBA:
-                       return SHADER_SOCKET_COLOR;
+                       return SocketType::COLOR;
                case BL::NodeSocket::type_STRING:
-                       return SHADER_SOCKET_STRING;
+                       return SocketType::STRING;
                case BL::NodeSocket::type_SHADER:
-                       return SHADER_SOCKET_CLOSURE;
+                       return SocketType::CLOSURE;
                
                default:
-                       return SHADER_SOCKET_UNDEFINED;
+                       return SocketType::UNDEFINED;
        }
 }
 
 #ifdef WITH_OSL
-static ShaderSocketType convert_osl_socket_type(OSL::OSLQuery& query,
+static SocketType::Type convert_osl_socket_type(OSL::OSLQuery& query,
                                                 BL::NodeSocket& b_socket)
 {
-       ShaderSocketType socket_type = convert_socket_type(b_socket);
-       if(socket_type == SHADER_SOCKET_VECTOR) {
+       SocketType::Type socket_type = convert_socket_type(b_socket);
+       if(socket_type == SocketType::VECTOR) {
                /* TODO(sergey): Do we need compatible_name() here? */
                const OSL::OSLQuery::Parameter *param = 
query.getparam(b_socket.name());
                assert(param != NULL);
                if(param != NULL) {
                        if(param->type.vecsemantics == TypeDesc::POINT) {
-                               socket_type = SHADER_SOCKET_POINT;
+                               socket_type = SocketType::POINT;
                        }
                        else if(param->type.vecsemantics == TypeDesc::NORMAL) {
-                               socket_type = SHADER_SOCKET_NORMAL;
+                               socket_type = SocketType::NORMAL;
                        }
                }
        }
@@ -177,32 +177,30 @@ static void set_default_value(ShaderInput *input,
                               BL::ID& b_id)
 {
        /* copy values for non linked inputs */
-       switch(input->type) {
-               case SHADER_SOCKET_FLOAT: {
-                       input->set(get_float(b_sock.ptr, "default_value"));
+       switch(input->type()) {
+               case SocketType::FLOAT: {
+                       input->value_float() = get_float(b_sock.ptr, 
"default_value");
                        break;
                }
-               case SHADER_SOCKET_INT: {
-                       input->set((float)get_int(b_sock.ptr, "default_value"));
+               case SocketType::INT: {
+                       input->value_float() = (float)get_int(b_sock.ptr, 
"default_value");
                        break;
                }
-               case SHADER_SOCKET_COLOR: {
-                       input->set(float4_to_float3(get_float4(b_sock.ptr, 
"default_value")));
+               case SocketType::COLOR: {
+                       input->value() = 
float4_to_float3(get_float4(b_sock.ptr, "default_value"));
                        break;
                }
-               case SHADER_SOCKET_NORMAL:
-               case SHADER_SOCKET_POINT:
-               case SHADER_SOCKET_VECTOR: {
-                       input->set(get_float3(b_sock.ptr, "default_value"));
+               case SocketType::NORMAL:
+               case SocketType::POINT:
+               case SocketType::VECTOR: {
+                       input->value() = get_float3(b_sock.ptr, 
"default_value");
                        break;
                }
-               case SHADER_SOCKET_STRING: {
-                       input->set((ustring)blender_absolute_path(b_data, b_id, 
get_string(b_sock.ptr, "default_value")));
+               case SocketType::STRING: {
+                       input->value_string() = 
(ustring)blender_absolute_path(b_data, b_id, get_string(b_sock.ptr, 
"default_value"));
                        break;
                }
-
-               case SHADER_SOCKET_CLOSURE:
-               case SHADER_SOCKET_UNDEFINED:
+               default:
                        break;
        }
 }
@@ -341,7 +339,7 @@ static ShaderNode *add_node(Scene *scene,
                node = new HSVNode();
        }
        else if(b_node.is_a(&RNA_ShaderNodeRGBToBW)) {
-               node = new ConvertNode(SHADER_SOCKET_COLOR, 
SHADER_SOCKET_FLOAT);
+               node = new ConvertNode(SocketType::COLOR, SocketType::FLOAT);
        }
        else if(b_node.is_a(&RNA_ShaderNodeMath)) {
                BL::ShaderNodeMath b_math_node(b_node);
@@ -1020,7 +1018,7 @@ 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());
-                               ShaderSocketType to_socket_type = 
convert_socket_type(to_socket);
+                               SocketType::Type 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];
@@ -1043,7 +1041,7 @@ static void add_nodes(Scene *scene,
                         * so that links have something to connect to and 
assert won't fail.
                         */
                        for(b_node->in

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to