31 if (!
result.should_compute()) {
52 if (!this->
context().is_valid_compositing_region()) {
60 if (this->
context().use_gpu()) {
77 const int2 lower_bound =
int2(compositing_region.
xmin, compositing_region.
ymin);
83 result.bind_as_image(shader,
"output_img");
94 switch (pass.
type()) {
96 return "compositor_read_input_float";
100 return "compositor_read_input_float4";
118 const int2 lower_bound =
int2(compositing_region.
xmin, compositing_region.
ymin);
123 result.store_pixel_generic_type(texel, pass.load_pixel_generic_type(texel + lower_bound));
#define BLI_assert_unreachable()
void GPU_shader_bind(GPUShader *shader, const blender::gpu::shader::SpecializationConstants *constants_state=nullptr)
void GPU_shader_uniform_2iv(GPUShader *sh, const char *name, const int data[2])
virtual const Scene & get_scene() const =0
virtual void populate_meta_data_for_pass(const Scene *scene, int view_layer_id, const char *pass_name, MetaData &meta_data) const
GPUShader * get_shader(const char *info_name, ResultPrecision precision)
virtual Result get_pass(const Scene *scene, int view_layer, const char *pass_name)=0
virtual rcti get_compositing_region() const =0
virtual void set_info_message(StringRef message) const =0
const DNode & node() const
NodeOperation(Context &context, DNode node)
Result & get_result(StringRef identifier)
Context & context() const
static ResultPrecision precision(eGPUTextureFormat format)
void unbind_as_texture() const
static ResultType type(eGPUTextureFormat format)
void bind_as_texture(GPUShader *shader, const char *texture_name) const
bool is_allocated() const
void compute_dispatch_threads_at_least(GPUShader *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)
compositor::NodeOperation * get_group_input_compositor_operation(compositor::Context &context, DNode node)
VecBase< int32_t, 2 > int2