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()) {
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;
167 return input_descriptor;
191 if (node.context()->instance_key().value !=
192 node.context()->derived_tree().active_context().instance_key().value)
211 if (
output->is_logically_linked()) {
#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)
Vector< SocketDeclaration * > inputs
const CompositorInputRealizationMode & compositor_realization_mode() const
bool compositor_expects_single_value() const
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)
DOutputSocket::TargetSocketPathInfo TargetSocketPathInfo
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)
VecBase< int32_t, 2 > int2