Blender V4.3
COM_ConvertDepthToRadiusOperation.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
9
10namespace blender::compositor {
11
13 private:
14 SocketReader *depth_input_operation_;
15 SocketReader *image_input_operation_;
16
17 const Scene *scene_;
18 const NodeDefocus *data_;
19
20 float f_stop;
21 float max_radius;
22 float focal_length;
23 float pixels_per_meter;
24 float distance_to_image_of_focus;
25
26 GaussianXBlurOperation *blur_x_operation_;
27 GaussianYBlurOperation *blur_y_operation_;
28
29 public:
31
32 void init_execution() override;
33
34 void set_data(const NodeDefocus *data)
35 {
36 data_ = data;
37 }
38
39 void set_scene(const Scene *scene)
40 {
41 scene_ = scene;
42 }
43
45 {
46 blur_x_operation_ = blur_x_operation;
47 }
48
50 {
51 blur_y_operation_ = blur_y_operation;
52 }
53
55 const rcti &area,
56 Span<MemoryBuffer *> inputs) override;
57
58 private:
59 float compute_maximum_defocus_radius() const;
60 float compute_maximum_diameter_of_circle_of_confusion() const;
61 float compute_distance_to_image_of_focus() const;
62 float get_focal_length() const;
63 float compute_focus_distance() const;
64 float compute_pixels_per_meter() const;
65 float get_f_stop() const;
66 const Camera *get_camera() const;
67 const Object *get_camera_object() const;
68};
69
70} // namespace blender::compositor
void set_blur_y_operation(GaussianYBlurOperation *blur_y_operation)
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
void set_blur_x_operation(GaussianXBlurOperation *blur_x_operation)
a MemoryBuffer contains access to the data
NodeOperation contains calculation logic.