Commit: a3251e66a723368cbc553e8c4e4ffc46e4b96fc9 Author: Iliya Katueshenock Date: Fri Dec 9 15:50:00 2022 -0600 Branches: master https://developer.blender.org/rBa3251e66a723368cbc553e8c4e4ffc46e4b96fc9
Geometry Nodes: Image Input Node Add a simple node to choose an image data-block. Ref T102854 Differential Revision: https://developer.blender.org/D16644 =================================================================== M release/scripts/startup/bl_ui/node_add_menu_geometry.py M source/blender/blenkernel/BKE_node.h M source/blender/makesrna/intern/rna_nodetree.c M source/blender/nodes/NOD_static_types.h M source/blender/nodes/geometry/CMakeLists.txt M source/blender/nodes/geometry/node_geometry_register.cc M source/blender/nodes/geometry/node_geometry_register.hh A source/blender/nodes/geometry/nodes/node_geo_image.cc =================================================================== diff --git a/release/scripts/startup/bl_ui/node_add_menu_geometry.py b/release/scripts/startup/bl_ui/node_add_menu_geometry.py index d75d617c3ac..cc5f210e536 100644 --- a/release/scripts/startup/bl_ui/node_add_menu_geometry.py +++ b/release/scripts/startup/bl_ui/node_add_menu_geometry.py @@ -140,6 +140,7 @@ class NODE_MT_geometry_node_GEO_INPUT(Menu): node_add_menu.add_node_type(layout, "FunctionNodeInputBool") node_add_menu.add_node_type(layout, "GeometryNodeCollectionInfo") node_add_menu.add_node_type(layout, "FunctionNodeInputColor") + node_add_menu.add_node_type(layout, "GeometryNodeInputImage") node_add_menu.add_node_type(layout, "GeometryNodeImageInfo") node_add_menu.add_node_type(layout, "FunctionNodeInputInt") node_add_menu.add_node_type(layout, "GeometryNodeIsViewport") diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index 88f9c801aa8..fd45d698785 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -1542,6 +1542,7 @@ struct TexResult; #define GEO_NODE_SET_CURVE_NORMAL 1188 #define GEO_NODE_IMAGE_INFO 1189 #define GEO_NODE_BLUR_ATTRIBUTE 1190 +#define GEO_NODE_IMAGE 1191 /** \} */ diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 5cb7cbd63c3..ffbc0651fab 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -10604,6 +10604,18 @@ static void def_geo_attribute_capture(StructRNA *srna) RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); } +static void def_geo_image(StructRNA *srna) +{ + PropertyRNA *prop; + + prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "id"); + RNA_def_property_struct_type(prop, "Image"); + RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT); + RNA_def_property_ui_text(prop, "Image", ""); + RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); +} + static void def_geo_delete_geometry(StructRNA *srna) { PropertyRNA *prop; diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h index 6b892dfc5cf..a8190d6194f 100644 --- a/source/blender/nodes/NOD_static_types.h +++ b/source/blender/nodes/NOD_static_types.h @@ -320,6 +320,7 @@ DefNode(GeometryNode, GEO_NODE_FILL_CURVE, def_geo_curve_fill, "FILL_CURVE", Fil DefNode(GeometryNode, GEO_NODE_FILLET_CURVE, def_geo_curve_fillet, "FILLET_CURVE", FilletCurve, "Fillet Curve", "Round corners by generating circular arcs on each control point") DefNode(GeometryNode, GEO_NODE_FLIP_FACES, 0, "FLIP_FACES", FlipFaces, "Flip Faces", "Reverse the order of the vertices and edges of selected faces, flipping their normal direction") DefNode(GeometryNode, GEO_NODE_GEOMETRY_TO_INSTANCE, 0, "GEOMETRY_TO_INSTANCE", GeometryToInstance, "Geometry to Instance", "Convert each input geometry into an instance, which can be much faster than the Join Geometry node when the inputs are large") +DefNode(GeometryNode, GEO_NODE_IMAGE, def_geo_image, "IMAGE", InputImage, "Image", "Input image") DefNode(GeometryNode, GEO_NODE_IMAGE_INFO, 0, "IMAGE_INFO", ImageInfo, "Image Info", "Retrieve information about an image") DefNode(GeometryNode, GEO_NODE_IMAGE_TEXTURE, def_geo_image_texture, "IMAGE_TEXTURE", ImageTexture, "Image Texture", "Sample values from an image texture") DefNode(GeometryNode, GEO_NODE_INPUT_CURVE_HANDLES, 0, "INPUT_CURVE_HANDLES", InputCurveHandlePositions,"Curve Handle Positions", "Retrieve the position of each Bézier control point's handles") diff --git a/source/blender/nodes/geometry/CMakeLists.txt b/source/blender/nodes/geometry/CMakeLists.txt index 840be95ce1a..c6151022ac5 100644 --- a/source/blender/nodes/geometry/CMakeLists.txt +++ b/source/blender/nodes/geometry/CMakeLists.txt @@ -73,6 +73,7 @@ set(SRC nodes/node_geo_field_at_index.cc nodes/node_geo_flip_faces.cc nodes/node_geo_geometry_to_instance.cc + nodes/node_geo_image.cc nodes/node_geo_image_info.cc nodes/node_geo_image_texture.cc nodes/node_geo_input_curve_handles.cc diff --git a/source/blender/nodes/geometry/node_geometry_register.cc b/source/blender/nodes/geometry/node_geometry_register.cc index da3f0966eee..6518e8a62f7 100644 --- a/source/blender/nodes/geometry/node_geometry_register.cc +++ b/source/blender/nodes/geometry/node_geometry_register.cc @@ -57,6 +57,7 @@ void register_geometry_nodes() register_node_type_geo_field_at_index(); register_node_type_geo_flip_faces(); register_node_type_geo_geometry_to_instance(); + register_node_type_geo_image(); register_node_type_geo_image_info(); register_node_type_geo_image_texture(); register_node_type_geo_input_curve_handles(); diff --git a/source/blender/nodes/geometry/node_geometry_register.hh b/source/blender/nodes/geometry/node_geometry_register.hh index b7cca9e1903..66ab1d32af0 100644 --- a/source/blender/nodes/geometry/node_geometry_register.hh +++ b/source/blender/nodes/geometry/node_geometry_register.hh @@ -54,6 +54,7 @@ void register_node_type_geo_extrude_mesh(); void register_node_type_geo_field_at_index(); void register_node_type_geo_flip_faces(); void register_node_type_geo_geometry_to_instance(); +void register_node_type_geo_image(); void register_node_type_geo_image_info(); void register_node_type_geo_image_texture(); void register_node_type_geo_input_curve_handles(); diff --git a/source/blender/nodes/geometry/nodes/node_geo_image.cc b/source/blender/nodes/geometry/nodes/node_geo_image.cc new file mode 100644 index 00000000000..027dc67e1da --- /dev/null +++ b/source/blender/nodes/geometry/nodes/node_geo_image.cc @@ -0,0 +1,50 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "DNA_image_types.h" + +#include "node_geometry_util.hh" + +#include "UI_interface.h" +#include "UI_resources.h" + +namespace blender::nodes::node_geo_image_cc { + +static void node_declare(NodeDeclarationBuilder &b) +{ + b.add_output<decl::Image>(N_("Image")); +} + +static void node_layout(uiLayout *layout, bContext *C, PointerRNA *ptr) +{ + uiTemplateID(layout, + C, + ptr, + "image", + "IMAGE_OT_new", + "IMAGE_OT_open", + nullptr, + UI_TEMPLATE_ID_FILTER_ALL, + false, + nullptr); +} + +static void node_geo_exec(GeoNodeExecParams params) +{ + params.set_output("Image", reinterpret_cast<Image *>(params.node().id)); +} + +} // namespace blender::nodes::node_geo_image_cc + +void register_node_type_geo_image() +{ + namespace file_ns = blender::nodes::node_geo_image_cc; + + static bNodeType ntype; + + geo_node_type_base(&ntype, GEO_NODE_IMAGE, "Image", NODE_CLASS_INPUT); + ntype.geometry_node_execute = file_ns::node_geo_exec; + ntype.draw_buttons = file_ns::node_layout; + ntype.declare = file_ns::node_declare; + node_type_size_preset(&ntype, NODE_SIZE_LARGE); + nodeRegisterType(&ntype); +} _______________________________________________ Bf-blender-cvs mailing list [email protected] List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs
