Fix #33347: cycles OSL crash connecting string to vector socket.
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 30 Nov 2012 06:10:16 +0000 (06:10 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 30 Nov 2012 06:10:16 +0000 (06:10 +0000)
intern/cycles/kernel/shaders/node_convert_from_color.osl
intern/cycles/kernel/shaders/node_convert_from_float.osl
intern/cycles/kernel/shaders/node_convert_from_int.osl
intern/cycles/kernel/shaders/node_convert_from_normal.osl
intern/cycles/kernel/shaders/node_convert_from_point.osl
intern/cycles/kernel/shaders/node_convert_from_string.osl [new file with mode: 0644]
intern/cycles/kernel/shaders/node_convert_from_vector.osl
intern/cycles/render/nodes.cpp

index 2884c772414418edb0eb96643250d45c29448879..e4982975c20b4215ba7c34a7548df7effbfba69c 100644 (file)
@@ -20,6 +20,7 @@
 
 shader node_convert_from_color(
        color Color = color(0.0, 0.0, 0.0),
+       output string String = "",
        output float Val = 0.0,
        output int ValInt = 0,
        output vector Vector = vector(0.0, 0.0, 0.0),
index 4466fbae3a6ec60dc81f0e06d1ba0d2d5d193b25..a20b491c91d8b1c4a991663a0e946da3450fa4b7 100644 (file)
@@ -20,6 +20,7 @@
 
 shader node_convert_from_float(
        float Val = 0.0,
+       output string String = "",
        output int ValInt = 0,
        output color Color = color(0.0, 0.0, 0.0),
        output vector Vector = vector(0.0, 0.0, 0.0),
index 060d4184fa66f90b84fcbfe7436fa2b61420b408..911b4928db815d4dcee96cc471ed3623c3f2eb75 100644 (file)
@@ -20,6 +20,7 @@
 
 shader node_convert_from_int(
        int ValInt = 0,
+       output string String = "",
        output float Val = 0.0,
        output color Color = color(0.0, 0.0, 0.0),
        output vector Vector = vector(0.0, 0.0, 0.0),
index 32ef430d93b504ca9b1ff3df93013bc643dff146..1add7400a2254d88817aa13bcab4b31e4b5a43e2 100644 (file)
@@ -20,6 +20,7 @@
 
 shader node_convert_from_normal(
        normal Normal = normal(0.0, 0.0, 0.0),
+       output string String = "",
        output float Val = 0.0,
        output int ValInt = 0,
        output vector Vector = vector(0.0, 0.0, 0.0),
index a9435c8abf46591c180a202c0bff7ab3dc286e31..8a315828c55d2e56189ac74ea04848cb0dcea52a 100644 (file)
@@ -20,6 +20,7 @@
 
 shader node_convert_from_point(
        point Point = point(0.0, 0.0, 0.0),
+       output string String = "",
        output float Val = 0.0,
        output int ValInt = 0,
        output vector Vector = vector(0.0, 0.0, 0.0),
diff --git a/intern/cycles/kernel/shaders/node_convert_from_string.osl b/intern/cycles/kernel/shaders/node_convert_from_string.osl
new file mode 100644 (file)
index 0000000..f40535a
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2011, Blender Foundation.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "stdosl.h"
+
+shader node_convert_from_string(
+       string String = "",
+       output color Color = color(0.0, 0.0, 0.0),
+       output float Val = 0.0,
+       output int ValInt = 0,
+       output vector Vector = vector(0.0, 0.0, 0.0),
+       output point Point = point(0.0, 0.0, 0.0),
+       output normal Normal = normal(0.0, 0.0, 0.0))
+{
+}
+
index 4516f92c7533836d07a252a5d9aa1a2de215f936..ae9f97414d5958adc314883cf096699cecefcfc0 100644 (file)
@@ -20,6 +20,7 @@
 
 shader node_convert_from_vector(
        vector Vector = vector(0.0, 0.0, 0.0),
+       output string String = "",
        output float Val = 0.0,
        output int ValInt = 0,
        output color Color = color(0.0, 0.0, 0.0),
index 12bbc0196442a25201555f257772bfa8835a1863..48fe63670c77901ec336728cb87d401fc1594e96 100644 (file)
@@ -1124,6 +1124,8 @@ ConvertNode::ConvertNode(ShaderSocketType from_, ShaderSocketType to_)
                add_input("Point", SHADER_SOCKET_POINT);
        else if(from == SHADER_SOCKET_NORMAL)
                add_input("Normal", SHADER_SOCKET_NORMAL);
+       else if(from == SHADER_SOCKET_STRING)
+               add_input("String", SHADER_SOCKET_STRING);
        else
                assert(0);
 
@@ -1139,6 +1141,8 @@ ConvertNode::ConvertNode(ShaderSocketType from_, ShaderSocketType to_)
                add_output("Point", SHADER_SOCKET_POINT);
        else if(to == SHADER_SOCKET_NORMAL)
                add_output("Normal", SHADER_SOCKET_NORMAL);
+       else if(to == SHADER_SOCKET_STRING)
+               add_output("String", SHADER_SOCKET_STRING);
        else
                assert(0);
 }