18 b.add_input<
decl::Float>(
N_(
"Value"),
"Value_Float").supports_field();
19 b.add_input<
decl::Int>(
N_(
"Value"),
"Value_Int").supports_field();
20 b.add_input<
decl::Vector>(
N_(
"Value"),
"Value_Vector").supports_field();
21 b.add_input<
decl::Color>(
N_(
"Value"),
"Value_Color").supports_field();
22 b.add_input<
decl::Bool>(
N_(
"Value"),
"Value_Bool").supports_field();
24 b.add_output<
decl::Float>(
N_(
"Value"),
"Value_Float").field_source();
25 b.add_output<
decl::Int>(
N_(
"Value"),
"Value_Int").field_source();
27 b.add_output<
decl::Color>(
N_(
"Value"),
"Value_Color").field_source();
28 b.add_output<
decl::Bool>(
N_(
"Value"),
"Value_Bool").field_source();
33 uiItemR(layout,
ptr,
"data_type", 0,
"", ICON_NONE);
34 uiItemR(layout,
ptr,
"domain", 0,
"", ICON_NONE);
81 params.update_and_connect_available_socket(
node,
"Value");
94 src_field_(
std::move(field)),
104 const int64_t src_domain_size =
component.attribute_domain_size(src_domain_);
107 value_evaluator.add_with_destination(src_field_, values.
as_mutable_span());
108 value_evaluator.evaluate();
109 return component.attributes()->adapt_domain(
140 using T = decltype(dummy);
143 Field<T> dst_field{std::make_shared<InterpolateDomain>(std::move(src_field), domain)};
144 params.set_output(identifier, std::move(dst_field));
#define NODE_CLASS_CONVERTER
void nodeSetSocketAvailability(struct bNodeTree *ntree, struct bNodeSocket *sock, bool is_available)
#define GEO_NODE_INTERPOLATE_DOMAIN
void nodeRegisterType(struct bNodeType *ntype)
#define BLI_assert_unreachable()
static uint8 component(Color32 c, uint i)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
GMutableSpan as_mutable_span()
static GVArray ForGArray(GArray<> array)
const CPPType & cpp_type() const
InterpolateDomain(GField field, eAttrDomain domain)
GVArray get_varray_for_context(const GeometryComponent &component, const eAttrDomain domain, IndexMask) const final
void convert_to_static_type(const CPPType &cpp_type, const Func &func)
static void node_geo_exec(GeoNodeExecParams params)
static void node_init(bNodeTree *UNUSED(tree), bNode *node)
static StringRefNull identifier_suffix(eCustomDataType data_type)
static void node_declare(NodeDeclarationBuilder &b)
static void node_update(bNodeTree *ntree, bNode *node)
static void node_gather_link_searches(GatherLinkSearchOpParams ¶ms)
static void node_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
std::optional< eCustomDataType > node_data_type_to_custom_data_type(const eNodeSocketDatatype type)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static void node_init(const struct bContext *C, bNodeTree *ntree, bNode *node)
void register_node_type_geo_interpolate_domain()
void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
struct bNodeSocket * next
NodeGeometryExecFunction geometry_node_execute
NodeGatherSocketLinkOperationsFunction gather_link_search_ops
void(* updatefunc)(struct bNodeTree *ntree, struct bNode *node)
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
NodeDeclareFunction declare
void(* initfunc)(struct bNodeTree *ntree, struct bNode *node)