Blender  V3.3
COM_ViewerOperation.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2011 Blender Foundation. */
3 
4 #pragma once
5 
6 #include "BKE_global.h"
7 #include "BLI_rect.h"
9 #include "DNA_image_types.h"
10 
11 namespace blender::compositor {
12 
14  private:
15  /* TODO(manzanilla): To be removed together with tiled implementation. */
16  float *output_buffer_;
17  float *depth_buffer_;
18 
19  Image *image_;
20  ImageUser *image_user_;
21  bool active_;
22  float center_x_;
23  float center_y_;
24  ChunkOrdering chunk_order_;
25  bool do_depth_buffer_;
26  ImBuf *ibuf_;
27  bool use_alpha_input_;
28  const RenderData *rd_;
29  const char *view_name_;
30 
31  const ColorManagedViewSettings *view_settings_;
32  const ColorManagedDisplaySettings *display_settings_;
33 
34  SocketReader *image_input_;
35  SocketReader *alpha_input_;
36  SocketReader *depth_input_;
37 
38  int display_width_;
39  int display_height_;
40 
41  public:
43  void init_execution() override;
44  void deinit_execution() override;
45  void execute_region(rcti *rect, unsigned int tile_number) override;
46  void determine_canvas(const rcti &preferred_area, rcti &r_area) override;
47  bool is_output_operation(bool /*rendering*/) const override
48  {
49  if (G.background) {
50  return false;
51  }
52  return is_active_viewer_output();
53  }
55  {
56  image_ = image;
57  }
58  void set_image_user(ImageUser *image_user)
59  {
60  image_user_ = image_user;
61  }
62  bool is_active_viewer_output() const override
63  {
64  return active_;
65  }
66  void set_active(bool active)
67  {
68  active_ = active;
69  }
70  void setCenterX(float centerX)
71  {
72  center_x_ = centerX;
73  }
74  void setCenterY(float centerY)
75  {
76  center_y_ = centerY;
77  }
78  void set_chunk_order(ChunkOrdering tile_order)
79  {
80  chunk_order_ = tile_order;
81  }
82  float getCenterX() const
83  {
84  return center_x_;
85  }
86  float getCenterY() const
87  {
88  return center_y_;
89  }
91  {
92  return chunk_order_;
93  }
95  void set_use_alpha_input(bool value)
96  {
97  use_alpha_input_ = value;
98  }
99  void set_render_data(const RenderData *rd)
100  {
101  rd_ = rd;
102  }
103  void set_view_name(const char *view_name)
104  {
105  view_name_ = view_name;
106  }
107 
108  void set_view_settings(const ColorManagedViewSettings *view_settings)
109  {
110  view_settings_ = view_settings;
111  }
112  void set_display_settings(const ColorManagedDisplaySettings *display_settings)
113  {
114  display_settings_ = display_settings;
115  }
116 
118  const rcti &area,
119  Span<MemoryBuffer *> inputs) override;
120 
121  void clear_display_buffer();
122 
123  private:
124  void update_image(const rcti *rect);
125  void init_image();
126 };
127 
128 } // namespace blender::compositor
a MemoryBuffer contains access to the data of a chunk
NodeOperation contains calculation logic.
void set_display_settings(const ColorManagedDisplaySettings *display_settings)
void set_image_user(ImageUser *image_user)
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
void set_chunk_order(ChunkOrdering tile_order)
void execute_region(rcti *rect, unsigned int tile_number) override
when a chunk is executed by a CPUDevice, this method is called
eCompositorPriority get_render_priority() const override
get the render priority of this node.
bool is_active_viewer_output() const override
is this operation the active viewer output user can select an ViewerNode to be active (the result of ...
bool is_output_operation(bool) const override
is_output_operation determines whether this operation is an output of the ExecutionSystem during rend...
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
void set_view_name(const char *view_name)
void set_render_data(const RenderData *rd)
void set_view_settings(const ColorManagedViewSettings *view_settings)
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img image(1, GPU_R32F, Qualifier::WRITE, ImageType::FLOAT_2D_ARRAY, "out_weight_img") .image(3
eCompositorPriority
Possible priority settings.
Definition: COM_Enums.h:32
ChunkOrdering
The order of chunks to be scheduled.
Definition: COM_defines.h:95
ccl_global KernelShaderEvalInput ccl_global float * output
#define G(x, y, z)
static void area(int d1, int d2, int e1, int e2, float weights[2])
bool active
all scheduled work for the GPU.
static bNodeSocketTemplate inputs[]