Commit: d4b441851f39a3c38feb8a2d57e8f0741fa4b430
Author: Jacques Lucke
Date:   Tue Aug 10 15:33:19 2021 +0200
Branches: temp-geometry-nodes-fields-prototype
https://developer.blender.org/rBd4b441851f39a3c38feb8a2d57e8f0741fa4b430

new Position node

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

M       release/scripts/startup/nodeitems_builtins.py
M       source/blender/blenkernel/BKE_node.h
M       source/blender/blenkernel/intern/node.cc
M       source/blender/nodes/CMakeLists.txt
M       source/blender/nodes/NOD_geometry.h
M       source/blender/nodes/NOD_static_types.h
A       source/blender/nodes/geometry/nodes/node_geo_position.cc

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

diff --git a/release/scripts/startup/nodeitems_builtins.py 
b/release/scripts/startup/nodeitems_builtins.py
index 5f6e03a37cc..7f766221fa0 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -536,6 +536,7 @@ geometry_node_categories = [
         NodeItem("GeometryNodeAttribute"),
         NodeItem("GeometryNodeIndex"),
         NodeItem("GeometryNodeNormal"),
+        NodeItem("GeometryNodePosition"),
         NodeItem("GeometryNodeCurveParameter"),
     ]),
     GeometryNodeCategory("GEO_MATERIAL", "Material", items=[
diff --git a/source/blender/blenkernel/BKE_node.h 
b/source/blender/blenkernel/BKE_node.h
index 03c2efda9c9..dbd2bbaec6c 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -1485,6 +1485,7 @@ int ntreeTexExecTree(struct bNodeTree *ntree,
 #define GEO_NODE_NORMAL 1080
 #define GEO_NODE_CURVE_PARAMETER 1081
 #define GEO_NODE_EXTRUDE_AND_MOVE 1082
+#define GEO_NODE_POSITION 1083
 
 /** \} */
 
diff --git a/source/blender/blenkernel/intern/node.cc 
b/source/blender/blenkernel/intern/node.cc
index e56d8441f3c..aaaceab049e 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -5186,6 +5186,7 @@ static void registerGeometryNodes()
   register_node_type_geo_point_separate();
   register_node_type_geo_point_translate();
   register_node_type_geo_points_to_volume();
+  register_node_type_geo_position();
   register_node_type_geo_raycast();
   register_node_type_geo_sample_texture();
   register_node_type_geo_select_by_handle_type();
diff --git a/source/blender/nodes/CMakeLists.txt 
b/source/blender/nodes/CMakeLists.txt
index 6580d5ee4fb..cb72ddfb75e 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -215,6 +215,7 @@ set(SRC
   geometry/nodes/node_geo_point_separate.cc
   geometry/nodes/node_geo_point_translate.cc
   geometry/nodes/node_geo_points_to_volume.cc
+  geometry/nodes/node_geo_position.cc
   geometry/nodes/node_geo_raycast.cc
   geometry/nodes/node_geo_select_by_material.cc
   geometry/nodes/node_geo_separate_components.cc
diff --git a/source/blender/nodes/NOD_geometry.h 
b/source/blender/nodes/NOD_geometry.h
index 0601b8a2ea1..46ec23b70ac 100644
--- a/source/blender/nodes/NOD_geometry.h
+++ b/source/blender/nodes/NOD_geometry.h
@@ -100,6 +100,7 @@ void register_node_type_geo_point_scale(void);
 void register_node_type_geo_point_separate(void);
 void register_node_type_geo_point_translate(void);
 void register_node_type_geo_points_to_volume(void);
+void register_node_type_geo_position(void);
 void register_node_type_geo_raycast(void);
 void register_node_type_geo_sample_texture(void);
 void register_node_type_geo_select_by_handle_type(void);
diff --git a/source/blender/nodes/NOD_static_types.h 
b/source/blender/nodes/NOD_static_types.h
index 5abda7f2972..c71833817e8 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -343,6 +343,7 @@ DefNode(GeometryNode, GEO_NODE_POINT_SCALE, 
def_geo_point_scale, "POINT_SCALE",
 DefNode(GeometryNode, GEO_NODE_POINT_SEPARATE, 0, "POINT_SEPARATE", 
PointSeparate, "Point Separate", "")
 DefNode(GeometryNode, GEO_NODE_POINT_TRANSLATE, def_geo_point_translate, 
"POINT_TRANSLATE", PointTranslate, "Point Translate", "")
 DefNode(GeometryNode, GEO_NODE_POINTS_TO_VOLUME, def_geo_points_to_volume, 
"POINTS_TO_VOLUME", PointsToVolume, "Points to Volume", "")
+DefNode(GeometryNode, GEO_NODE_POSITION, 0, "POSITION", Position, "Position", 
"")
 DefNode(GeometryNode, GEO_NODE_RAYCAST, def_geo_raycast, "RAYCAST", Raycast, 
"Raycast", "")
 DefNode(GeometryNode, GEO_NODE_SELECT_BY_MATERIAL, 0, "SELECT_BY_MATERIAL", 
SelectByMaterial, "Select by Material", "")
 DefNode(GeometryNode, GEO_NODE_SEPARATE_COMPONENTS, 0, "SEPARATE_COMPONENTS", 
SeparateComponents, "Separate Components", "")
diff --git a/source/blender/nodes/geometry/nodes/node_geo_position.cc 
b/source/blender/nodes/geometry/nodes/node_geo_position.cc
new file mode 100644
index 00000000000..b86928af491
--- /dev/null
+++ b/source/blender/nodes/geometry/nodes/node_geo_position.cc
@@ -0,0 +1,45 @@
+/*
+ * 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 "UI_interface.h"
+#include "UI_resources.h"
+
+#include "node_geometry_util.hh"
+
+static bNodeSocketTemplate geo_node_position_out[] = {
+    {SOCK_VECTOR, N_("Position")},
+    {-1, ""},
+};
+
+namespace blender::nodes {
+
+static void geo_node_position_exec(GeoNodeExecParams params)
+{
+  FieldPtr position_field = new bke::PersistentAttributeField("position", 
CPPType::get<float3>());
+  params.set_output("Position", 
bke::FieldRef<float3>(std::move(position_field)));
+}
+
+}  // namespace blender::nodes
+
+void register_node_type_geo_position()
+{
+  static bNodeType ntype;
+
+  geo_node_type_base(&ntype, GEO_NODE_POSITION, "Position", NODE_CLASS_INPUT, 
0);
+  node_type_socket_templates(&ntype, nullptr, geo_node_position_out);
+  ntype.geometry_node_execute = blender::nodes::geo_node_position_exec;
+  nodeRegisterType(&ntype);
+}

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to