Blender
V3.3
|
#include <COM_NodeOperationBuilder.h>
Classes | |
class | Link |
Public Member Functions | |
NodeOperationBuilder (const CompositorContext *context, bNodeTree *b_nodetree, ExecutionSystem *system) | |
const CompositorContext & | context () const |
void | convert_to_operations (ExecutionSystem *system) |
void | add_operation (NodeOperation *operation) |
void | replace_operation_with_constant (NodeOperation *operation, ConstantOperation *constant_operation) |
void | map_input_socket (NodeInput *node_socket, NodeOperationInput *operation_socket) |
void | map_output_socket (NodeOutput *node_socket, NodeOperationOutput *operation_socket) |
void | add_link (NodeOperationOutput *from, NodeOperationInput *to) |
void | remove_input_link (NodeOperationInput *to) |
void | add_preview (NodeOperationOutput *output) |
void | add_node_input_preview (NodeInput *input) |
void | register_viewer (ViewerOperation *viewer) |
ViewerOperation * | active_viewer () const |
const Vector< NodeOperation * > & | get_operations () const |
const Vector< Link > & | get_links () const |
Protected Member Functions | |
void | add_datatype_conversions () |
void | add_operation_input_constants () |
void | add_input_constant_value (NodeOperationInput *input, const NodeInput *node_input) |
void | resolve_proxies () |
void | determine_canvases () |
Vector< NodeOperationInput * > | cache_output_links (NodeOperationOutput *output) const |
WriteBufferOperation * | find_attached_write_buffer_operation (NodeOperationOutput *output) const |
void | add_complex_operation_buffers () |
void | add_input_buffers (NodeOperation *operation, NodeOperationInput *input) |
void | add_output_buffers (NodeOperation *operation, NodeOperationOutput *output) |
void | prune_operations () |
void | sort_operations () |
void | group_operations () |
ExecutionGroup * | make_group (NodeOperation *op) |
Definition at line 30 of file COM_NodeOperationBuilder.h.
blender::compositor::NodeOperationBuilder::NodeOperationBuilder | ( | const CompositorContext * | context, |
bNodeTree * | b_nodetree, | ||
ExecutionSystem * | system | ||
) |
Definition at line 25 of file COM_NodeOperationBuilder.cc.
References context(), and blender::compositor::NodeGraph::from_bNodeTree().
|
inline |
The currently active viewer output operation
Definition at line 106 of file COM_NodeOperationBuilder.h.
Referenced by blender::compositor::NodeConverter::active_viewer().
|
protected |
Add read/write buffer operations around complex operations
Definition at line 615 of file COM_NodeOperationBuilder.cc.
References add_input_buffers(), add_output_buffers(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), and blender::compositor::DebugInfo::operation_read_write_buffer().
Referenced by convert_to_operations().
|
protected |
Add datatype conversion where needed
Definition at line 280 of file COM_NodeOperationBuilder.cc.
References add_link(), add_operation(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::compositor::COM_convert_data_type(), blender::compositor::NodeOperation::get_flags(), blender::compositor::NodeOperation::get_input_socket(), blender::compositor::NodeOperation::get_output_socket(), remove_input_link(), and blender::compositor::NodeOperationFlags::use_datatype_conversion.
Referenced by convert_to_operations().
|
protected |
Definition at line 527 of file COM_NodeOperationBuilder.cc.
References add_link(), add_operation(), find_attached_write_buffer_operation(), blender::compositor::CompositorContext::get_bnodetree(), blender::compositor::NodeOperation::get_input_socket(), blender::compositor::WriteBufferOperation::get_memory_proxy(), blender::compositor::NodeOperation::get_output_socket(), input, output, blender::compositor::WriteBufferOperation::read_resolution_from_input_socket(), blender::compositor::ReadBufferOperation::read_resolution_from_write_buffer(), remove_input_link(), blender::compositor::NodeOperation::set_bnodetree(), and blender::compositor::ReadBufferOperation::set_memory_proxy().
Referenced by add_complex_operation_buffers().
|
protected |
Definition at line 327 of file COM_NodeOperationBuilder.cc.
References add_link(), add_operation(), blender::compositor::Color, blender::compositor::NodeInput::get_bnode_socket(), blender::compositor::NodeInput::get_editor_value_color(), blender::compositor::NodeInput::get_editor_value_float(), blender::compositor::NodeInput::get_editor_value_vector(), blender::compositor::NodeOperation::get_output_socket(), input, blender::compositor::SetColorOperation::set_channels(), blender::compositor::SetValueOperation::set_value(), blender::compositor::SetVectorOperation::set_vector(), blender::compositor::Value, blender::compositor::Vector, zero_v3(), and zero_v4().
Referenced by add_operation_input_constants().
void blender::compositor::NodeOperationBuilder::add_link | ( | NodeOperationOutput * | from, |
NodeOperationInput * | to | ||
) |
Definition at line 179 of file COM_NodeOperationBuilder.cc.
References from, blender::compositor::NodeOperationInput::is_connected(), and blender::compositor::NodeOperationInput::set_link().
Referenced by add_datatype_conversions(), add_input_buffers(), blender::compositor::NodeConverter::add_input_color(), add_input_constant_value(), blender::compositor::NodeConverter::add_input_value(), blender::compositor::NodeConverter::add_input_vector(), blender::compositor::NodeConverter::add_link(), add_output_buffers(), add_preview(), blender::compositor::COM_convert_canvas(), convert_to_operations(), and resolve_proxies().
Add a preview operation for a node input
Definition at line 247 of file COM_NodeOperationBuilder.cc.
References add_operation(), blender::compositor::NodeOperation::get_input_socket(), input, and map_input_socket().
Referenced by blender::compositor::NodeConverter::add_node_input_preview().
void blender::compositor::NodeOperationBuilder::add_operation | ( | NodeOperation * | operation | ) |
Definition at line 118 of file COM_NodeOperationBuilder.cc.
References blender::compositor::Node::get_bnode(), blender::compositor::CompositorContext::get_execution_model(), bNode::name, blender::compositor::NodeOperation::set_execution_model(), blender::compositor::NodeOperation::set_execution_system(), blender::compositor::NodeOperation::set_id(), and blender::compositor::NodeOperation::set_name().
Referenced by add_datatype_conversions(), add_input_buffers(), blender::compositor::NodeConverter::add_input_color(), add_input_constant_value(), blender::compositor::NodeConverter::add_input_proxy(), blender::compositor::NodeConverter::add_input_value(), blender::compositor::NodeConverter::add_input_vector(), add_node_input_preview(), blender::compositor::NodeConverter::add_operation(), add_output_buffers(), blender::compositor::NodeConverter::add_output_color(), blender::compositor::NodeConverter::add_output_proxy(), blender::compositor::NodeConverter::add_output_value(), blender::compositor::NodeConverter::add_output_vector(), add_preview(), blender::compositor::COM_convert_canvas(), replace_operation_with_constant(), and blender::compositor::NodeConverter::set_invalid_output().
|
protected |
Construct a constant value operation for every unconnected input
Definition at line 308 of file COM_NodeOperationBuilder.cc.
References add_input_constant_value(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), and input.
Referenced by convert_to_operations().
|
protected |
Definition at line 565 of file COM_NodeOperationBuilder.cc.
References add_link(), add_operation(), BLI_assert, cache_output_links(), blender::compositor::CompositorContext::get_bnodetree(), blender::compositor::NodeOperationOutput::get_data_type(), blender::compositor::NodeOperation::get_input_socket(), blender::compositor::WriteBufferOperation::get_memory_proxy(), blender::compositor::NodeOperation::get_output_socket(), blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), output, blender::compositor::WriteBufferOperation::read_resolution_from_input_socket(), blender::compositor::ReadBufferOperation::read_resolution_from_write_buffer(), remove_input_link(), blender::compositor::NodeOperation::set_bnodetree(), and blender::compositor::ReadBufferOperation::set_memory_proxy().
Referenced by add_complex_operation_buffers().
void blender::compositor::NodeOperationBuilder::add_preview | ( | NodeOperationOutput * | output | ) |
Add a preview operation for a operation output
Definition at line 237 of file COM_NodeOperationBuilder.cc.
References add_link(), add_operation(), blender::compositor::NodeOperation::get_input_socket(), and output.
Referenced by blender::compositor::NodeConverter::add_preview().
|
protected |
Helper function to store connected inputs for replacement
Definition at line 501 of file COM_NodeOperationBuilder.cc.
References inputs, and output.
Referenced by add_output_buffers().
|
inline |
Definition at line 79 of file COM_NodeOperationBuilder.h.
Referenced by blender::compositor::COM_convert_canvas(), blender::compositor::ConstantFolder::fold_operations(), and NodeOperationBuilder().
void blender::compositor::NodeOperationBuilder::convert_to_operations | ( | ExecutionSystem * | system | ) |
Definition at line 33 of file COM_NodeOperationBuilder.cc.
References blender::MultiValueMap< Key, Value >::add(), add_complex_operation_buffers(), add_datatype_conversions(), add_link(), add_operation_input_constants(), determine_canvases(), blender::compositor::ConstantFolder::fold_operations(), from, blender::compositor::FullFrame, blender::compositor::CompositorContext::get_execution_model(), group_operations(), blender::Span< T >::is_empty(), blender::compositor::NodeGraph::links(), blender::MultiValueMap< Key, Value >::lookup(), node, blender::compositor::DebugInfo::node_to_operations(), blender::compositor::NodeGraph::nodes(), prune_operations(), resolve_proxies(), blender::compositor::ExecutionSystem::set_operations(), and blender::compositor::Tiled.
Referenced by blender::compositor::ExecutionSystem::ExecutionSystem().
|
protected |
Calculate canvas area for each operation.
Definition at line 408 of file COM_NodeOperationBuilder.cc.
References blender::compositor::Align, blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BLI_rcti_compare(), blender::compositor::COM_AREA_NONE, blender::compositor::COM_convert_canvas(), blender::compositor::CompositorContext::is_rendering(), blender::compositor::None, rcti::xmin, and rcti::ymin.
Referenced by convert_to_operations().
|
protected |
Find a connected write buffer operation to an OpOutput
Definition at line 513 of file COM_NodeOperationBuilder.cc.
References blender::compositor::NodeOperation::get_flags(), blender::compositor::NodeOperationFlags::is_write_buffer_operation, and output.
Referenced by add_input_buffers().
Definition at line 116 of file COM_NodeOperationBuilder.h.
Referenced by blender::compositor::operator<<().
|
inline |
Definition at line 111 of file COM_NodeOperationBuilder.h.
Referenced by blender::compositor::ConstantFolder::fold_operations(), and blender::compositor::operator<<().
|
protected |
Create execution groups
Definition at line 752 of file COM_NodeOperationBuilder.cc.
References blender::compositor::MemoryProxy::get_executor(), blender::compositor::ReadBufferOperation::get_memory_proxy(), blender::compositor::MemoryProxy::get_write_buffer_operation(), blender::compositor::CompositorContext::is_rendering(), make_group(), blender::compositor::MemoryProxy::set_executor(), and blender::compositor::ExecutionGroup::set_output_execution_group().
Referenced by convert_to_operations().
|
protected |
Definition at line 741 of file COM_NodeOperationBuilder.cc.
References blender::compositor::add_group_operations_recursive(), and visited.
Referenced by group_operations().
void blender::compositor::NodeOperationBuilder::map_input_socket | ( | NodeInput * | node_socket, |
NodeOperationInput * | operation_socket | ||
) |
Map input socket of the current node to an operation socket
Definition at line 157 of file COM_NodeOperationBuilder.cc.
References BLI_assert, and blender::compositor::NodeInput::get_node().
Referenced by blender::compositor::NodeConverter::add_input_proxy(), add_node_input_preview(), and blender::compositor::NodeConverter::map_input_socket().
void blender::compositor::NodeOperationBuilder::map_output_socket | ( | NodeOutput * | node_socket, |
NodeOperationOutput * | operation_socket | ||
) |
Map output socket of the current node to an operation socket
Definition at line 170 of file COM_NodeOperationBuilder.cc.
References BLI_assert, and blender::compositor::NodeOutput::get_node().
Referenced by blender::compositor::NodeConverter::add_output_color(), blender::compositor::NodeConverter::add_output_proxy(), blender::compositor::NodeConverter::add_output_value(), blender::compositor::NodeConverter::add_output_vector(), blender::compositor::NodeConverter::map_output_socket(), and blender::compositor::NodeConverter::set_invalid_output().
|
protected |
Remove unreachable operations
Definition at line 664 of file COM_NodeOperationBuilder.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::compositor::find_reachable_operations_recursive(), and blender::compositor::CompositorContext::is_rendering().
Referenced by convert_to_operations().
void blender::compositor::NodeOperationBuilder::register_viewer | ( | ViewerOperation * | viewer | ) |
Define a viewer operation as the active output, if possible
Definition at line 257 of file COM_NodeOperationBuilder.cc.
References blender::compositor::CompositorContext::get_bnodetree(), blender::compositor::Node::get_bnodetree(), blender::compositor::Node::is_in_active_group(), and blender::compositor::ViewerOperation::set_active().
Referenced by blender::compositor::NodeConverter::register_viewer().
void blender::compositor::NodeOperationBuilder::remove_input_link | ( | NodeOperationInput * | to | ) |
Definition at line 191 of file COM_NodeOperationBuilder.cc.
References blender::compositor::NodeOperationInput::set_link().
Referenced by add_datatype_conversions(), add_input_buffers(), add_output_buffers(), blender::compositor::COM_convert_canvas(), and resolve_proxies().
void blender::compositor::NodeOperationBuilder::replace_operation_with_constant | ( | NodeOperation * | operation, |
ConstantOperation * | constant_operation | ||
) |
Definition at line 129 of file COM_NodeOperationBuilder.cc.
References add_operation(), BLI_assert, and blender::compositor::NodeOperation::get_number_of_input_sockets().
|
protected |
Replace proxy operations with direct links
Definition at line 379 of file COM_NodeOperationBuilder.cc.
References add_link(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), from, and remove_input_link().
Referenced by convert_to_operations().
|
protected |
Sort operations by link dependencies
Definition at line 708 of file COM_NodeOperationBuilder.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::reserve(), blender::compositor::sort_operations_recursive(), and visited.