Blender
V5.0
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
(
bool
, volume_ray_marching)
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
72
NODE_SOCKET_API
(
int
,
seed
)
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
84
NODE_SOCKET_API
(
bool
, use_sample_subset)
85
NODE_SOCKET_API
(
int
, sample_subset_offset)
86
NODE_SOCKET_API
(
int
, sample_subset_length)
87
88
NODE_SOCKET_API
(
bool
, use_light_tree)
89
NODE_SOCKET_API
(
float
, light_sampling_threshold)
90
91
NODE_SOCKET_API
(
bool
, use_adaptive_sampling)
92
NODE_SOCKET_API
(
int
, adaptive_min_samples)
93
NODE_SOCKET_API
(
float
, adaptive_threshold)
94
95
NODE_SOCKET_API
(
SamplingPattern
, sampling_pattern)
96
NODE_SOCKET_API
(
float
, scrambling_distance)
97
98
NODE_SOCKET_API
(
bool
, use_denoise);
99
NODE_SOCKET_API
(
DenoiserType
, denoiser_type);
100
NODE_SOCKET_API
(
int
, denoise_start_sample);
101
NODE_SOCKET_API
(
bool
, use_denoise_pass_albedo);
102
NODE_SOCKET_API
(
bool
, use_denoise_pass_normal);
103
NODE_SOCKET_API
(
DenoiserPrefilter
, denoiser_prefilter);
104
NODE_SOCKET_API
(
bool
, denoise_use_gpu);
105
NODE_SOCKET_API
(
DenoiserQuality
, denoiser_quality);
106
107
enum : uint32_t {
108
AO_PASS_MODIFIED
= (1 << 0),
109
OBJECT_MANAGER
= (1 << 1),
110
111
/* tag everything in the manager for an update */
112
UPDATE_ALL
= ~0u,
113
114
UPDATE_NONE
= 0u,
115
};
116
117
Integrator
();
118
~Integrator
()
override
;
119
120
void
device_update
(
Device
*device,
DeviceScene
*dscene,
Scene
*scene);
121
void
device_free
(
Device
*device,
DeviceScene
*dscene,
bool
force_free =
false
);
122
123
void
tag_update
(
Scene
*scene,
const
uint32_t
flag
);
124
125
uint
get_kernel_features
()
const
;
126
127
AdaptiveSampling
get_adaptive_sampling
()
const
;
128
DenoiseParams
get_denoise_params
()
const
;
129
GuidingParams
get_guiding_params
(
const
Device
*device)
const
;
130
};
131
132
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:126
Integrator::tag_update
void tag_update(Scene *scene, const uint32_t flag)
Definition
integrator.cpp:357
Integrator::device_update
void device_update(Device *device, DeviceScene *dscene, Scene *scene)
Definition
integrator.cpp:172
Integrator::get_denoise_params
DenoiseParams get_denoise_params() const
Definition
integrator.cpp:443
Integrator::~Integrator
~Integrator() override
Integrator::NODE_SOCKET_API
NODE_DECLARE NODE_SOCKET_API(bool, use_guiding)
Integrator::Integrator
Integrator()
Definition
integrator.cpp:168
Integrator::get_adaptive_sampling
AdaptiveSampling get_adaptive_sampling() const
Definition
integrator.cpp:390
Integrator::device_free
void device_free(Device *device, DeviceScene *dscene, bool force_free=false)
Definition
integrator.cpp:352
Integrator::get_guiding_params
GuidingParams get_guiding_params(const Device *device) const
Definition
integrator.cpp:464
Integrator::MAX_SAMPLES
static const int MAX_SAMPLES
Definition
integrator.h:80
Integrator::UPDATE_NONE
@ UPDATE_NONE
Definition
integrator.h:114
Integrator::UPDATE_ALL
@ UPDATE_ALL
Definition
integrator.h:112
Integrator::OBJECT_MANAGER
@ OBJECT_MANAGER
Definition
integrator.h:109
Integrator::AO_PASS_MODIFIED
@ AO_PASS_MODIFIED
Definition
integrator.h:108
Integrator::get_kernel_features
uint get_kernel_features() const
Definition
integrator.cpp:375
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:703
GuidingDirectionalSamplingType
GuidingDirectionalSamplingType
Definition
kernel/types.h:664
SamplingPattern
SamplingPattern
Definition
kernel/types.h:322
GuidingDistributionType
GuidingDistributionType
Definition
kernel/types.h:654
CCL_NAMESPACE_BEGIN
Definition
python.cpp:37
NODE_DECLARE
#define NODE_DECLARE
Definition
node_type.h:145
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:2120
flag
uint8_t flag
Definition
wm_window.cc:145
Generated on
for Blender by
doxygen
1.16.1