[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