39 if (!
result.should_compute()) {
56 if (!this->
context().is_valid_compositing_region()) {
64 if (this->
context().use_gpu()) {
87 result.bind_as_image(shader,
"output_img");
98 switch (pass.
type()) {
100 return "compositor_read_input_float";
104 return "compositor_read_input_float4";
166 bool added_warning_for_unsupported_inputs =
false;
172 row.
icon = ICON_ERROR;
173 row.
tooltip =
TIP_(
"Node group's main Image input should be of type Color");
181 row.
icon = ICON_ERROR;
182 row.
tooltip =
TIP_(
"Node group's Mask input should be of type Color");
187 if (added_warning_for_unsupported_inputs) {
192 row.
icon = ICON_WARNING_LARGE;
194 "Only a main Image and Mask inputs are supported, the rest are unsupported and will "
197 added_warning_for_unsupported_inputs =
true;
SpaceNode * CTX_wm_space_node(const bContext *C)
#define BLI_assert_unreachable()
@ SNODE_COMPOSITOR_SEQUENCER
void GPU_shader_bind(blender::gpu::Shader *shader, const blender::gpu::shader::SpecializationConstants *constants_state=nullptr)
void GPU_shader_uniform_2iv(blender::gpu::Shader *sh, const char *name, const int data[2])
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void append(const T &value)
virtual bool use_context_bounds_for_input_output() const
virtual Result get_input(StringRef name)=0
int2 get_compositing_region_size() const
virtual Bounds< int2 > get_compositing_region() const =0
gpu::Shader * get_shader(const char *info_name, ResultPrecision precision)
const DNode & node() const
NodeOperation(Context &context, DNode node)
Result & get_result(StringRef identifier)
Context & context() const
void unbind_as_texture() const
bool is_allocated() const
static bool is_single_value_only_type(ResultType type)
static ResultType type(blender::gpu::TextureFormat format)
void bind_as_texture(gpu::Shader *shader, const char *texture_name) const
const Domain & domain() const
static ResultPrecision precision(blender::gpu::TextureFormat format)
float4 load_pixel_generic_type(const int2 &texel) const
void compute_dispatch_threads_at_least(gpu::Shader *shader, int2 threads_range, int2 local_size=int2(16))
void parallel_for(const int2 range, const Function &function)
bool is_socket_available(const bNodeSocket *socket)
void get_compositor_group_input_extra_info(blender::nodes::NodeExtraInfoParams ¶meters)
compositor::NodeOperation * get_group_input_compositor_operation(compositor::Context &context, DNode node)
VecBase< int32_t, 2 > int2
struct bNodeTree * edittree
struct bNodeTree * nodetree