[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57981] branches/soc-2013-dingto: Cycles:

Thomas Dinges blender at dingto.org
Thu Jul 4 01:46:56 CEST 2013


Revision: 57981
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57981
Author:   dingto
Date:     2013-07-03 23:46:56 +0000 (Wed, 03 Jul 2013)
Log Message:
-----------
Cycles:
* Added 2 new nodes to combine and separate HSV colors. 

Screenshot:
http://www.pasteall.org/pic/show.php?id=54828

Modified Paths:
--------------
    branches/soc-2013-dingto/intern/cycles/blender/blender_shader.cpp
    branches/soc-2013-dingto/intern/cycles/kernel/CMakeLists.txt
    branches/soc-2013-dingto/intern/cycles/kernel/shaders/CMakeLists.txt
    branches/soc-2013-dingto/intern/cycles/kernel/svm/svm.h
    branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_types.h
    branches/soc-2013-dingto/intern/cycles/render/nodes.cpp
    branches/soc-2013-dingto/intern/cycles/render/nodes.h
    branches/soc-2013-dingto/release/scripts/startup/nodeitems_builtins.py
    branches/soc-2013-dingto/source/blender/blenkernel/BKE_node.h
    branches/soc-2013-dingto/source/blender/blenkernel/intern/node.c
    branches/soc-2013-dingto/source/blender/nodes/CMakeLists.txt
    branches/soc-2013-dingto/source/blender/nodes/NOD_shader.h
    branches/soc-2013-dingto/source/blender/nodes/NOD_static_types.h

Added Paths:
-----------
    branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_combine_hsv.osl
    branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_separate_hsv.osl
    branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_sepcomb_hsv.h
    branches/soc-2013-dingto/source/blender/nodes/shader/nodes/node_shader_sepcombHSV.c

Modified: branches/soc-2013-dingto/intern/cycles/blender/blender_shader.cpp
===================================================================
--- branches/soc-2013-dingto/intern/cycles/blender/blender_shader.cpp	2013-07-03 22:57:00 UTC (rev 57980)
+++ branches/soc-2013-dingto/intern/cycles/blender/blender_shader.cpp	2013-07-03 23:46:56 UTC (rev 57981)
@@ -231,6 +231,12 @@
 	else if (b_node.is_a(&RNA_ShaderNodeCombineRGB)) {
 		node = new CombineRGBNode();
 	}
+	else if (b_node.is_a(&RNA_ShaderNodeSeparateHSV)) {
+		node = new SeparateHSVNode();
+	}
+	else if (b_node.is_a(&RNA_ShaderNodeCombineHSV)) {
+		node = new CombineHSVNode();
+	}
 	else if (b_node.is_a(&RNA_ShaderNodeHueSaturation)) {
 		node = new HSVNode();
 	}

Modified: branches/soc-2013-dingto/intern/cycles/kernel/CMakeLists.txt
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/CMakeLists.txt	2013-07-03 22:57:00 UTC (rev 57980)
+++ branches/soc-2013-dingto/intern/cycles/kernel/CMakeLists.txt	2013-07-03 23:46:56 UTC (rev 57981)
@@ -100,6 +100,7 @@
 	svm/svm_normal.h
 	svm/svm_ramp.h
 	svm/svm_sepcomb_rgb.h
+	svm/svm_sepcomb_hsv.h
 	svm/svm_sky.h
 	svm/svm_tex_coord.h
 	svm/svm_texture.h

Modified: branches/soc-2013-dingto/intern/cycles/kernel/shaders/CMakeLists.txt
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/shaders/CMakeLists.txt	2013-07-03 22:57:00 UTC (rev 57980)
+++ branches/soc-2013-dingto/intern/cycles/kernel/shaders/CMakeLists.txt	2013-07-03 23:46:56 UTC (rev 57981)
@@ -12,6 +12,7 @@
 	node_camera.osl
 	node_checker_texture.osl
 	node_combine_rgb.osl
+	node_combine_hsv.osl
 	node_convert_from_color.osl
 	node_convert_from_float.osl
 	node_convert_from_int.osl
@@ -53,6 +54,7 @@
 	node_rgb_curves.osl
 	node_rgb_ramp.osl
 	node_separate_rgb.osl
+	node_separate_hsv.osl
 	node_set_normal.osl
 	node_sky_texture.osl
 	node_subsurface_scattering.osl

Added: branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_combine_hsv.osl
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_combine_hsv.osl	                        (rev 0)
+++ branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_combine_hsv.osl	2013-07-03 23:46:56 UTC (rev 57981)
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2013, 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_combine_hsv(
+	float H = 0.0,
+	float S = 0.0,
+	float V = 0.0,
+	output color Color = 0.8)
+{
+	Color = color("hsv", H, S, V);	
+}
+

Added: branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_separate_hsv.osl
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_separate_hsv.osl	                        (rev 0)
+++ branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_separate_hsv.osl	2013-07-03 23:46:56 UTC (rev 57981)
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013, 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"
+#include "node_color.h"
+
+shader node_separate_hsv(
+	color Color = 0.8,
+	output float H = 0.0,
+	output float S = 0.0,
+	output float V = 0.0)
+{
+	color col = rgb_to_hsv(Color);
+	
+	H = col[0];
+	S = col[1];
+	V = col[2];
+}

Modified: branches/soc-2013-dingto/intern/cycles/kernel/svm/svm.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/svm/svm.h	2013-07-03 22:57:00 UTC (rev 57980)
+++ branches/soc-2013-dingto/intern/cycles/kernel/svm/svm.h	2013-07-03 23:46:56 UTC (rev 57981)
@@ -170,6 +170,7 @@
 #include "svm_mix.h"
 #include "svm_ramp.h"
 #include "svm_sepcomb_rgb.h"
