Geometry Nodes: move bundle and closure nodes out of experimental
This moves the bundles and closures features out of experimental, making them an official part of Blender 5.0. Also see #134029. Pull Request: https://projects.blender.org/blender/blender/pulls/143750
This commit is contained in:
@@ -658,7 +658,6 @@ class NODE_MT_category_GEO_UTILITIES(Menu):
|
||||
layout.menu("NODE_MT_category_GEO_TEXT")
|
||||
layout.menu("NODE_MT_category_GEO_VECTOR")
|
||||
layout.separator()
|
||||
if context.preferences.experimental.use_bundle_and_closure_nodes:
|
||||
layout.menu("NODE_MT_category_utilities_bundle")
|
||||
layout.menu("NODE_MT_category_utilities_closure")
|
||||
layout.menu("NODE_MT_category_GEO_UTILITIES_FIELD")
|
||||
|
||||
@@ -2868,7 +2868,6 @@ class USERPREF_PT_experimental_new_features(ExperimentalPanel, Panel):
|
||||
("blender/blender/projects/10", "Pipeline, Assets & IO Project Page")),
|
||||
({"property": "use_new_volume_nodes"}, ("blender/blender/issues/103248", "#103248")),
|
||||
({"property": "use_shader_node_previews"}, ("blender/blender/issues/110353", "#110353")),
|
||||
({"property": "use_bundle_and_closure_nodes"}, ("blender/blender/issues/134029", "#134029")),
|
||||
({"property": "use_geometry_nodes_lists"}, ("blender/blender/issues/140918", "#140918")),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -225,9 +225,8 @@ typedef struct UserDef_Experimental {
|
||||
char use_sculpt_texture_paint;
|
||||
char use_new_volume_nodes;
|
||||
char use_shader_node_previews;
|
||||
char use_bundle_and_closure_nodes;
|
||||
char use_geometry_nodes_lists;
|
||||
char _pad[5];
|
||||
char _pad[6];
|
||||
} UserDef_Experimental;
|
||||
|
||||
#define USER_EXPERIMENTAL_TEST(userdef, member) \
|
||||
|
||||
@@ -431,12 +431,6 @@ static bool is_socket_type_supported(blender::bke::bNodeTreeType *ntreetype,
|
||||
}
|
||||
}
|
||||
|
||||
if (!U.experimental.use_bundle_and_closure_nodes) {
|
||||
if (ELEM(socket_type->type, SOCK_BUNDLE, SOCK_CLOSURE)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -7606,10 +7606,6 @@ static void rna_def_userdef_experimental(BlenderRNA *brna)
|
||||
prop, "Shader Node Previews", "Enables previews in the shader node editor");
|
||||
RNA_def_property_update(prop, 0, "rna_userdef_ui_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_bundle_and_closure_nodes", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_ui_text(
|
||||
prop, "Bundle and Closure Nodes", "Enables bundle and closure nodes in Geometry Nodes");
|
||||
|
||||
prop = RNA_def_property(srna, "use_geometry_nodes_lists", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_ui_text(prop, "Geometry Nodes Lists", "Enable new list types and nodes");
|
||||
|
||||
|
||||
@@ -105,11 +105,6 @@ static void node_operators()
|
||||
|
||||
static void node_geo_exec(GeoNodeExecParams params)
|
||||
{
|
||||
if (!U.experimental.use_bundle_and_closure_nodes) {
|
||||
params.set_default_remaining_outputs();
|
||||
return;
|
||||
}
|
||||
|
||||
const bNode &node = params.node();
|
||||
const NodeCombineBundle &storage = node_storage(node);
|
||||
|
||||
|
||||
@@ -334,11 +334,6 @@ static void node_rna(StructRNA *srna)
|
||||
*r_free = true;
|
||||
return enum_items_filter(rna_enum_node_socket_data_type_items,
|
||||
[](const EnumPropertyItem &item) -> bool {
|
||||
if (!U.experimental.use_bundle_and_closure_nodes) {
|
||||
if (ELEM(item.value, SOCK_BUNDLE, SOCK_CLOSURE)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return ELEM(item.value,
|
||||
SOCK_FLOAT,
|
||||
SOCK_INT,
|
||||
|
||||
@@ -109,11 +109,6 @@ static void node_operators()
|
||||
|
||||
static void node_geo_exec(GeoNodeExecParams params)
|
||||
{
|
||||
if (!U.experimental.use_bundle_and_closure_nodes) {
|
||||
params.set_default_remaining_outputs();
|
||||
return;
|
||||
}
|
||||
|
||||
nodes::BundlePtr bundle = params.extract_input<nodes::BundlePtr>("Bundle");
|
||||
if (!bundle) {
|
||||
params.set_default_remaining_outputs();
|
||||
|
||||
@@ -592,9 +592,7 @@ class LazyFunctionForSimulationOutputNode final : public LazyFunction {
|
||||
if (geo_eval_log::GeoTreeLogger *tree_logger = local_user_data.try_get_tree_logger(
|
||||
user_data))
|
||||
{
|
||||
const StringRefNull message = U.experimental.use_bundle_and_closure_nodes ?
|
||||
TIP_("Simulation must not be in a loop or closure") :
|
||||
TIP_("Simulation must not be in a loop");
|
||||
const StringRefNull message = TIP_("Simulation must not be in a loop or closure");
|
||||
tree_logger->node_warnings.append(*tree_logger->allocator,
|
||||
{node_.identifier, {NodeWarningType::Error, message}});
|
||||
}
|
||||
|
||||
@@ -242,11 +242,6 @@ static void node_rna(StructRNA *srna)
|
||||
*r_free = true;
|
||||
return enum_items_filter(rna_enum_node_socket_data_type_items,
|
||||
[](const EnumPropertyItem &item) -> bool {
|
||||
if (!U.experimental.use_bundle_and_closure_nodes) {
|
||||
if (ELEM(item.value, SOCK_BUNDLE, SOCK_CLOSURE)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return ELEM(item.value,
|
||||
SOCK_FLOAT,
|
||||
SOCK_INT,
|
||||
|
||||
@@ -141,11 +141,6 @@ class LazyFunctionForClosureZone : public LazyFunction {
|
||||
for (const int i : zone_.border_links.index_range()) {
|
||||
params.set_output(zone_info_.indices.outputs.border_link_usages[i], true);
|
||||
}
|
||||
if (!U.experimental.use_bundle_and_closure_nodes) {
|
||||
params.set_output(zone_info_.indices.outputs.main[0],
|
||||
bke::SocketValueVariant::From(ClosurePtr()));
|
||||
return;
|
||||
}
|
||||
|
||||
const auto &storage = *static_cast<const NodeClosureOutput *>(output_bnode_.storage);
|
||||
|
||||
|
||||
@@ -5,18 +5,10 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
import bpy
|
||||
|
||||
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
|
||||
from modules.mesh_test import BlendFileTest
|
||||
|
||||
if "closure" in bpy.data.filepath:
|
||||
if bpy.app.version_cycle == "alpha":
|
||||
bpy.context.preferences.experimental.use_bundle_and_closure_nodes = True
|
||||
else:
|
||||
print("Skipped because bundles and closures are still experimental.")
|
||||
sys.exit(0)
|
||||
|
||||
geo_node_test = BlendFileTest("test_object", "expected_object", threshold=1e-4)
|
||||
result = geo_node_test.run_test()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user