[Bf-blender-cvs] [cd4152c242f] builtin-simulation-nodes: add ui for surface nodes
Jacques Lucke
noreply at git.blender.org
Sat Mar 21 13:48:32 CET 2020
Commit: cd4152c242f7357ccfaf35dec3ed31116026a8f0
Author: Jacques Lucke
Date: Thu Mar 19 16:34:10 2020 +0100
Branches: builtin-simulation-nodes
https://developer.blender.org/rBcd4152c242f7357ccfaf35dec3ed31116026a8f0
add ui for surface nodes
===================================================================
M release/scripts/startup/nodeitems_builtins.py
M source/blender/blenkernel/BKE_node.h
M source/blender/blenkernel/intern/node.c
M source/blender/nodes/CMakeLists.txt
M source/blender/nodes/NOD_function.h
M source/blender/nodes/NOD_static_types.h
A source/blender/nodes/function/nodes/node_fn_closest_surface.cc
A source/blender/nodes/function/nodes/node_fn_surface_color.cc
A source/blender/nodes/function/nodes/node_fn_surface_normal.cc
A source/blender/nodes/function/nodes/node_fn_surface_position.cc
A source/blender/nodes/function/nodes/node_fn_surface_weight.cc
===================================================================
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 604baa1fdae..36e8ab0cb23 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -515,6 +515,13 @@ simulation_node_categories = [
NodeItem("FunctionNodeFloatMath"),
NodeItem("FunctionNodeVectorMath"),
]),
+ FunctionNodeCategory("SURFACE", "Surface", items=[
+ NodeItem("FunctionNodeClosestSurface"),
+ NodeItem("FunctionNodeSurfaceColor"),
+ NodeItem("FunctionNodeSurfaceNormal"),
+ NodeItem("FunctionNodeSurfacePosition"),
+ NodeItem("FunctionNodeSurfaceWeight"),
+ ]),
SimulationNodeCategory("GROUPS", "Groups", items=node_group_items),
SimulationNodeCategory("LAYOUT", "Layout", items=[
NodeItem("NodeFrame"),
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 6a241a59fb4..6e102ca37c7 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -1021,6 +1021,11 @@ void BKE_nodetree_remove_layer_n(struct bNodeTree *ntree,
#define FN_NODE_SEPARATE_HSV 1105
#define FN_NODE_FLOAT_MATH 1106
#define FN_NODE_VECTOR_MATH 1107
+#define FN_NODE_SURFACE_COLOR 1108
+#define FN_NODE_SURFACE_NORMAL 1109
+#define FN_NODE_SURFACE_POSITION 1110
+#define FN_NODE_SURFACE_WEIGHT 1111
+#define FN_NODE_CLOSEST_SURFACE 1112
/* custom defines options for Material node */
// #define SH_NODE_MAT_DIFF 1
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 54ec49a7759..e365294f828 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -65,11 +65,11 @@
#include "NOD_common.h"
#include "NOD_composite.h"
+#include "NOD_function.h"
#include "NOD_shader.h"
+#include "NOD_simulation.h"
#include "NOD_socket.h"
#include "NOD_texture.h"
-#include "NOD_simulation.h"
-#include "NOD_function.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_build.h"
@@ -4233,6 +4233,11 @@ static void registerFunctionNodes(void)
register_node_type_fn_separate_hsv();
register_node_type_fn_float_math();
register_node_type_fn_vector_math();
+ register_node_type_fn_closest_surface();
+ register_node_type_fn_surface_color();
+ register_node_type_fn_surface_normal();
+ register_node_type_fn_surface_position();
+ register_node_type_fn_surface_weight();
}
void init_nodesystem(void)
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt
index 1b396969c8e..5311281d678 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -129,6 +129,7 @@ set(SRC
composite/node_composite_tree.c
composite/node_composite_util.c
+ function/nodes/node_fn_closest_surface.cc
function/nodes/node_fn_combine_hsv.cc
function/nodes/node_fn_combine_rgb.cc
function/nodes/node_fn_combine_xyz.cc
@@ -137,6 +138,10 @@ set(SRC
function/nodes/node_fn_separate_rgb.cc
function/nodes/node_fn_separate_xyz.cc
function/nodes/node_fn_vector_math.cc
+ function/nodes/node_fn_surface_color.cc
+ function/nodes/node_fn_surface_normal.cc
+ function/nodes/node_fn_surface_position.cc
+ function/nodes/node_fn_surface_weight.cc
function/node_fn_util.cc
shader/nodes/node_shader_add_shader.c
diff --git a/source/blender/nodes/NOD_function.h b/source/blender/nodes/NOD_function.h
index 86f232ef52f..288f0cbe681 100644
--- a/source/blender/nodes/NOD_function.h
+++ b/source/blender/nodes/NOD_function.h
@@ -13,6 +13,11 @@ void register_node_type_fn_combine_hsv(void);
void register_node_type_fn_separate_hsv(void);
void register_node_type_fn_float_math(void);
void register_node_type_fn_vector_math(void);
+void register_node_type_fn_closest_surface(void);
+void register_node_type_fn_surface_color(void);
+void register_node_type_fn_surface_normal(void);
+void register_node_type_fn_surface_position(void);
+void register_node_type_fn_surface_weight(void);
#ifdef __cplusplus
}
diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h
index 98ecd259a43..e934d61671a 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -278,9 +278,14 @@ DefNode(FunctionNode, FN_NODE_SEPARATE_RGB, 0, "SEPARATE_RGB", SeparateRGB, "Sep
DefNode(FunctionNode, FN_NODE_COMBINE_HSV, 0, "COMBINE_HSV", CombineHSV, "Combine HSV", "")
DefNode(FunctionNode, FN_NODE_SEPARATE_HSV, 0, "SEPARATE_HSV", SeparateHSV, "Separate HSV", "")
DefNode(FunctionNode, FN_NODE_FLOAT_MATH, def_math, "FLOAT_MATH", FloatMath, "Float Math", "");
-DefNode(FunctionNode, FN_NODE_VECTOR_MATH, def_vector_math, "VECTOR_MATH", VectorMath, "Vector Math", "");
+DefNode(FunctionNode, FN_NODE_VECTOR_MATH, def_vector_math, "VECTOR_MATH", VectorMath, "Vector Math", "")
+DefNode(FunctionNode, FN_NODE_CLOSEST_SURFACE, 0, "CLOSEST_SURFACE", ClosestSurface, "Closest Surface", "")
+DefNode(FunctionNode, FN_NODE_SURFACE_COLOR, 0, "SURFACE_COLOR", SurfaceColor, "Surface Color", "")
+DefNode(FunctionNode, FN_NODE_SURFACE_NORMAL, 0, "SURFACE_NORMAL", SurfaceNormal, "Surface Normal", "")
+DefNode(FunctionNode, FN_NODE_SURFACE_POSITION, 0, "SURFACE_POSITION", SurfacePosition, "Surface Position", "")
+DefNode(FunctionNode, FN_NODE_SURFACE_WEIGHT, 0, "SURFACE_WEIGHT", SurfaceWeight, "Surface Weight", "")
/* undefine macros */
#undef DefNode
-/* clang-format on */
+ /* clang-format on */
diff --git a/source/blender/nodes/function/nodes/node_fn_closest_surface.cc b/source/blender/nodes/function/nodes/node_fn_closest_surface.cc
new file mode 100644
index 00000000000..09e12baa1c4
--- /dev/null
+++ b/source/blender/nodes/function/nodes/node_fn_closest_surface.cc
@@ -0,0 +1,23 @@
+#include "node_fn_util.h"
+
+static bNodeSocketTemplate fn_node_closest_surface_in[] = {
+ {SOCK_OBJECT, N_("Object")},
+ {SOCK_VECTOR, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, -10000.0f, 10000.0f},
+ {-1, ""},
+};
+
+static bNodeSocketTemplate fn_node_closest_surface_out[] = {
+ {SOCK_SURFACE_HOOK, N_("Closest Hook")},
+ {SOCK_VECTOR, N_("Closest Position")},
+ {SOCK_VECTOR, N_("Closest Normal")},
+ {-1, ""},
+};
+
+void register_node_type_fn_closest_surface()
+{
+ static bNodeType ntype;
+
+ fn_node_type_base(&ntype, FN_NODE_CLOSEST_SURFACE, "Closest Surface", 0, 0);
+ node_type_socket_templates(&ntype, fn_node_closest_surface_in, fn_node_closest_surface_out);
+ nodeRegisterType(&ntype);
+}
diff --git a/source/blender/nodes/function/nodes/node_fn_surface_color.cc b/source/blender/nodes/function/nodes/node_fn_surface_color.cc
new file mode 100644
index 00000000000..4ce59c2caf9
--- /dev/null
+++ b/source/blender/nodes/function/nodes/node_fn_surface_color.cc
@@ -0,0 +1,22 @@
+#include "node_fn_util.h"
+
+static bNodeSocketTemplate fn_node_surface_color_in[] = {
+ {SOCK_SURFACE_HOOK, N_("Surface Hook")},
+ {SOCK_IMAGE, N_("Image")},
+ {SOCK_STRING, N_("UV Map")},
+ {-1, ""},
+};
+
+static bNodeSocketTemplate fn_node_surface_color_out[] = {
+ {SOCK_RGBA, N_("Color")},
+ {-1, ""},
+};
+
+void register_node_type_fn_surface_color()
+{
+ static bNodeType ntype;
+
+ fn_node_type_base(&ntype, FN_NODE_SURFACE_COLOR, "Surface Color", 0, 0);
+ node_type_socket_templates(&ntype, fn_node_surface_color_in, fn_node_surface_color_out);
+ nodeRegisterType(&ntype);
+}
diff --git a/source/blender/nodes/function/nodes/node_fn_surface_normal.cc b/source/blender/nodes/function/nodes/node_fn_surface_normal.cc
new file mode 100644
index 00000000000..c5592a3c155
--- /dev/null
+++ b/source/blender/nodes/function/nodes/node_fn_surface_normal.cc
@@ -0,0 +1,20 @@
+#include "node_fn_util.h"
+
+static bNodeSocketTemplate fn_node_surface_normal_in[] = {
+ {SOCK_SURFACE_HOOK, N_("Surface Hook")},
+ {-1, ""},
+};
+
+static bNodeSocketTemplate fn_node_surface_normal_out[] = {
+ {SOCK_VECTOR, N_("Normal")},
+ {-1, ""},
+};
+
+void register_node_type_fn_surface_normal()
+{
+ static bNodeType ntype;
+
+ fn_node_type_base(&ntype, FN_NODE_SURFACE_NORMAL, "Surface Normal", 0, 0);
+ node_type_socket_templates(&ntype, fn_node_surface_normal_in, fn_node_surface_normal_out);
+ nodeRegisterType(&ntype);
+}
diff --git a/source/blender/nodes/function/nodes/node_fn_surface_position.cc b/source/blender/nodes/function/nodes/node_fn_surface_position.cc
new file mode 100644
index 00000000000..c92e7682dc6
--- /dev/null
+++ b/source/blender/nodes/function/nodes/node_fn_surface_position.cc
@@ -0,0 +1,20 @@
+#include "node_fn_util.h"
+
+static bNodeSocketTemplate fn_node_surface_position_in[] = {
+ {SOCK_SURFACE_HOOK, N_("Surface Hook")},
+ {-1, ""},
+};
+
+static bNodeSocketTemplate fn_node_surface_position_out[] = {
+ {SOCK_VECTOR, N_("Position")},
+ {-1, ""},
+};
+
+void register_node_type_fn_surface_position()
+{
+ static bNodeType ntype;
+
+ fn_node_type_base(&ntype, FN_NODE_SURFACE_POSITION, "Surface Position", 0, 0);
+ node_type_socket_templates(&ntype, fn_node_surface_position_in, fn_node_surface_position_out);
+ nodeRegisterType(&ntype);
+}
diff --git a/source/blender/nodes/function/nodes/node_fn_surface_weight.cc b/source/blender/nodes/function/nodes/node_fn_surface_weight.cc
new file mode 100644
index 00000000000..e3d40ff83d4
--- /dev/null
+++ b/source/blender/nodes/function/nodes/node_fn_surface_weight.cc
@@ -0,0 +1,21 @@
+#include "node_fn_util.h"
+
+static bNodeSocketTemplate fn_node_surface_weight_in[] = {
+ {SOCK_SURFACE_HOOK, N_("Surface Hook")},
+ {SOCK_STRING, N_("Group")},
+ {-1, ""},
+};
+
+static bNodeSocketTemplate fn_node_surface_weight_out[] = {
+ {SOCK_FLOAT, N_("Weight")},
+ {-1, ""},
+};
+
+void register_node_type_fn_surface_weight()
+{
+ static bNodeType ntype;
+
+ fn_node_type_base(&ntype, FN_NODE_SURFACE_WEIGHT, "Surface Position", 0, 0);
+ node_type_socket_templates(&ntype, fn_node_surface_weight_in, fn_node_surface_weight_out);
+ nodeRegisterType(&ntype);
+}
More information about the Bf-blender-cvs
mailing list