Blender
V4.5
intern
cycles
scene
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
#pragma once
6
7
#include "
kernel/types.h
"
8
9
#include "
device/denoise.h
"
/* For the parameters and type enum. */
10
#include "
graph/node.h
"
11
#include "
integrator/adaptive_sampling.h
"
12
#include "integrator/guiding.h"
13
14
CCL_NAMESPACE_BEGIN
15
16
class
Device
;
17
class
DeviceScene
;
18
class
Scene
;
19
20
class
Integrator
:
public
Node
{
21
public
:
22
NODE_DECLARE
23
24
NODE_SOCKET_API
(
int
, min_bounce)
25
NODE_SOCKET_API
(
int
, max_bounce)
26
27
NODE_SOCKET_API
(
int
, max_diffuse_bounce)
28
NODE_SOCKET_API
(
int
, max_glossy_bounce)
29
NODE_SOCKET_API
(
int
, max_transmission_bounce)
30
NODE_SOCKET_API
(
int
, max_volume_bounce)
31
32
#ifdef WITH_CYCLES_DEBUG
33
NODE_SOCKET_API
(
DirectLightSamplingType
, direct_light_sampling_type)
34
#endif
35
36
NODE_SOCKET_API
(
int
, transparent_min_bounce)
37
NODE_SOCKET_API
(
int
, transparent_max_bounce)
38
39
NODE_SOCKET_API
(
int
, ao_bounces)
40
NODE_SOCKET_API
(
float
, ao_factor)
41
NODE_SOCKET_API
(
float
, ao_distance)
42
NODE_SOCKET_API
(
float
, ao_additive_factor)
43
44
NODE_SOCKET_API
(
int
, volume_max_steps)
45
NODE_SOCKET_API
(
float
, volume_step_rate)
46
47
NODE_SOCKET_API
(
bool
, use_guiding);
48
NODE_SOCKET_API
(
bool
, deterministic_guiding);
49
NODE_SOCKET_API
(
bool
, use_surface_guiding);
50
NODE_SOCKET_API
(
float
, surface_guiding_probability);
51
NODE_SOCKET_API
(
bool
, use_volume_guiding);
52
NODE_SOCKET_API
(
float
, volume_guiding_probability);
53
NODE_SOCKET_API
(
int
, guiding_training_samples);
54
NODE_SOCKET_API
(
bool
, use_guiding_direct_light);
55
NODE_SOCKET_API
(
bool
, use_guiding_mis_weights);
56
NODE_SOCKET_API
(
GuidingDistributionType
, guiding_distribution_type);
57
NODE_SOCKET_API
(
GuidingDirectionalSamplingType
, guiding_directional_sampling_type);
58
NODE_SOCKET_API
(
float
, guiding_roughness_threshold);
59
60
NODE_SOCKET_API
(
bool
, caustics_reflective)
61
NODE_SOCKET_API
(
bool
, caustics_refractive)
62
NODE_SOCKET_API
(
float
, filter_glossy)
63
64
NODE_SOCKET_API
(
bool
, use_direct_light);
65
NODE_SOCKET_API
(
bool
, use_indirect_light);
66
NODE_SOCKET_API
(
bool
, use_diffuse);
67
NODE_SOCKET_API
(
bool
, use_glossy);
68
NODE_SOCKET_API
(
bool
, use_transmission);
69
NODE_SOCKET_API
(
bool
, use_emission);
70
71
NODE_SOCKET_API
(
int
,
seed
)
72
73
NODE_SOCKET_API
(
float
, sample_clamp_direct)
74
NODE_SOCKET_API
(
float
, sample_clamp_indirect)
75
NODE_SOCKET_API
(
bool
, motion_blur)
76
77
/* Maximum number of samples, beyond which we are likely to run into
78
* precision issues for sampling patterns. */
79
static const
int
MAX_SAMPLES
= (1 << 24);
80
81
NODE_SOCKET_API
(
int
, aa_samples)
82
83
NODE_SOCKET_API
(
bool
, use_sample_subset)
84
NODE_SOCKET_API
(
int
, sample_subset_offset)
85
NODE_SOCKET_API
(
int
, sample_subset_length)
86
87
NODE_SOCKET_API
(
bool
, use_light_tree)
88
NODE_SOCKET_API
(
float
, light_sampling_threshold)
89
90
NODE_SOCKET_API
(
bool
, use_adaptive_sampling)
91
NODE_SOCKET_API
(
int
, adaptive_min_samples)
92
NODE_SOCKET_API
(
float
, adaptive_threshold)
93
94
NODE_SOCKET_API
(
SamplingPattern
, sampling_pattern)
95
NODE_SOCKET_API
(
float
, scrambling_distance)
96
97
NODE_SOCKET_API
(
bool
, use_denoise);
98
NODE_SOCKET_API
(
DenoiserType
, denoiser_type);
99
NODE_SOCKET_API
(
int
, denoise_start_sample);
100
NODE_SOCKET_API
(
bool
, use_denoise_pass_albedo);
101
NODE_SOCKET_API
(
bool
, use_denoise_pass_normal);
102
NODE_SOCKET_API
(
DenoiserPrefilter
, denoiser_prefilter);
103
NODE_SOCKET_API
(
bool
, denoise_use_gpu);
104
NODE_SOCKET_API
(
DenoiserQuality
, denoiser_quality);
105
106
enum : uint32_t {
107
AO_PASS_MODIFIED
= (1 << 0),
108
OBJECT_MANAGER
= (1 << 1),
109
110
/* tag everything in the manager for an update */
111
UPDATE_ALL
= ~0u,
112
113
UPDATE_NONE
= 0u,
114
};
115
116
Integrator
();
117
~Integrator
()
override
;
118
119
void
device_update
(
Device
*device,
DeviceScene
*dscene,
Scene
*scene);
120
void
device_free
(
Device
*device,
DeviceScene
*dscene,
bool
force_free =
false
);
121
122
void
tag_update
(
Scene
*scene,
const
uint32_t
flag
);
123
124
uint
get_kernel_features
()
const
;
125
126
AdaptiveSampling
get_adaptive_sampling
()
const
;
127
DenoiseParams
get_denoise_params
()
const
;
128
GuidingParams
get_guiding_params
(
const
Device
*device)
const
;
129
};
130
131
CCL_NAMESPACE_END
uint
unsigned int uint
Definition
BLI_sys_types.h:64
seed
static unsigned long seed
Definition
btSoftBody.h:39
AdaptiveSampling
Definition
integrator/adaptive_sampling.h:9
DenoiseParams
Definition
denoise.h:51
DeviceScene
Definition
devicescene.h:14
Device
Definition
device/device.h:129
Integrator::tag_update
void tag_update(Scene *scene, const uint32_t flag)
Definition
integrator.cpp:351
Integrator::device_update
void device_update(Device *device, DeviceScene *dscene, Scene *scene)
Definition
integrator.cpp:171
Integrator::get_denoise_params
DenoiseParams get_denoise_params() const
Definition
integrator.cpp:438
Integrator::~Integrator
~Integrator() override
Integrator::NODE_SOCKET_API
NODE_DECLARE NODE_SOCKET_API(bool, use_guiding)
Integrator::Integrator
Integrator()
Definition
integrator.cpp:167
Integrator::get_adaptive_sampling
AdaptiveSampling get_adaptive_sampling() const
Definition
integrator.cpp:384
Integrator::device_free
void device_free(Device *device, DeviceScene *dscene, bool force_free=false)
Definition
integrator.cpp:346
Integrator::get_guiding_params
GuidingParams get_guiding_params(const Device *device) const
Definition
integrator.cpp:459
Integrator::MAX_SAMPLES
static const int MAX_SAMPLES
Definition
integrator.h:79
Integrator::UPDATE_NONE
@ UPDATE_NONE
Definition
integrator.h:113
Integrator::UPDATE_ALL
@ UPDATE_ALL
Definition
integrator.h:111
Integrator::OBJECT_MANAGER
@ OBJECT_MANAGER
Definition
integrator.h:108
Integrator::AO_PASS_MODIFIED
@ AO_PASS_MODIFIED
Definition
integrator.h:107
Integrator::get_kernel_features
uint get_kernel_features() const
Definition
integrator.cpp:369
denoise.h
DenoiserQuality
DenoiserQuality
Definition
denoise.h:41
DenoiserPrefilter
DenoiserPrefilter
Definition
denoise.h:25
DenoiserType
DenoiserType
Definition
denoise.h:11
CCL_NAMESPACE_END
#define CCL_NAMESPACE_END
Definition
device/cuda/compat.h:10
node.h
NODE_SOCKET_API
#define NODE_SOCKET_API(type_, name)
Definition
graph/node.h:55
adaptive_sampling.h
types.h
DirectLightSamplingType
DirectLightSamplingType
Definition
kernel/types.h:687
GuidingDirectionalSamplingType
GuidingDirectionalSamplingType
Definition
kernel/types.h:648
SamplingPattern
SamplingPattern
Definition
kernel/types.h:320
GuidingDistributionType
GuidingDistributionType
Definition
kernel/types.h:638
CCL_NAMESPACE_BEGIN
Definition
python.cpp:37
NODE_DECLARE
#define NODE_DECLARE
Definition
node_type.h:142
GuidingParams
Definition
integrator/guiding.h:11
Node::Node
Node(const NodeType *type, ustring name=ustring())
Definition
graph/node.cpp:18
Scene
Definition
DNA_scene_types.h:2106
flag
uint8_t flag
Definition
wm_window.cc:139
Generated on
for Blender by
doxygen
1.15.0