22using namespace nodes::derived_node_tree_types;
27 return socket->is_available() &&
StringRef(socket->
idname) !=
"NodeSocketVirtual";
33 if (!
input->is_logically_linked()) {
39 input.foreach_origin_socket([&](
const DSocket origin) { socket = origin; });
58 if (origin->is_input()) {
59 return DOutputSocket();
63 return DOutputSocket(origin);
68 switch (socket->
type) {
90 bool condition_satisfied =
false;
91 output.foreach_target_socket(
93 if (condition(target.node())) {
94 condition_satisfied = true;
98 return condition_satisfied;
104 if (!
output->is_logically_linked()) {
109 output.foreach_target_socket(
111 if (condition(target)) {
120 BLI_assert(
bool(
node->typeinfo->gpu_fn) ==
bool(
node->typeinfo->build_multi_function));
121 return node->typeinfo->gpu_fn &&
node->typeinfo->build_multi_function;
139 return input->index();
146 using namespace nodes;
156 const NodeDeclaration *node_declaration = socket->owner_node().declaration();
157 if (!node_declaration) {
158 return input_descriptor;
160 const SocketDeclaration *socket_declaration = node_declaration->inputs[socket->index()];
164 socket_declaration->compositor_realization_mode());
167 return input_descriptor;
191 if (
node.context()->instance_key().value !=
192 node.context()->derived_tree().active_context().instance_key().value)
203 return DOutputSocket();
211 if (
output->is_logically_linked()) {
216 return DOutputSocket();
#define BLI_assert_unreachable()
void GPU_compute_dispatch(GPUShader *shader, uint groups_x_len, uint groups_y_len, uint groups_z_len, const blender::gpu::shader::SpecializationConstants *constants_state=nullptr)
int compositor_domain_priority() const
InputSocketFieldType input_field_type
int number_of_inputs_linked_to_output_conditioned(DOutputSocket output, FunctionRef< bool(DInputSocket)> condition)
bool is_output_linked_to_node_conditioned(DOutputSocket output, FunctionRef< bool(DNode)> condition)
DSocket get_input_origin_socket(DInputSocket input)
void compute_dispatch_threads_at_least(GPUShader *shader, int2 threads_range, int2 local_size=int2(16))
static int get_domain_priority(const bNodeSocket *input, const nodes::SocketDeclaration *socket_declaration)
static ImplicitInput get_implicit_input(const nodes::SocketDeclaration *socket_declaration)
DOutputSocket find_preview_output_socket(const DNode &node)
ResultType get_node_socket_result_type(const bNodeSocket *socket)
DOutputSocket get_output_linked_to_input(DInputSocket input)
InputDescriptor input_descriptor_from_input_socket(const bNodeSocket *socket)
bool is_pixel_node(DNode node)
bool is_socket_available(const bNodeSocket *socket)
bool is_node_preview_needed(const DNode &node)
VecBase< T, Size > divide_ceil(const VecBase< T, Size > &a, const VecBase< T, Size > &b)