Blender  V3.3
COM_DenoiseOperation.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2019 Blender Foundation. */
3 
4 #pragma once
5 
7 #include "DNA_node_types.h"
8 
9 namespace blender::compositor {
10 
12 
14  protected:
16 
17  protected:
19 
20  public:
22  ReadBufferOperation *read_operation,
23  rcti *output) override;
24 
25  void get_area_of_interest(int input_idx, const rcti &output_area, rcti &r_input_area) override;
26 };
27 
29  private:
33  SocketReader *input_program_color_;
34  SocketReader *input_program_albedo_;
35  SocketReader *input_program_normal_;
36 
40  NodeDenoise *settings_;
41 
42  public:
47  void init_execution() override;
48 
52  void deinit_execution() override;
53 
55  {
56  settings_ = settings;
57  }
58 
60  const rcti &area,
61  Span<MemoryBuffer *> inputs) override;
62 
63  protected:
64  void hash_output_params() override;
66  MemoryBuffer *input_color,
67  MemoryBuffer *input_normal,
68  MemoryBuffer *input_albedo,
69  NodeDenoise *settings);
70 
71  MemoryBuffer *create_memory_buffer(rcti *rect) override;
72 };
73 
75  private:
76  std::string image_name_;
77 
78  public:
80 
82  {
83  image_name_ = name;
84  }
85 
87  const rcti &area,
88  Span<MemoryBuffer *> inputs) override;
89 
90  protected:
91  void hash_output_params() override;
92  MemoryBuffer *create_memory_buffer(rcti *rect) override;
93 
94  private:
95  void generate_denoise(MemoryBuffer *output, MemoryBuffer *input);
96 };
97 
98 } // namespace blender::compositor
bool determine_depending_area_of_interest(rcti *input, ReadBufferOperation *read_operation, rcti *output) override
void get_area_of_interest(int input_idx, const rcti &output_area, rcti &r_input_area) override
Get input operation area being read by this operation on rendering given output area.
MemoryBuffer * create_memory_buffer(rcti *rect) override
void update_memory_buffer(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
void set_denoise_settings(NodeDenoise *settings)
void generate_denoise(MemoryBuffer *output, MemoryBuffer *input_color, MemoryBuffer *input_normal, MemoryBuffer *input_albedo, NodeDenoise *settings)
MemoryBuffer * create_memory_buffer(rcti *rect) override
void update_memory_buffer(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
a MemoryBuffer contains access to the data of a chunk
NodeOperation contains calculation logic.
DataType
possible data types for sockets
Definition: COM_defines.h:30
ccl_global KernelShaderEvalInput ccl_global float * output
ccl_global KernelShaderEvalInput * input
static void area(int d1, int d2, int e1, int e2, float weights[2])
static bNodeSocketTemplate inputs[]