|
Blender V4.5
|
Classes | |
| struct | FieldInferencingInterface |
| class | NodeDeclaration |
| class | OutputFieldDependency |
| class | SocketDeclaration |
| struct | SocketFieldState |
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 31 of file NOD_node_declaration.hh.
|
strong |
Definition at line 40 of file NOD_node_declaration.hh.
|
static |
Definition at line 31 of file node_tree_field_inferencing.cc.
References all_dangling_reroutes().
Referenced by all_dangling_reroutes(), and propagate_field_status_from_left_to_right().
|
static |
Definition at line 676 of file node_tree_field_inferencing.cc.
References calc_socket_states(), blender::bke::CanBeField, i, blender::Span< T >::index_range(), blender::bke::IsField, blender::bke::RequiresSingle, result, blender::Span< T >::size(), and state.
Referenced by calc_socket_states(), and update_field_inferencing().
|
static |
Definition at line 507 of file node_tree_field_inferencing.cc.
References bNodeTreeInterfaceSocket::default_input, determine_group_input_states(), 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, and blender::bke::bNodeSocketType::type.
Referenced by determine_group_input_states(), and update_field_inferencing().
|
static |
Definition at line 658 of file node_tree_field_inferencing.cc.
References determine_group_output_states(), find_group_output_dependencies(), and blender::nodes::FieldInferencingInterface::outputs.
Referenced by determine_group_output_states(), and 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(), find_group_output_dependencies(), 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(), and find_group_output_dependencies().
|
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(), gather_input_socket_dependencies(), i, and blender::nodes::OutputFieldDependency::linked_input_indices().
Referenced by find_group_output_dependencies(), gather_input_socket_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::Array< T, InlineBufferCapacity, Allocator >::Array(), blender::ResourceScope::construct(), blender::bke::node_field_inferencing::OutputFieldDependency::ForDataSource(), get_dummy_field_inferencing_interface(), and blender::nodes::FieldInferencingInterface::inputs.
Referenced by get_dummy_field_inferencing_interface(), and get_node_field_inferencing_interface().
|
static |
Definition at line 41 of file node_tree_field_inferencing.cc.
References BLI_assert, get_interface_input_field_type(), blender::nodes::SocketDeclaration::input_field_type, blender::nodes::NodeDeclaration::inputs, is_field_socket_type(), NODE_CUSTOM, and bNode::type_legacy.
Referenced by get_interface_input_field_type(), and 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(), get_interface_output_field_dependency(), is_field_socket_type(), NODE_CUSTOM, blender::nodes::SocketDeclaration::output_field_dependency, blender::nodes::NodeDeclaration::outputs, and bNode::type_legacy.
Referenced by get_interface_output_field_dependency(), and 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(), get_node_field_inferencing_interface(), 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 get_node_field_inferencing_interface(), and prepare_inferencing_interfaces().
|
static |
Definition at line 26 of file node_tree_field_inferencing.cc.
References is_field_socket_type(), blender::nodes::socket_type_supports_fields(), and bNodeSocket::typeinfo.
Referenced by find_group_output_dependencies(), get_interface_input_field_type(), get_interface_output_field_dependency(), and is_field_socket_type().
|
static |
Definition at line 699 of file node_tree_field_inferencing.cc.
References get_node_field_inferencing_interface(), i, and prepare_inferencing_interfaces().
Referenced by prepare_inferencing_interfaces(), and 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_data_requirements_from_right_to_left(), propagate_special_data_requirements(), and state.
Referenced by propagate_data_requirements_from_right_to_left(), and 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_field_status_from_left_to_right(), propagate_special_data_requirements(), and state.
Referenced by propagate_field_status_from_left_to_right(), and 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, propagate_special_data_requirements(), repeat_field_state_sync(), simulation_nodes_field_state_sync(), bNode::storage, and bNode::type_legacy.
Referenced by propagate_data_requirements_from_right_to_left(), propagate_field_status_from_left_to_right(), and propagate_special_data_requirements().
|
static |
Definition at line 335 of file node_tree_field_inferencing.cc.
References i, blender::IndexRange::IndexRange(), NONE, repeat_field_state_sync(), bNode::storage, and sync_field_states().
Referenced by propagate_special_data_requirements(), and repeat_field_state_sync().
|
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, simulation_nodes_field_state_sync(), and sync_field_states().
Referenced by propagate_special_data_requirements(), and simulation_nodes_field_state_sync().
|
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::Array< T, InlineBufferCapacity, Allocator >::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(), bNodeTree::runtime, bNodeTree::type, and update_field_inferencing().
Referenced by blender::ed::space_node::node_group_make_insert_selected(), and update_field_inferencing().