Blender V4.3
integrator.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#ifndef __INTEGRATOR_H__
6#define __INTEGRATOR_H__
7
8#include "kernel/types.h"
9
10#include "device/denoise.h" /* For the parameters and type enum. */
11#include "graph/node.h"
13#include "integrator/guiding.h"
14
16
17class Device;
18class DeviceScene;
19class Scene;
20
21class Integrator : public Node {
22 public:
24
25 NODE_SOCKET_API(int, min_bounce)
26 NODE_SOCKET_API(int, max_bounce)
27
28 NODE_SOCKET_API(int, max_diffuse_bounce)
29 NODE_SOCKET_API(int, max_glossy_bounce)
30 NODE_SOCKET_API(int, max_transmission_bounce)
31 NODE_SOCKET_API(int, max_volume_bounce)
32
33#ifdef WITH_CYCLES_DEBUG
34 NODE_SOCKET_API(DirectLightSamplingType, direct_light_sampling_type)
35#endif
36
37 NODE_SOCKET_API(int, transparent_min_bounce)
38 NODE_SOCKET_API(int, transparent_max_bounce)
39
40 NODE_SOCKET_API(int, ao_bounces)
41 NODE_SOCKET_API(float, ao_factor)
42 NODE_SOCKET_API(float, ao_distance)
43 NODE_SOCKET_API(float, ao_additive_factor)
44
45 NODE_SOCKET_API(int, volume_max_steps)
46 NODE_SOCKET_API(float, volume_step_rate)
47
48 NODE_SOCKET_API(bool, use_guiding);
49 NODE_SOCKET_API(bool, deterministic_guiding);
50 NODE_SOCKET_API(bool, use_surface_guiding);
51 NODE_SOCKET_API(float, surface_guiding_probability);
52 NODE_SOCKET_API(bool, use_volume_guiding);
53 NODE_SOCKET_API(float, volume_guiding_probability);
54 NODE_SOCKET_API(int, guiding_training_samples);
55 NODE_SOCKET_API(bool, use_guiding_direct_light);
56 NODE_SOCKET_API(bool, use_guiding_mis_weights);
57 NODE_SOCKET_API(GuidingDistributionType, guiding_distribution_type);
58 NODE_SOCKET_API(GuidingDirectionalSamplingType, guiding_directional_sampling_type);
59 NODE_SOCKET_API(float, guiding_roughness_threshold);
60
61 NODE_SOCKET_API(bool, caustics_reflective)
62 NODE_SOCKET_API(bool, caustics_refractive)
63 NODE_SOCKET_API(float, filter_glossy)
64
65 NODE_SOCKET_API(bool, use_direct_light);
66 NODE_SOCKET_API(bool, use_indirect_light);
67 NODE_SOCKET_API(bool, use_diffuse);
68 NODE_SOCKET_API(bool, use_glossy);
69 NODE_SOCKET_API(bool, use_transmission);
70 NODE_SOCKET_API(bool, use_emission);
71
73
74 NODE_SOCKET_API(float, sample_clamp_direct)
75 NODE_SOCKET_API(float, sample_clamp_indirect)
76 NODE_SOCKET_API(bool, motion_blur)
77
78 /* Maximum number of samples, beyond which we are likely to run into
79 * precision issues for sampling patterns. */
80 static const int MAX_SAMPLES = (1 << 24);
81
82 NODE_SOCKET_API(int, aa_samples)
83 NODE_SOCKET_API(int, start_sample)
84
85 NODE_SOCKET_API(bool, use_light_tree)
86 NODE_SOCKET_API(float, light_sampling_threshold)
87
88 NODE_SOCKET_API(bool, use_adaptive_sampling)
89 NODE_SOCKET_API(int, adaptive_min_samples)
90 NODE_SOCKET_API(float, adaptive_threshold)
91
92 NODE_SOCKET_API(SamplingPattern, sampling_pattern)
93 NODE_SOCKET_API(float, scrambling_distance)
94
95 NODE_SOCKET_API(bool, use_denoise);
97 NODE_SOCKET_API(int, denoise_start_sample);
98 NODE_SOCKET_API(bool, use_denoise_pass_albedo);
99 NODE_SOCKET_API(bool, use_denoise_pass_normal);
100 NODE_SOCKET_API(DenoiserPrefilter, denoiser_prefilter);
101 NODE_SOCKET_API(bool, denoise_use_gpu);
103
104 enum : uint32_t {
106 OBJECT_MANAGER = (1 << 1),
107
108 /* tag everything in the manager for an update */
110
112 };
113
114 Integrator();
115 ~Integrator();
116
117 void device_update(Device *device, DeviceScene *dscene, Scene *scene);
118 void device_free(Device *device, DeviceScene *dscene, bool force_free = false);
119
120 void tag_update(Scene *scene, uint32_t flag);
121
123
126 GuidingParams get_guiding_params(const Device *device) const;
127};
128
130
131#endif /* __INTEGRATOR_H__ */
unsigned int uint
static unsigned long seed
Definition btSoftBody.h:39
void tag_update(Scene *scene, uint32_t flag)
void device_update(Device *device, DeviceScene *dscene, Scene *scene)
DenoiseParams get_denoise_params() const
AdaptiveSampling get_adaptive_sampling() const
void device_free(Device *device, DeviceScene *dscene, bool force_free=false)
GuidingParams get_guiding_params(const Device *device) const
static const int MAX_SAMPLES
Definition integrator.h:80
uint get_kernel_features() const
DenoiserQuality
Definition denoise.h:43
DenoiserPrefilter
Definition denoise.h:27
DenoiserType
Definition denoise.h:13
#define CCL_NAMESPACE_END
#define NODE_SOCKET_API(type_, name)
Definition graph/node.h:55
DirectLightSamplingType
GuidingDirectionalSamplingType
SamplingPattern
GuidingDistributionType
#define NODE_DECLARE
Definition node_type.h:142
unsigned int uint32_t
Definition stdint.h:80
uint8_t flag
Definition wm_window.cc:138