diff options
author | Jacques Lucke <jacques@blender.org> | 2021-09-28 21:22:52 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2021-09-28 21:22:52 +0300 |
commit | 95fca22bfeb1d3e2edeeb71b9717e3528be14c17 (patch) | |
tree | 6767ffe3e8d4d3582c69b2027492a5d021ec1e84 | |
parent | 86ec9d79eca2a31044a5096df5d5ee244d15708d (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.py | 2 | ||||
-rw-r--r-- | release/scripts/startup/nodeitems_builtins.py | 131 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_userdef_types.h | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_userdef.c | 7 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_nodes.cc | 5 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_nodes_evaluator.cc | 22 |
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(); |