[Bf-blender-cvs] [8d0fbcd6dfe] master: Nodes: move vector rotate node to C++
Jacques Lucke
noreply at git.blender.org
Fri Mar 5 16:09:26 CET 2021
Commit: 8d0fbcd6dfe736f556b4e7f4aaf04536ee192dcb
Author: Jacques Lucke
Date: Fri Mar 5 16:09:19 2021 +0100
Branches: master
https://developer.blender.org/rB8d0fbcd6dfe736f556b4e7f4aaf04536ee192dcb
Nodes: move vector rotate node to C++
This makes it easier to add an implementation that can
be used in Geometry Nodes.
There should be no functional changes.
===================================================================
M source/blender/nodes/CMakeLists.txt
R080 source/blender/nodes/shader/nodes/node_shader_vector_rotate.c source/blender/nodes/shader/nodes/node_shader_vector_rotate.cc
===================================================================
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt
index 50e29d4a447..e21959d839c 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -259,7 +259,7 @@ set(SRC
shader/nodes/node_shader_vectTransform.c
shader/nodes/node_shader_vector_displacement.c
shader/nodes/node_shader_vector_math.cc
- shader/nodes/node_shader_vector_rotate.c
+ shader/nodes/node_shader_vector_rotate.cc
shader/nodes/node_shader_vertex_color.c
shader/nodes/node_shader_volume_absorption.c
shader/nodes/node_shader_volume_info.c
diff --git a/source/blender/nodes/shader/nodes/node_shader_vector_rotate.c b/source/blender/nodes/shader/nodes/node_shader_vector_rotate.cc
similarity index 80%
rename from source/blender/nodes/shader/nodes/node_shader_vector_rotate.c
rename to source/blender/nodes/shader/nodes/node_shader_vector_rotate.cc
index b2132c59cde..d6ead5a8b99 100644
--- a/source/blender/nodes/shader/nodes/node_shader_vector_rotate.c
+++ b/source/blender/nodes/shader/nodes/node_shader_vector_rotate.cc
@@ -32,7 +32,28 @@ static bNodeSocketTemplate sh_node_vector_rotate_in[] = {
{SOCK_VECTOR, N_("Rotation"), 0.0f, 0.0f, 0.0f, 1.0f, -FLT_MAX, FLT_MAX, PROP_EULER},
{-1, ""}};
-static bNodeSocketTemplate sh_node_vector_rotate_out[] = {{SOCK_VECTOR, N_("Vector")}, {-1, ""}};
+static bNodeSocketTemplate sh_node_vector_rotate_out[] = {
+ {SOCK_VECTOR, N_("Vector")},
+ {-1, ""},
+};
+
+static const char *gpu_shader_get_name(int mode)
+{
+ switch (mode) {
+ case NODE_VECTOR_ROTATE_TYPE_AXIS:
+ return "node_vector_rotate_axis_angle";
+ case NODE_VECTOR_ROTATE_TYPE_AXIS_X:
+ return "node_vector_rotate_axis_x";
+ case NODE_VECTOR_ROTATE_TYPE_AXIS_Y:
+ return "node_vector_rotate_axis_y";
+ case NODE_VECTOR_ROTATE_TYPE_AXIS_Z:
+ return "node_vector_rotate_axis_z";
+ case NODE_VECTOR_ROTATE_TYPE_EULER_XYZ:
+ return "node_vector_rotate_euler_xyz";
+ }
+
+ return nullptr;
+}
static int gpu_shader_vector_rotate(GPUMaterial *mat,
bNode *node,
@@ -40,18 +61,11 @@ static int gpu_shader_vector_rotate(GPUMaterial *mat,
GPUNodeStack *in,
GPUNodeStack *out)
{
+ const char *name = gpu_shader_get_name(node->custom1);
- static const char *names[] = {
- [NODE_VECTOR_ROTATE_TYPE_AXIS] = "node_vector_rotate_axis_angle",
- [NODE_VECTOR_ROTATE_TYPE_AXIS_X] = "node_vector_rotate_axis_x",
- [NODE_VECTOR_ROTATE_TYPE_AXIS_Y] = "node_vector_rotate_axis_y",
- [NODE_VECTOR_ROTATE_TYPE_AXIS_Z] = "node_vector_rotate_axis_z",
- [NODE_VECTOR_ROTATE_TYPE_EULER_XYZ] = "node_vector_rotate_euler_xyz",
- };
-
- if (node->custom1 < ARRAY_SIZE(names) && names[node->custom1]) {
+ if (name != nullptr) {
float invert = (node->custom2) ? -1.0 : 1.0;
- return GPU_stack_link(mat, node, names[node->custom1], in, out, GPU_constant(&invert));
+ return GPU_stack_link(mat, node, name, in, out, GPU_constant(&invert));
}
return 0;
More information about the Bf-blender-cvs
mailing list