Blender  V3.3
integrator.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2011-2022 Blender Foundation */
3 
4 #ifndef __INTEGRATOR_H__
5 #define __INTEGRATOR_H__
6 
7 #include "kernel/types.h"
8 
9 #include "device/denoise.h" /* For the parameters and type enum. */
10 #include "graph/node.h"
12 
14 
15 class Device;
16 class DeviceScene;
17 class Scene;
18 
19 class Integrator : public Node {
20  public:
22 
23  NODE_SOCKET_API(int, min_bounce)
24  NODE_SOCKET_API(int, max_bounce)
25 
26  NODE_SOCKET_API(int, max_diffuse_bounce)
27  NODE_SOCKET_API(int, max_glossy_bounce)
28  NODE_SOCKET_API(int, max_transmission_bounce)
29  NODE_SOCKET_API(int, max_volume_bounce)
30 
31 #ifdef WITH_CYCLES_DEBUG
32  NODE_SOCKET_API(DirectLightSamplingType, direct_light_sampling_type)
33 #endif
34 
35  NODE_SOCKET_API(int, transparent_min_bounce)
36  NODE_SOCKET_API(int, transparent_max_bounce)
37 
38  NODE_SOCKET_API(int, ao_bounces)
39  NODE_SOCKET_API(float, ao_factor)
40  NODE_SOCKET_API(float, ao_distance)
41  NODE_SOCKET_API(float, ao_additive_factor)
42 
43  NODE_SOCKET_API(int, volume_max_steps)
44  NODE_SOCKET_API(float, volume_step_rate)
45 
46  NODE_SOCKET_API(bool, caustics_reflective)
47  NODE_SOCKET_API(bool, caustics_refractive)
48  NODE_SOCKET_API(float, filter_glossy)
49 
50  NODE_SOCKET_API(bool, use_direct_light);
51  NODE_SOCKET_API(bool, use_indirect_light);
52  NODE_SOCKET_API(bool, use_diffuse);
53  NODE_SOCKET_API(bool, use_glossy);
54  NODE_SOCKET_API(bool, use_transmission);
55  NODE_SOCKET_API(bool, use_emission);
56 
57  NODE_SOCKET_API(int, seed)
58 
59  NODE_SOCKET_API(float, sample_clamp_direct)
60  NODE_SOCKET_API(float, sample_clamp_indirect)
61  NODE_SOCKET_API(bool, motion_blur)
62 
63  /* Maximum number of samples, beyond which we are likely to run into
64  * precision issues for sampling patterns. */
65  static const int MAX_SAMPLES = (1 << 24);
66 
67  NODE_SOCKET_API(int, aa_samples)
68  NODE_SOCKET_API(int, start_sample)
69 
70  NODE_SOCKET_API(float, light_sampling_threshold)
71 
72  NODE_SOCKET_API(bool, use_adaptive_sampling)
73  NODE_SOCKET_API(int, adaptive_min_samples)
74  NODE_SOCKET_API(float, adaptive_threshold)
75 
76  NODE_SOCKET_API(SamplingPattern, sampling_pattern)
77  NODE_SOCKET_API(float, scrambling_distance)
78 
79  NODE_SOCKET_API(bool, use_denoise);
80  NODE_SOCKET_API(DenoiserType, denoiser_type);
81  NODE_SOCKET_API(int, denoise_start_sample);
82  NODE_SOCKET_API(bool, use_denoise_pass_albedo);
83  NODE_SOCKET_API(bool, use_denoise_pass_normal);
84  NODE_SOCKET_API(DenoiserPrefilter, denoiser_prefilter);
85 
86  enum : uint32_t {
87  AO_PASS_MODIFIED = (1 << 0),
88  OBJECT_MANAGER = (1 << 1),
89 
90  /* tag everything in the manager for an update */
91  UPDATE_ALL = ~0u,
92 
94  };
95 
96  Integrator();
97  ~Integrator();
98 
99  void device_update(Device *device, DeviceScene *dscene, Scene *scene);
100  void device_free(Device *device, DeviceScene *dscene, bool force_free = false);
101 
102  void tag_update(Scene *scene, uint32_t flag);
103 
104  uint get_kernel_features() const;
105 
108 };
109 
111 
112 #endif /* __INTEGRATOR_H__ */
unsigned int uint
Definition: BLI_sys_types.h:67
static unsigned long seed
Definition: btSoftBody.h:39
void tag_update(Scene *scene, uint32_t flag)
Definition: integrator.cpp:291
void device_update(Device *device, DeviceScene *dscene, Scene *scene)
Definition: integrator.cpp:128
NODE_DECLARE NODE_SOCKET_API(bool, use_direct_light)
DenoiseParams get_denoise_params() const
Definition: integrator.cpp:372
@ OBJECT_MANAGER
Definition: integrator.h:88
@ AO_PASS_MODIFIED
Definition: integrator.h:87
AdaptiveSampling get_adaptive_sampling() const
Definition: integrator.cpp:329
void device_free(Device *device, DeviceScene *dscene, bool force_free=false)
Definition: integrator.cpp:286
static const int MAX_SAMPLES
Definition: integrator.h:65
uint get_kernel_features() const
Definition: integrator.cpp:318
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
Scene scene
DenoiserPrefilter
Definition: denoise.h:26
DenoiserType
Definition: denoise.h:12
DirectLightSamplingType
Definition: kernel/types.h:494
SamplingPattern
Definition: kernel/types.h:178
#define NODE_DECLARE
Definition: node_type.h:135
unsigned int uint32_t
Definition: stdint.h:80