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:
authorJacques Lucke <jacques@blender.org>2021-09-28 21:22:52 +0300
committerHans Goudey <h.goudey@me.com>2021-09-28 21:22:52 +0300
commit95fca22bfeb1d3e2edeeb71b9717e3528be14c17 (patch)
tree6767ffe3e8d4d3582c69b2027492a5d021ec1e84
parent86ec9d79eca2a31044a5096df5d5ee244d15708d (diff)
Geometry Nodes: Remove experimental option for fields
This enables fields as the official workflow for geometry nodes. While many features are converted to use fields rather than the old attribute workflow, many are not yet converted. In that case, the unconverted nodes are still accessible with an experimental option. In the coming weeks the rest of the nodes will be converted. Differential Revision: https://developer.blender.org/D12672
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py2
-rw-r--r--release/scripts/startup/nodeitems_builtins.py131
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c7
-rw-r--r--source/blender/modifiers/intern/MOD_nodes.cc5
-rw-r--r--source/blender/modifiers/intern/MOD_nodes_evaluator.cc22
6 files changed, 81 insertions, 88 deletions
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index ef1c7a77a2b..6efac235359 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -2251,7 +2251,6 @@ class USERPREF_PT_experimental_new_features(ExperimentalPanel, Panel):
({"property": "use_sculpt_tools_tilt"}, "T82877"),
({"property": "use_extended_asset_browser"}, ("project/view/130/", "Project Page")),
({"property": "use_override_templates"}, ("T73318", "Milestone 4")),
- ({"property": "use_geometry_nodes_fields"}, "T91274"),
),
)
@@ -2285,6 +2284,7 @@ class USERPREF_PT_experimental_debugging(ExperimentalPanel, Panel):
({"property": "override_auto_resync"}, "T83811"),
({"property": "proxy_to_override_auto_conversion"}, "T91671"),
({"property": "use_cycles_debug"}, None),
+ ({"property": "use_geometry_nodes_legacy"}, "T91274"),
),
)
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index d1f1cfef682..3a7a2d62a0e 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -180,11 +180,8 @@ def object_eevee_cycles_shader_nodes_poll(context):
eevee_cycles_shader_nodes_poll(context))
-def geometry_nodes_fields_poll(context):
- return context.preferences.experimental.use_geometry_nodes_fields
-
-def geometry_nodes_fields_legacy_poll(context):
- return not context.preferences.experimental.use_geometry_nodes_fields
+def geometry_nodes_legacy_poll(context):
+ return context.preferences.experimental.use_geometry_nodes_legacy
# All standard node categories currently used in nodes.
@@ -483,27 +480,27 @@ texture_node_categories = [
geometry_node_categories = [
# Geometry Nodes
GeometryNodeCategory("GEO_ATTRIBUTE", "Attribute", items=[
- NodeItem("GeometryNodeLegacyAttributeRandomize", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeMath", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeClamp", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeCompare", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeConvert", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeCurveMap", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeFill", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeMix", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeProximity", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeColorRamp", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeVectorMath", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeVectorRotate", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeSampleTexture", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeCombineXYZ", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeSeparateXYZ", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeMapRange", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAttributeTransfer", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeAttributeRemove", poll=geometry_nodes_fields_legacy_poll),
-
- NodeItem("GeometryNodeAttributeCapture", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeAttributeStatistic", poll=geometry_nodes_fields_poll),
+ NodeItem("GeometryNodeLegacyAttributeRandomize", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeMath", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeClamp", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeCompare", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeConvert", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeCurveMap", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeFill", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeMix", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeProximity", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeColorRamp", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeVectorMath", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeVectorRotate", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeSampleTexture", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeCombineXYZ", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeSeparateXYZ", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeMapRange", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAttributeTransfer", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeAttributeRemove", poll=geometry_nodes_legacy_poll),
+
+ NodeItem("GeometryNodeAttributeCapture"),
+ NodeItem("GeometryNodeAttributeStatistic"),
]),
GeometryNodeCategory("GEO_COLOR", "Color", items=[
NodeItem("ShaderNodeMixRGB"),
@@ -513,24 +510,24 @@ geometry_node_categories = [
NodeItem("ShaderNodeCombineRGB"),
]),
GeometryNodeCategory("GEO_CURVE", "Curve", items=[
- NodeItem("GeometryNodeLegacyCurveSubdivide", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyCurveReverse", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyCurveSplineType", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyCurveSetHandles", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyCurveSelectHandles", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyMeshToCurve", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyCurveToPoints", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyCurveEndpoints", poll=geometry_nodes_fields_legacy_poll),
+ NodeItem("GeometryNodeLegacyCurveSubdivide", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyCurveReverse", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyCurveSplineType", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyCurveSetHandles", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyCurveSelectHandles", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyMeshToCurve", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyCurveToPoints", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyCurveEndpoints", poll=geometry_nodes_legacy_poll),
NodeItem("GeometryNodeCurveToMesh"),
NodeItem("GeometryNodeCurveResample"),
NodeItem("GeometryNodeCurveFill"),
NodeItem("GeometryNodeCurveTrim"),
NodeItem("GeometryNodeCurveLength"),
- NodeItem("GeometryNodeCurveParameter", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeInputTangent", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeCurveSample", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeCurveFillet", poll=geometry_nodes_fields_poll),
+ NodeItem("GeometryNodeCurveParameter"),
+ NodeItem("GeometryNodeInputTangent"),
+ NodeItem("GeometryNodeCurveSample"),
+ NodeItem("GeometryNodeCurveFillet"),
]),
GeometryNodeCategory("GEO_PRIMITIVES_CURVE", "Curve Primitives", items=[
NodeItem("GeometryNodeCurvePrimitiveLine"),
@@ -542,20 +539,20 @@ geometry_node_categories = [
NodeItem("GeometryNodeCurvePrimitiveBezierSegment"),
]),
GeometryNodeCategory("GEO_GEOMETRY", "Geometry", items=[
- NodeItem("GeometryNodeLegacyDeleteGeometry", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyRaycast", poll=geometry_nodes_fields_legacy_poll),
+ NodeItem("GeometryNodeLegacyDeleteGeometry", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyRaycast", poll=geometry_nodes_legacy_poll),
NodeItem("GeometryNodeBoundBox"),
NodeItem("GeometryNodeConvexHull"),
NodeItem("GeometryNodeTransform"),
NodeItem("GeometryNodeJoinGeometry"),
NodeItem("GeometryNodeSeparateComponents"),
- NodeItem("GeometryNodeSetPosition", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeRealizeInstances", poll=geometry_nodes_fields_poll),
+ NodeItem("GeometryNodeSetPosition"),
+ NodeItem("GeometryNodeRealizeInstances"),
]),
GeometryNodeCategory("GEO_INPUT", "Input", items=[
- NodeItem("FunctionNodeLegacyRandomFloat", poll=geometry_nodes_fields_legacy_poll),
-
+ NodeItem("FunctionNodeLegacyRandomFloat", poll=geometry_nodes_legacy_poll),
+
NodeItem("GeometryNodeObjectInfo"),
NodeItem("GeometryNodeCollectionInfo"),
NodeItem("ShaderNodeValue"),
@@ -563,26 +560,26 @@ geometry_node_categories = [
NodeItem("FunctionNodeInputVector"),
NodeItem("GeometryNodeInputMaterial"),
NodeItem("GeometryNodeIsViewport"),
- NodeItem("GeometryNodeInputPosition", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeInputIndex", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeInputNormal", poll=geometry_nodes_fields_poll),
+ NodeItem("GeometryNodeInputPosition"),
+ NodeItem("GeometryNodeInputIndex"),
+ NodeItem("GeometryNodeInputNormal"),
]),
GeometryNodeCategory("GEO_MATERIAL", "Material", items=[
- NodeItem("GeometryNodeLegacyMaterialAssign", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacySelectByMaterial", poll=geometry_nodes_fields_legacy_poll),
+ NodeItem("GeometryNodeLegacyMaterialAssign", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacySelectByMaterial", poll=geometry_nodes_legacy_poll),
- NodeItem("GeometryNodeMaterialAssign", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeMaterialSelection", poll=geometry_nodes_fields_poll),
+ NodeItem("GeometryNodeMaterialAssign"),
+ NodeItem("GeometryNodeMaterialSelection"),
NodeItem("GeometryNodeMaterialReplace"),
]),
GeometryNodeCategory("GEO_MESH", "Mesh", items=[
- NodeItem("GeometryNodeLegacyEdgeSplit", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacySubdivisionSurface", poll=geometry_nodes_fields_legacy_poll),
+ NodeItem("GeometryNodeLegacyEdgeSplit", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacySubdivisionSurface", poll=geometry_nodes_legacy_poll),
NodeItem("GeometryNodeBoolean"),
NodeItem("GeometryNodeTriangulate"),
NodeItem("GeometryNodeMeshSubdivide"),
- NodeItem("GeometryNodePointsToVertices", poll=geometry_nodes_fields_poll),
+ NodeItem("GeometryNodePointsToVertices"),
]),
GeometryNodeCategory("GEO_PRIMITIVES_MESH", "Mesh Primitives", items=[
NodeItem("GeometryNodeMeshCircle"),
@@ -595,16 +592,16 @@ geometry_node_categories = [
NodeItem("GeometryNodeMeshUVSphere"),
]),
GeometryNodeCategory("GEO_POINT", "Point", items=[
- NodeItem("GeometryNodeMeshToPoints", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeInstanceOnPoints", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeDistributePointsOnFaces", poll=geometry_nodes_fields_poll),
- NodeItem("GeometryNodeLegacyPointDistribute", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyPointInstance", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyPointSeparate", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyPointScale", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyPointTranslate", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyRotatePoints", poll=geometry_nodes_fields_legacy_poll),
- NodeItem("GeometryNodeLegacyAlignRotationToVector", poll=geometry_nodes_fields_legacy_poll),
+ NodeItem("GeometryNodeMeshToPoints"),
+ NodeItem("GeometryNodeInstanceOnPoints"),
+ NodeItem("GeometryNodeDistributePointsOnFaces"),
+ NodeItem("GeometryNodeLegacyPointDistribute", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyPointInstance", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyPointSeparate", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyPointScale", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyPointTranslate", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyRotatePoints", poll=geometry_nodes_legacy_poll),
+ NodeItem("GeometryNodeLegacyAlignRotationToVector", poll=geometry_nodes_legacy_poll),
]),
GeometryNodeCategory("GEO_TEXT", "Text", items=[
NodeItem("FunctionNodeStringLength"),
@@ -622,10 +619,10 @@ geometry_node_categories = [
NodeItem("FunctionNodeFloatCompare"),
NodeItem("FunctionNodeFloatToInt"),
NodeItem("GeometryNodeSwitch"),
- NodeItem("FunctionNodeRandomValue", poll=geometry_nodes_fields_poll),
+ NodeItem("FunctionNodeRandomValue"),
]),
GeometryNodeCategory("GEO_TEXTURE", "Texture", items=[
- NodeItem("ShaderNodeTexNoise", poll=geometry_nodes_fields_poll),
+ NodeItem("ShaderNodeTexNoise"),
]),
GeometryNodeCategory("GEO_VECTOR", "Vector", items=[
NodeItem("ShaderNodeVectorCurve"),
@@ -638,7 +635,7 @@ geometry_node_categories = [
NodeItem("GeometryNodeViewer"),
]),
GeometryNodeCategory("GEO_VOLUME", "Volume", items=[
- NodeItem("GeometryNodeLegacyPointsToVolume", poll=geometry_nodes_fields_legacy_poll),
+ NodeItem("GeometryNodeLegacyPointsToVolume", poll=geometry_nodes_legacy_poll),
NodeItem("GeometryNodeVolumeToMesh"),
]),
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 2399fb324d7..247f67f6b95 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -637,6 +637,7 @@ typedef struct UserDef_Experimental {
char no_override_auto_resync;
char no_proxy_to_override_conversion;
char use_cycles_debug;
+ char use_geometry_nodes_legacy;
char SANITIZE_AFTER_HERE;
/* The following options are automatically sanitized (set to 0)
* when the release cycle is not alpha. */
@@ -647,7 +648,6 @@ typedef struct UserDef_Experimental {
char use_sculpt_tools_tilt;
char use_extended_asset_browser;
char use_override_templates;
- char use_geometry_nodes_fields;
char _pad[3];
/** `makesdna` does not allow empty structs. */
} UserDef_Experimental;
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 16f33507bed..684c331e14e 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -6335,9 +6335,10 @@ static void rna_def_userdef_experimental(BlenderRNA *brna)
RNA_def_property_ui_text(
prop, "Override Templates", "Enable library override template in the python API");
- prop = RNA_def_property(srna, "use_geometry_nodes_fields", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "use_geometry_nodes_fields", 1);
- RNA_def_property_ui_text(prop, "Geometry Nodes Fields", "Enable field nodes in geometry nodes");
+ prop = RNA_def_property(srna, "use_geometry_nodes_legacy", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "use_geometry_nodes_legacy", 1);
+ RNA_def_property_ui_text(
+ prop, "Geometry Nodes Legacy", "Enable legacy geometry nodes in the menu");
}
static void rna_def_userdef_addon_collection(BlenderRNA *brna, PropertyRNA *cprop)
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index f2f9b82480d..d294491d51c 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -1146,8 +1146,7 @@ static void draw_property_for_socket(uiLayout *layout,
break;
}
default: {
- if (input_has_attribute_toggle(*nmd->node_group, socket_index) &&
- USER_EXPERIMENTAL_TEST(&U, use_geometry_nodes_fields)) {
+ if (input_has_attribute_toggle(*nmd->node_group, socket_index)) {
const std::string rna_path_use_attribute = "[\"" + std::string(socket_id_esc) +
use_attribute_suffix + "\"]";
const std::string rna_path_attribute_name = "[\"" + std::string(socket_id_esc) +
@@ -1240,7 +1239,7 @@ static void panel_draw(const bContext *C, Panel *panel)
});
}
- if (USER_EXPERIMENTAL_TEST(&U, use_geometry_nodes_fields) && has_legacy_node) {
+ if (has_legacy_node) {
uiLayout *row = uiLayoutRow(layout, false);
uiItemL(row, IFACE_("Node tree has legacy node"), ICON_ERROR);
uiLayout *sub = uiLayoutRow(row, false);
diff --git a/source/blender/modifiers/intern/MOD_nodes_evaluator.cc b/source/blender/modifiers/intern/MOD_nodes_evaluator.cc
index d9ea5696bf5..b9a9437d761 100644
--- a/source/blender/modifiers/intern/MOD_nodes_evaluator.cc
+++ b/source/blender/modifiers/intern/MOD_nodes_evaluator.cc
@@ -878,11 +878,9 @@ class GeometryNodesEvaluator {
NodeParamsProvider params_provider{*this, node, node_state};
GeoNodeExecParams params{params_provider};
- if (USER_EXPERIMENTAL_TEST(&U, use_geometry_nodes_fields)) {
- if (node->idname().find("Legacy") != StringRef::not_found) {
- params.error_message_add(geo_log::NodeWarningType::Legacy,
- TIP_("Legacy node will be removed before Blender 4.0"));
- }
+ if (node->idname().find("Legacy") != StringRef::not_found) {
+ params.error_message_add(geo_log::NodeWarningType::Legacy,
+ TIP_("Legacy node will be removed before Blender 4.0"));
}
bnode.typeinfo->geometry_node_execute(params);
}
@@ -891,14 +889,12 @@ class GeometryNodesEvaluator {
const MultiFunction &fn,
NodeState &node_state)
{
- if (USER_EXPERIMENTAL_TEST(&U, use_geometry_nodes_fields)) {
- if (node->idname().find("Legacy") != StringRef::not_found) {
- /* Create geometry nodes params just for creating an error message. */
- NodeParamsProvider params_provider{*this, node, node_state};
- GeoNodeExecParams params{params_provider};
- params.error_message_add(geo_log::NodeWarningType::Legacy,
- TIP_("Legacy node will be removed before Blender 4.0"));
- }
+ if (node->idname().find("Legacy") != StringRef::not_found) {
+ /* Create geometry nodes params just for creating an error message. */
+ NodeParamsProvider params_provider{*this, node, node_state};
+ GeoNodeExecParams params{params_provider};
+ params.error_message_add(geo_log::NodeWarningType::Legacy,
+ TIP_("Legacy node will be removed before Blender 4.0"));
}
LinearAllocator<> &allocator = local_allocators_.local();