|
Blender V5.0
|
Classes | |
| struct | SocketFieldState |
| struct | FieldInferencingInterface |
| class | NodeDeclaration |
| class | OutputFieldDependency |
| class | SocketDeclaration |
Enumerations | |
| enum class | FieldStateSyncResult : int8_t { NONE = 0 , CHANGED_A = (1 << 0) , CHANGED_B = (1 << 1) } |
| enum class | InputSocketFieldType |
| enum class | OutputSocketFieldType |
|
strong |
Result of syncing two field states.
| Enumerator | |
|---|---|
| NONE | |
| CHANGED_A | |
| CHANGED_B | |
Definition at line 277 of file node_tree_field_inferencing.cc.
|
strong |
Definition at line 34 of file NOD_node_declaration.hh.
|
strong |
Definition at line 43 of file NOD_node_declaration.hh.
|
static |
Definition at line 31 of file node_tree_field_inferencing.cc.
Referenced by propagate_field_status_from_left_to_right().
|
static |
Definition at line 676 of file node_tree_field_inferencing.cc.
References blender::bke::CanBeField, i, blender::Span< T >::index_range(), blender::bke::IsField, blender::bke::RequiresSingle, result, blender::Span< T >::size(), and state.
Referenced by update_field_inferencing().
|
static |
Definition at line 507 of file node_tree_field_inferencing.cc.
References bNodeTreeInterfaceSocket::default_input, blender::nodes::FieldInferencingInterface::inputs, is_layer_selection_field(), NODE_DEFAULT_INPUT_VALUE, NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_SINGLE, blender::bke::node_field_inferencing::SocketFieldState::requires_single, SOCK_CUSTOM, blender::nodes::socket_type_supports_fields(), state, bNodeTreeInterfaceSocket::structure_type, tree, and blender::bke::bNodeSocketType::type.
Referenced by update_field_inferencing().
|
static |
Definition at line 658 of file node_tree_field_inferencing.cc.
References find_group_output_dependencies(), blender::nodes::FieldInferencingInterface::outputs, and tree.
Referenced by update_field_inferencing().
|
static |
Check what the group output socket depends on. Potentially traverses the node tree to figure out if it is always a field or if it depends on any group inputs.
Definition at line 206 of file node_tree_field_inferencing.cc.
References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Vector< T, InlineBufferCapacity, Allocator >::append_non_duplicates(), blender::bke::node_field_inferencing::OutputFieldDependency::ForDataSource(), blender::bke::node_field_inferencing::OutputFieldDependency::ForFieldSource(), blender::bke::node_field_inferencing::OutputFieldDependency::ForPartiallyDependentField(), gather_input_socket_dependencies(), blender::Stack< T, InlineBufferCapacity, Allocator >::is_empty(), is_field_socket_type(), blender::bke::node_field_inferencing::SocketFieldState::is_field_source, blender::bke::node_field_inferencing::SocketFieldState::is_single, blender::nodes::FieldInferencingInterface::outputs, blender::Stack< T, InlineBufferCapacity, Allocator >::pop(), and blender::Stack< T, InlineBufferCapacity, Allocator >::push().
Referenced by determine_group_output_states().
|
static |
Definition at line 176 of file node_tree_field_inferencing.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::Vector< T, InlineBufferCapacity, Allocator >::extend(), blender::nodes::OutputFieldDependency::field_type(), i, and blender::nodes::OutputFieldDependency::linked_input_indices().
Referenced by find_group_output_dependencies(), propagate_data_requirements_from_right_to_left(), and propagate_field_status_from_left_to_right().
|
static |
Definition at line 105 of file node_tree_field_inferencing.cc.
References blender::bke::Array, blender::ResourceScope::construct(), blender::bke::node_field_inferencing::OutputFieldDependency::ForDataSource(), and blender::nodes::FieldInferencingInterface::inputs.
Referenced by get_node_field_inferencing_interface().
|
static |
Definition at line 41 of file node_tree_field_inferencing.cc.
References BLI_assert, blender::nodes::SocketDeclaration::input_field_type, blender::nodes::NodeDeclaration::inputs, is_field_socket_type(), NODE_CUSTOM, and bNode::type_legacy.
Referenced by get_node_field_inferencing_interface().
|
static |
Definition at line 73 of file node_tree_field_inferencing.cc.
References BLI_assert, blender::bke::node_field_inferencing::OutputFieldDependency::ForDataSource(), blender::bke::node_field_inferencing::OutputFieldDependency::ForDependentField(), is_field_socket_type(), NODE_CUSTOM, blender::nodes::SocketDeclaration::output_field_dependency, blender::nodes::NodeDeclaration::outputs, and bNode::type_legacy.
Referenced by get_node_field_inferencing_interface().
|
static |
Retrieves information about how the node interacts with fields. In the future, this information can be stored in the node declaration. This would allow this function to return a reference, making it more efficient.
Definition at line 121 of file node_tree_field_inferencing.cc.
References BLI_assert_unreachable, blender::ResourceScope::construct(), get_dummy_field_inferencing_interface(), get_interface_input_field_type(), get_interface_output_field_dependency(), i, bNode::id, blender::Span< T >::index_range(), bNode::inputs, blender::bke::node_tree_is_registered(), bNode::outputs, bNodeTree::runtime, and blender::Span< T >::size().
Referenced by prepare_inferencing_interfaces().
|
static |
Definition at line 26 of file node_tree_field_inferencing.cc.
References blender::nodes::socket_type_supports_fields(), and bNodeSocket::typeinfo.
Referenced by find_group_output_dependencies(), get_interface_input_field_type(), and get_interface_output_field_dependency().
|
static |
Definition at line 699 of file node_tree_field_inferencing.cc.
References get_node_field_inferencing_interface(), and i.
Referenced by update_field_inferencing().
|
static |
Definition at line 416 of file node_tree_field_inferencing.cc.
References blender::nodes::OutputFieldDependency::field_type(), gather_input_socket_dependencies(), blender::nodes::FieldInferencingInterface::inputs, blender::nodes::FieldInferencingInterface::outputs, propagate_special_data_requirements(), state, and tree.
Referenced by update_field_inferencing().
|
static |
Definition at line 567 of file node_tree_field_inferencing.cc.
References all_dangling_reroutes(), blender::nodes::OutputFieldDependency::field_type(), gather_input_socket_dependencies(), blender::nodes::FieldInferencingInterface::inputs, blender::nodes::FieldInferencingInterface::outputs, propagate_special_data_requirements(), state, and tree.
Referenced by update_field_inferencing().
|
static |
Definition at line 352 of file node_tree_field_inferencing.cc.
References CHANGED_A, CHANGED_B, data, GEO_NODE_REPEAT_INPUT, GEO_NODE_REPEAT_OUTPUT, GEO_NODE_SIMULATION_INPUT, GEO_NODE_SIMULATION_OUTPUT, bNode::identifier, repeat_field_state_sync(), simulation_nodes_field_state_sync(), bNode::storage, tree, and bNode::type_legacy.
Referenced by propagate_data_requirements_from_right_to_left(), and propagate_field_status_from_left_to_right().
|
static |
Definition at line 335 of file node_tree_field_inferencing.cc.
References i, NONE, bNode::storage, and sync_field_states().
Referenced by propagate_special_data_requirements().
|
static |
Compare field states of simulation nodes sockets and select the most compatible. Afterwards all field states will be the same.
Definition at line 318 of file node_tree_field_inferencing.cc.
References i, NONE, and sync_field_states().
Referenced by propagate_special_data_requirements().
|
static |
Compare both field states and select the most compatible. Afterwards both field states will be the same.
Definition at line 292 of file node_tree_field_inferencing.cc.
References b, if(), NONE, and sync_field_states().
Referenced by repeat_field_state_sync(), simulation_nodes_field_state_sync(), and sync_field_states().
| bool blender::bke::node_field_inferencing::update_field_inferencing | ( | const bNodeTree & | tree | ) |
Definition at line 709 of file node_tree_field_inferencing.cc.
References blender::bke::Array, BLI_assert, calc_socket_states(), determine_group_input_states(), determine_group_output_states(), blender::bke::node_field_inferencing::OutputFieldDependency::ForDataSource(), NTREE_GEOMETRY, prepare_inferencing_interfaces(), propagate_data_requirements_from_right_to_left(), propagate_field_status_from_left_to_right(), and tree.
Referenced by blender::ed::space_node::node_group_make_insert_selected().