[Bf-blender-cvs] [0c1b4c3] master: Code cleanup: Avoid duplicate functions for vector combination/separation in SVM.

Thomas Dinges noreply at git.blender.org
Sat Jun 14 12:29:30 CEST 2014


Commit: 0c1b4c35cdf5e8d1c9f3a8dfb990813f914fda59
Author: Thomas Dinges
Date:   Sat Jun 14 12:28:49 2014 +0200
https://developer.blender.org/rB0c1b4c35cdf5e8d1c9f3a8dfb990813f914fda59

Code cleanup: Avoid duplicate functions for vector combination/separation in SVM.

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

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

M	intern/cycles/kernel/CMakeLists.txt
M	intern/cycles/kernel/svm/svm.h
D	intern/cycles/kernel/svm/svm_sepcomb_rgb.h
A	intern/cycles/kernel/svm/svm_sepcomb_vector.h
D	intern/cycles/kernel/svm/svm_sepcomb_xyz.h
M	intern/cycles/kernel/svm/svm_types.h
M	intern/cycles/render/nodes.cpp

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

diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt
index 9896a55..6888dad 100644
--- a/intern/cycles/kernel/CMakeLists.txt
+++ b/intern/cycles/kernel/CMakeLists.txt
@@ -95,9 +95,8 @@ set(SRC_SVM_HEADERS
 	svm/svm_noisetex.h
 	svm/svm_normal.h
 	svm/svm_ramp.h
-	svm/svm_sepcomb_rgb.h
 	svm/svm_sepcomb_hsv.h
-	svm/svm_sepcomb_xyz.h
+	svm/svm_sepcomb_vector.h
 	svm/svm_sky.h
 	svm/svm_tex_coord.h
 	svm/svm_texture.h
diff --git a/intern/cycles/kernel/svm/svm.h b/intern/cycles/kernel/svm/svm.h
index acdc518..d6663aa 100644
--- a/intern/cycles/kernel/svm/svm.h
+++ b/intern/cycles/kernel/svm/svm.h
@@ -167,9 +167,8 @@ CCL_NAMESPACE_END
 #include "svm_math.h"
 #include "svm_mix.h"
 #include "svm_ramp.h"
-#include "svm_sepcomb_rgb.h"
 #include "svm_sepcomb_hsv.h"
-#include "svm_sepcomb_xyz.h"
+#include "svm_sepcomb_vector.h"
 #include "svm_musgrave.h"
 #include "svm_sky.h"
 #include "svm_tex_coord.h"
@@ -328,17 +327,11 @@ ccl_device_noinline void svm_eval_nodes(KernelGlobals *kg, ShaderData *sd, Shade
 			case NODE_MIX:
 				svm_node_mix(kg, sd, stack, node.y, node.z, node.w, &offset);
 				break;
-			case NODE_SEPARATE_RGB:
-				svm_node_separate_rgb(sd, stack, node.y, node.z, node.w);
+			case NODE_SEPARATE_VECTOR:
+				svm_node_separate_vector(sd, stack, node.y, node.z, node.w);
 				break;
-			case NODE_COMBINE_RGB:
-				svm_node_combine_rgb(sd, stack, node.y, node.z, node.w);
-				break;
-			case NODE_SEPARATE_XYZ:
-				svm_node_separate_xyz(sd, stack, node.y, node.z, node.w);
-				break;
-			case NODE_COMBINE_XYZ:
-				svm_node_combine_xyz(sd, stack, node.y, node.z, node.w);
+			case NODE_COMBINE_VECTOR:
+				svm_node_combine_vector(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);
diff --git a/intern/cycles/kernel/svm/svm_sepcomb_rgb.h b/intern/cycles/kernel/svm/svm_sepcomb_rgb.h
deleted file mode 100644
index 34c4449..0000000
--- a/intern/cycles/kernel/svm/svm_sepcomb_rgb.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2011-2013 Blender Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-CCL_NAMESPACE_BEGIN
-
-ccl_device void svm_node_combine_rgb(ShaderData *sd, float *stack, uint in_offset, uint color_index, uint out_offset)
-{
-	float color = stack_load_float(stack, in_offset);
-
-	if (stack_valid(out_offset))
-		stack_store_float(stack, out_offset+color_index, color);
-}
-
-ccl_device void svm_node_separate_rgb(ShaderData *sd, float *stack, uint icolor_offset, uint color_index, uint out_offset)
-{
-	float3 color = stack_load_float3(stack, icolor_offset);
-
-	if (stack_valid(out_offset)) {
-		if (color_index == 0)
-			stack_store_float(stack, out_offset, color.x);
-		else if (color_index == 1)
-			stack_store_float(stack, out_offset, color.y);
-		else
-			stack_store_float(stack, out_offset, color.z);
-	}
-}
-
-CCL_NAMESPACE_END
-
diff --git a/intern/cycles/kernel/svm/svm_sepcomb_xyz.h b/intern/cycles/kernel/svm/svm_sepcomb_vector.h
similarity index 77%
rename from intern/cycles/kernel/svm/svm_sepcomb_xyz.h
rename to intern/cycles/kernel/svm/svm_sepcomb_vector.h
index f9f9664..c8e7e34 100644
--- a/intern/cycles/kernel/svm/svm_sepcomb_xyz.h
+++ b/intern/cycles/kernel/svm/svm_sepcomb_vector.h
@@ -16,7 +16,9 @@
 
 CCL_NAMESPACE_BEGIN
 
-ccl_device void svm_node_combine_xyz(ShaderData *sd, float *stack, uint in_offset, uint vector_index, uint out_offset)
+/* Vector combine / separate, used for the RGB and XYZ nodes */
+
+ccl_device void svm_node_combine_vector(ShaderData *sd, float *stack, uint in_offset, uint vector_index, uint out_offset)
 {
 	float vector = stack_load_float(stack, in_offset);
 
@@ -24,7 +26,7 @@ ccl_device void svm_node_combine_xyz(ShaderData *sd, float *stack, uint in_offse
 		stack_store_float(stack, out_offset+vector_index, vector);
 }
 
-ccl_device void svm_node_separate_xyz(ShaderData *sd, float *stack, uint ivector_offset, uint vector_index, uint out_offset)
+ccl_device void svm_node_separate_vector(ShaderData *sd, float *stack, uint ivector_offset, uint vector_index, uint out_offset)
 {
 	float3 vector = stack_load_float3(stack, ivector_offset);
 
diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h
index 29a0d26..20c799e 100644
--- a/intern/cycles/kernel/svm/svm_types.h
+++ b/intern/cycles/kernel/svm/svm_types.h
@@ -78,10 +78,8 @@ typedef enum NodeType {
 	NODE_CLOSURE_HOLDOUT,
 	NODE_LAYER_WEIGHT,
 	NODE_CLOSURE_VOLUME,
-	NODE_SEPARATE_RGB,
-	NODE_COMBINE_RGB,
-	NODE_SEPARATE_XYZ,
-	NODE_COMBINE_XYZ,
+	NODE_SEPARATE_VECTOR,
+	NODE_COMBINE_VECTOR,
 	NODE_SEPARATE_HSV,
 	NODE_COMBINE_HSV,
 	NODE_HSV,
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index d49a719..a38de8a 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -3042,13 +3042,13 @@ void CombineRGBNode::compile(SVMCompiler& compiler)
 	compiler.stack_assign(color_out);
 
 	compiler.stack_assign(red_in);
-	compiler.add_node(NODE_COMBINE_RGB, red_in->stack_offset, 0, color_out->stack_offset);
+	compiler.add_node(NODE_COMBINE_VECTOR, red_in->stack_offset, 0, color_out->stack_offset);
 
 	compiler.stack_assign(green_in);
-	compiler.add_node(NODE_COMBINE_RGB, green_in->stack_offset, 1, color_out->stack_offset);
+	compiler.add_node(NODE_COMBINE_VECTOR, green_in->stack_offset, 1, color_out->stack_offset);
 
 	compiler.stack_assign(blue_in);
-	compiler.add_node(NODE_COMBINE_RGB, blue_in->stack_offset, 2, color_out->stack_offset);
+	compiler.add_node(NODE_COMBINE_VECTOR, blue_in->stack_offset, 2, color_out->stack_offset);
 }
 
 void CombineRGBNode::compile(OSLCompiler& compiler)
@@ -3076,13 +3076,13 @@ void CombineXYZNode::compile(SVMCompiler& compiler)
 	compiler.stack_assign(vector_out);
 
 	compiler.stack_assign(x_in);
-	compiler.add_node(NODE_COMBINE_XYZ, x_in->stack_offset, 0, vector_out->stack_offset);
+	compiler.add_node(NODE_COMBINE_VECTOR, x_in->stack_offset, 0, vector_out->stack_offset);
 
 	compiler.stack_assign(y_in);
-	compiler.add_node(NODE_COMBINE_XYZ, y_in->stack_offset, 1, vector_out->stack_offset);
+	compiler.add_node(NODE_COMBINE_VECTOR, y_in->stack_offset, 1, vector_out->stack_offset);
 
 	compiler.stack_assign(z_in);
-	compiler.add_node(NODE_COMBINE_XYZ, z_in->stack_offset, 2, vector_out->stack_offset);
+	compiler.add_node(NODE_COMBINE_VECTOR, z_in->stack_offset, 2, vector_out->stack_offset);
 }
 
 void CombineXYZNode::compile(OSLCompiler& compiler)
@@ -3200,13 +3200,13 @@ void SeparateRGBNode::compile(SVMCompiler& compiler)
 	compiler.stack_assign(color_in);
 
 	compiler.stack_assign(red_out);
-	compiler.add_node(NODE_SEPARATE_RGB, color_in->stack_offset, 0, red_out->stack_offset);
+	compiler.add_node(NODE_SEPARATE_VECTOR, color_in->stack_offset, 0, red_out->stack_offset);
 
 	compiler.stack_assign(green_out);
-	compiler.add_node(NODE_SEPARATE_RGB, color_in->stack_offset, 1, green_out->stack_offset);
+	compiler.add_node(NODE_SEPARATE_VECTOR, color_in->stack_offset, 1, green_out->stack_offset);
 
 	compiler.stack_assign(blue_out);
-	compiler.add_node(NODE_SEPARATE_RGB, color_in->stack_offset, 2, blue_out->stack_offset);
+	compiler.add_node(NODE_SEPARATE_VECTOR, color_in->stack_offset, 2, blue_out->stack_offset);
 }
 
 void SeparateRGBNode::compile(OSLCompiler& compiler)
@@ -3234,13 +3234,13 @@ void SeparateXYZNode::compile(SVMCompiler& compiler)
 	compiler.stack_assign(vector_in);
 
 	compiler.stack_assign(x_out);
-	compiler.add_node(NODE_SEPARATE_XYZ, vector_in->stack_offset, 0, x_out->stack_offset);
+	compiler.add_node(NODE_SEPARATE_VECTOR, vector_in->stack_offset, 0, x_out->stack_offset);
 
 	compiler.stack_assign(y_out);
-	compiler.add_node(NODE_SEPARATE_XYZ, vector_in->stack_offset, 1, y_out->stack_offset);
+	compiler.add_node(NODE_SEPARATE_VECTOR, vector_in->stack_offset, 1, y_out->stack_offset);
 
 	compiler.stack_assign(z_out);
-	compiler.add_node(NODE_SEPARATE_XYZ, vector_in->stack_offset, 2, z_out->stack_offset);
+	compiler.add_node(NODE_SEPARATE_VECTOR, vector_in->stack_offset, 2, z_out->stack_offset);
 }
 
 void SeparateXYZNode::compile(OSLCompiler& compiler)




More information about the Bf-blender-cvs mailing list