+#include "svm_sepcomb_hsv.h"
 #include "svm_musgrave.h"
 #include "svm_sky.h"
 #include "svm_tex_coord.h"
@@ -340,6 +341,12 @@
 			case NODE_COMBINE_RGB:
 				svm_node_combine_rgb(sd, stack, node.y, node.z, node.w);
 				break;
+			case NODE_SEPARATE_HSV:
+				svm_node_separate_hsv(kg, sd, stack, node.y, node.z, node.w, &offset);
+				break;
+			case NODE_COMBINE_HSV:
+				svm_node_combine_hsv(kg, sd, stack, node.y, node.z, node.w, &offset);
+				break;
 			case NODE_HSV:
 				svm_node_hsv(kg, sd, stack, node.y, node.z, node.w, &offset);
 				break;

Added: branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_sepcomb_hsv.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_sepcomb_hsv.h	                        (rev 0)
+++ branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_sepcomb_hsv.h	2013-07-03 23:46:56 UTC (rev 57981)
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2013, 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.
+ */
+
+CCL_NAMESPACE_BEGIN
+
+__device void svm_node_combine_hsv(KernelGlobals *kg, ShaderData *sd, float *stack, uint hue_in, uint saturation_in, uint value_in, int *offset)
+{
+	uint4 node1 = read_node(kg, offset);
+	uint color_out = node1.y;
+	
+	float hue = stack_load_float(stack, hue_in);
+	float saturation = stack_load_float(stack, saturation_in);
+	float value = stack_load_float(stack, value_in);
+	
+	/* Combine, and convert back to RGB */
+	float3 color = hsv_to_rgb(make_float3(hue, saturation, value));
+
+	if (stack_valid(color_out))
+		stack_store_float3(stack, color_out, color);
+}
+
+__device void svm_node_separate_hsv(KernelGlobals *kg, ShaderData *sd, float *stack, uint color_in, uint hue_out, uint saturation_out, int *offset)
+{
+	uint4 node1 = read_node(kg, offset);
+	uint value_out = node1.y;
+	
+	float3 color = stack_load_float3(stack, color_in);
+	
+	/* Convert to HSV */
+	color = rgb_to_hsv(color);
+
+	if (stack_valid(hue_out)) 
+			stack_store_float(stack, hue_out, color.x);
+	if (stack_valid(saturation_out)) 
+			stack_store_float(stack, saturation_out, color.y);
+	if (stack_valid(value_out)) 
+			stack_store_float(stack, value_out, color.z);
+}
+
+CCL_NAMESPACE_END
+

Modified: branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_types.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_types.h	2013-07-03 22:57:00 UTC (rev 57980)
+++ branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_types.h	2013-07-03 23:46:56 UTC (rev 57981)
@@ -83,6 +83,8 @@
 	NODE_CLOSURE_VOLUME,
 	NODE_SEPARATE_RGB,
 	NODE_COMBINE_RGB,
+	NODE_SEPARATE_HSV,
+	NODE_COMBINE_HSV,
 	NODE_HSV,
 	NODE_CAMERA,
 	NODE_INVERT,

Modified: branches/soc-2013-dingto/intern/cycles/render/nodes.cpp
===================================================================
--- branches/soc-2013-dingto/intern/cycles/render/nodes.cpp	2013-07-03 22:57:00 UTC (rev 57980)
+++ branches/soc-2013-dingto/intern/cycles/render/nodes.cpp	2013-07-03 23:46:56 UTC (rev 57981)
@@ -2644,6 +2644,37 @@
 	compiler.add(this, "node_combine_rgb");
 }
 
+/* Combine HSV */
+CombineHSVNode::CombineHSVNode()
+: ShaderNode("combine_hsv")
+{
+	add_input("H", SHADER_SOCKET_FLOAT);
+	add_input("S", SHADER_SOCKET_FLOAT);
+	add_input("V", SHADER_SOCKET_FLOAT);
+	add_output("Color", SHADER_SOCKET_COLOR);
+}
+
+void CombineHSVNode::compile(SVMCompiler& compiler)
+{
+	ShaderInput *hue_in = input("H");
+	ShaderInput *saturation_in = input("S");
+	ShaderInput *value_in = input("V");
+	ShaderOutput *color_out = output("Color");
+
+	compiler.stack_assign(color_out);
+	compiler.stack_assign(hue_in);
+	compiler.stack_assign(saturation_in);
+	compiler.stack_assign(value_in);
+	
+	compiler.add_node(NODE_COMBINE_HSV, hue_in->stack_offset, saturation_in->stack_offset, value_in->stack_offset);
+	compiler.add_node(NODE_COMBINE_HSV, color_out->stack_offset);
+}
+
+void CombineHSVNode::compile(OSLCompiler& compiler)
+{
+	compiler.add(this, "node_combine_hsv");
+}
+
 /* Gamma */
 GammaNode::GammaNode()
 : ShaderNode("gamma")
@@ -2737,7 +2768,39 @@
 	compiler.add(this, "node_separate_rgb");
 }
 
-/* Separate RGB */
+/* Separate HSV */
+SeparateHSVNode::SeparateHSVNode()
+: ShaderNode("separate_rgb")
+{
+	add_input("Color", SHADER_SOCKET_COLOR);
+	add_output("H", SHADER_SOCKET_FLOAT);
+	add_output("S", SHADER_SOCKET_FLOAT);
+	add_output("V", SHADER_SOCKET_FLOAT);
+}
+
+void SeparateHSVNode::compile(SVMCompiler& compiler)
+{
+	ShaderInput *color_in = input("Color");
+	ShaderOutput *hue_out = output("H");
+	ShaderOutput *saturation_out = output("S");

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list