Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/makesdna/DNA_node_types.h')
-rw-r--r--source/blender/makesdna/DNA_node_types.h104
1 files changed, 99 insertions, 5 deletions
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 18545666796..ea87cef1118 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -120,7 +120,10 @@ typedef struct bNodeSocket {
/* XXX deprecated, kept for forward compatibility */
short stack_type DNA_DEPRECATED;
char display_shape;
- char _pad[1];
+
+ /* #AttributeDomain used when the geometry nodes modifier creates an attribute for a group
+ * output. */
+ char attribute_domain;
/* Runtime-only cache of the number of input links, for multi-input sockets. */
short total_inputs;
@@ -445,6 +448,7 @@ typedef struct bNodeLink {
#define NODE_LINK_TEST (1 << 2) /* free test flag, undefined */
#define NODE_LINK_TEMP_HIGHLIGHT (1 << 3) /* Link is highlighted for picking. */
#define NODE_LINK_MUTED (1 << 4) /* Link is muted. */
+#define NODE_LINK_DRAGGED (1 << 5) /* Node link is being dragged by the user. */
/* tree->edit_quality/tree->render_quality */
#define NTREE_QUALITY_HIGH 0
@@ -459,6 +463,16 @@ typedef struct bNodeLink {
#define NTREE_CHUNKSIZE_512 512
#define NTREE_CHUNKSIZE_1024 1024
+/** Workaround to forward-declare C++ type in C header. */
+#ifdef __cplusplus
+namespace blender::nodes {
+struct FieldInferencingInterface;
+}
+using FieldInferencingInterfaceHandle = blender::nodes::FieldInferencingInterface;
+#else
+typedef struct FieldInferencingInterfaceHandle FieldInferencingInterfaceHandle;
+#endif
+
/* the basis for a Node tree, all links and nodes reside internal here */
/* only re-usable node trees are in the library though,
* materials and textures allocate own tree struct */
@@ -481,6 +495,8 @@ typedef struct bNodeTree {
float view_center[2];
ListBase nodes, links;
+ /** Information about how inputs and outputs of the node group interact with fields. */
+ FieldInferencingInterfaceHandle *field_inferencing_interface;
/** Set init on fileread. */
int type, init;
@@ -575,6 +591,9 @@ typedef enum eNodeTreeUpdate {
NTREE_UPDATE_NODES = (1 << 1), /* nodes or sockets have been added or removed */
NTREE_UPDATE_GROUP_IN = (1 << 4), /* group inputs have changed */
NTREE_UPDATE_GROUP_OUT = (1 << 5), /* group outputs have changed */
+ /* The field interface has changed. So e.g. an output that was always a field before is not
+ * anymore. This implies that the field type inferencing has to be done again. */
+ NTREE_UPDATE_FIELD_INFERENCING = (1 << 6),
/* group has changed (generic flag including all other group flags) */
NTREE_UPDATE_GROUP = (NTREE_UPDATE_GROUP_IN | NTREE_UPDATE_GROUP_OUT),
} eNodeTreeUpdate;
@@ -836,7 +855,7 @@ typedef struct NodeVertexCol {
char name[64];
} NodeVertexCol;
-/* qdn: Defocus blur node */
+/** Defocus blur node. */
typedef struct NodeDefocus {
char bktype, _pad0, preview, gamco;
short samples, no_zbuf;
@@ -852,7 +871,7 @@ typedef struct NodeScriptDict {
void *node;
} NodeScriptDict;
-/* qdn: glare node */
+/** glare node. */
typedef struct NodeGlare {
char quality, type, iter;
/* XXX angle is only kept for backward/forward compatibility,
@@ -863,14 +882,14 @@ typedef struct NodeGlare {
char _pad1[4];
} NodeGlare;
-/* qdn: tonemap node */
+/** Tonemap node. */
typedef struct NodeTonemap {
float key, offset, gamma;
float f, m, a, c;
int type;
} NodeTonemap;
-/* qdn: lens distortion node */
+/** Lens distortion node. */
typedef struct NodeLensDist {
short jit, proj, fit;
char _pad[2];
@@ -1222,6 +1241,11 @@ typedef struct NodeAttributeMix {
uint8_t input_type_b;
} NodeAttributeMix;
+typedef struct NodeRandomValue {
+ /* CustomDataType. */
+ uint8_t data_type;
+} NodeRandomValue;
+
typedef struct NodeAttributeRandomize {
/* CustomDataType. */
uint8_t data_type;
@@ -1338,6 +1362,11 @@ typedef struct NodeGeometryAttributeProximity {
uint8_t target_geometry_element;
} NodeGeometryAttributeProximity;
+typedef struct NodeGeometryProximity {
+ /* GeometryNodeProximityTargetType. */
+ uint8_t target_element;
+} NodeGeometryProximity;
+
typedef struct NodeGeometryVolumeToMesh {
/* VolumeToMeshResolutionMode */
uint8_t resolution_mode;
@@ -1487,6 +1516,11 @@ typedef struct NodeGeometryCurveFill {
uint8_t mode;
} NodeGeometryCurveFill;
+typedef struct NodeGeometryMeshToPoints {
+ /* GeometryNodeMeshToPointsMode */
+ uint8_t mode;
+} NodeGeometryMeshToPoints;
+
typedef struct NodeGeometryAttributeCapture {
/* CustomDataType. */
int8_t data_type;
@@ -1494,6 +1528,16 @@ typedef struct NodeGeometryAttributeCapture {
int8_t domain;
} NodeGeometryAttributeCapture;
+typedef struct NodeGeometryStringToCurves {
+ /* GeometryNodeStringToCurvesOverflowMode */
+ uint8_t overflow;
+ /* GeometryNodeStringToCurvesAlignXMode */
+ uint8_t align_x;
+ /* GeometryNodeStringToCurvesAlignYMode */
+ uint8_t align_y;
+ char _pad[1];
+} NodeGeometryStringToCurves;
+
/* script node mode */
#define NODE_SCRIPT_INTERNAL 0
#define NODE_SCRIPT_EXTERNAL 1
@@ -1907,6 +1951,12 @@ typedef enum GeometryNodeAttributeProximityTargetType {
GEO_NODE_PROXIMITY_TARGET_FACES = 2,
} GeometryNodeAttributeProximityTargetType;
+typedef enum GeometryNodeProximityTargetType {
+ GEO_NODE_PROX_TARGET_POINTS = 0,
+ GEO_NODE_PROX_TARGET_EDGES = 1,
+ GEO_NODE_PROX_TARGET_FACES = 2,
+} GeometryNodeProximityTargetType;
+
typedef enum GeometryNodeBooleanOperation {
GEO_NODE_BOOLEAN_INTERSECT = 0,
GEO_NODE_BOOLEAN_UNION = 1,
@@ -1972,11 +2022,21 @@ typedef enum GeometryNodePointDistributeMode {
GEO_NODE_POINT_DISTRIBUTE_POISSON = 1,
} GeometryNodePointDistributeMode;
+typedef enum GeometryNodeDistributePointsOnFacesMode {
+ GEO_NODE_POINT_DISTRIBUTE_POINTS_ON_FACES_RANDOM = 0,
+ GEO_NODE_POINT_DISTRIBUTE_POINTS_ON_FACES_POISSON = 1,
+} GeometryNodeDistributePointsOnFacesMode;
+
typedef enum GeometryNodeRotatePointsType {
GEO_NODE_POINT_ROTATE_TYPE_EULER = 0,
GEO_NODE_POINT_ROTATE_TYPE_AXIS_ANGLE = 1,
} GeometryNodeRotatePointsType;
+typedef enum FunctionNodeRotatePointsType {
+ FN_NODE_ROTATE_EULER_TYPE_EULER = 0,
+ FN_NODE_ROTATE_EULER_TYPE_AXIS_ANGLE = 1,
+} FunctionNodeRotatePointsType;
+
typedef enum GeometryNodeAttributeVectorRotateMode {
GEO_NODE_VECTOR_ROTATE_TYPE_AXIS = 0,
GEO_NODE_VECTOR_ROTATE_TYPE_AXIS_X = 1,
@@ -1997,6 +2057,11 @@ typedef enum GeometryNodeRotatePointsSpace {
GEO_NODE_POINT_ROTATE_SPACE_POINT = 1,
} GeometryNodeRotatePointsSpace;
+typedef enum FunctionNodeRotateEulerSpace {
+ FN_NODE_ROTATE_EULER_SPACE_OBJECT = 0,
+ FN_NODE_ROTATE_EULER_SPACE_POINT = 1,
+} FunctionNodeRotateEulerSpace;
+
typedef enum GeometryNodeAlignRotationToVectorAxis {
GEO_NODE_ALIGN_ROTATION_TO_VECTOR_AXIS_X = 0,
GEO_NODE_ALIGN_ROTATION_TO_VECTOR_AXIS_Y = 1,
@@ -2085,6 +2150,35 @@ typedef enum GeometryNodeCurveFillMode {
GEO_NODE_CURVE_FILL_MODE_NGONS = 1,
} GeometryNodeCurveFillMode;
+typedef enum GeometryNodeMeshToPointsMode {
+ GEO_NODE_MESH_TO_POINTS_VERTICES = 0,
+ GEO_NODE_MESH_TO_POINTS_EDGES = 1,
+ GEO_NODE_MESH_TO_POINTS_FACES = 2,
+ GEO_NODE_MESH_TO_POINTS_CORNERS = 3,
+} GeometryNodeMeshToPointsMode;
+
+typedef enum GeometryNodeStringToCurvesOverflowMode {
+ GEO_NODE_STRING_TO_CURVES_MODE_OVERFLOW = 0,
+ GEO_NODE_STRING_TO_CURVES_MODE_SCALE_TO_FIT = 1,
+ GEO_NODE_STRING_TO_CURVES_MODE_TRUNCATE = 2,
+} GeometryNodeStringToCurvesOverflowMode;
+
+typedef enum GeometryNodeStringToCurvesAlignXMode {
+ GEO_NODE_STRING_TO_CURVES_ALIGN_X_LEFT = 0,
+ GEO_NODE_STRING_TO_CURVES_ALIGN_X_CENTER = 1,
+ GEO_NODE_STRING_TO_CURVES_ALIGN_X_RIGHT = 2,
+ GEO_NODE_STRING_TO_CURVES_ALIGN_X_JUSTIFY = 3,
+ GEO_NODE_STRING_TO_CURVES_ALIGN_X_FLUSH = 4,
+} GeometryNodeStringToCurvesAlignXMode;
+
+typedef enum GeometryNodeStringToCurvesAlignYMode {
+ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_TOP_BASELINE = 0,
+ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_TOP = 1,
+ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_MIDDLE = 2,
+ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_BOTTOM_BASELINE = 3,
+ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_BOTTOM = 4,
+} GeometryNodeStringToCurvesAlignYMode;
+
#ifdef __cplusplus
}
#endif