Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/render/integrator.h
| Show All 13 Lines | |||||
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| #ifndef __INTEGRATOR_H__ | #ifndef __INTEGRATOR_H__ | ||||
| #define __INTEGRATOR_H__ | #define __INTEGRATOR_H__ | ||||
| #include "kernel/kernel_types.h" | #include "kernel/kernel_types.h" | ||||
| #include "device/device_denoise.h" /* For the paramaters and type enum. */ | |||||
| #include "graph/node.h" | #include "graph/node.h" | ||||
| #include "integrator/adaptive_sampling.h" | |||||
| CCL_NAMESPACE_BEGIN | CCL_NAMESPACE_BEGIN | ||||
| class Device; | class Device; | ||||
| class DeviceScene; | class DeviceScene; | ||||
| class Scene; | class Scene; | ||||
| class Integrator : public Node { | class Integrator : public Node { | ||||
| public: | public: | ||||
| NODE_DECLARE | NODE_DECLARE | ||||
| NODE_SOCKET_API(int, min_bounce) | NODE_SOCKET_API(int, min_bounce) | ||||
| NODE_SOCKET_API(int, max_bounce) | NODE_SOCKET_API(int, max_bounce) | ||||
| NODE_SOCKET_API(int, max_diffuse_bounce) | NODE_SOCKET_API(int, max_diffuse_bounce) | ||||
| NODE_SOCKET_API(int, max_glossy_bounce) | NODE_SOCKET_API(int, max_glossy_bounce) | ||||
| NODE_SOCKET_API(int, max_transmission_bounce) | NODE_SOCKET_API(int, max_transmission_bounce) | ||||
| NODE_SOCKET_API(int, max_volume_bounce) | NODE_SOCKET_API(int, max_volume_bounce) | ||||
| NODE_SOCKET_API(int, transparent_min_bounce) | NODE_SOCKET_API(int, transparent_min_bounce) | ||||
| NODE_SOCKET_API(int, transparent_max_bounce) | NODE_SOCKET_API(int, transparent_max_bounce) | ||||
| NODE_SOCKET_API(int, ao_bounces) | NODE_SOCKET_API(int, ao_bounces) | ||||
| NODE_SOCKET_API(float, ao_factor) | |||||
| NODE_SOCKET_API(float, ao_distance) | |||||
| NODE_SOCKET_API(int, volume_max_steps) | NODE_SOCKET_API(int, volume_max_steps) | ||||
| NODE_SOCKET_API(float, volume_step_rate) | NODE_SOCKET_API(float, volume_step_rate) | ||||
| NODE_SOCKET_API(bool, caustics_reflective) | NODE_SOCKET_API(bool, caustics_reflective) | ||||
| NODE_SOCKET_API(bool, caustics_refractive) | NODE_SOCKET_API(bool, caustics_refractive) | ||||
| NODE_SOCKET_API(float, filter_glossy) | NODE_SOCKET_API(float, filter_glossy) | ||||
| NODE_SOCKET_API(int, seed) | NODE_SOCKET_API(int, seed) | ||||
| NODE_SOCKET_API(float, sample_clamp_direct) | NODE_SOCKET_API(float, sample_clamp_direct) | ||||
| NODE_SOCKET_API(float, sample_clamp_indirect) | NODE_SOCKET_API(float, sample_clamp_indirect) | ||||
| NODE_SOCKET_API(bool, motion_blur) | NODE_SOCKET_API(bool, motion_blur) | ||||
| /* Maximum number of samples, beyond which we are likely to run into | /* Maximum number of samples, beyond which we are likely to run into | ||||
| * precision issues for sampling patterns. */ | * precision issues for sampling patterns. */ | ||||
| static const int MAX_SAMPLES = (1 << 24); | static const int MAX_SAMPLES = (1 << 24); | ||||
| NODE_SOCKET_API(int, aa_samples) | NODE_SOCKET_API(int, aa_samples) | ||||
| NODE_SOCKET_API(int, diffuse_samples) | |||||
| NODE_SOCKET_API(int, glossy_samples) | |||||
| NODE_SOCKET_API(int, transmission_samples) | |||||
| NODE_SOCKET_API(int, ao_samples) | |||||
| NODE_SOCKET_API(int, mesh_light_samples) | |||||
| NODE_SOCKET_API(int, subsurface_samples) | |||||
| NODE_SOCKET_API(int, volume_samples) | |||||
| NODE_SOCKET_API(int, start_sample) | NODE_SOCKET_API(int, start_sample) | ||||
| NODE_SOCKET_API(bool, sample_all_lights_direct) | |||||
| NODE_SOCKET_API(bool, sample_all_lights_indirect) | |||||
| NODE_SOCKET_API(float, light_sampling_threshold) | NODE_SOCKET_API(float, light_sampling_threshold) | ||||
| NODE_SOCKET_API(bool, use_adaptive_sampling) | |||||
| NODE_SOCKET_API(int, adaptive_min_samples) | NODE_SOCKET_API(int, adaptive_min_samples) | ||||
| NODE_SOCKET_API(float, adaptive_threshold) | NODE_SOCKET_API(float, adaptive_threshold) | ||||
| enum Method { | |||||
| BRANCHED_PATH = 0, | |||||
| PATH = 1, | |||||
| NUM_METHODS, | |||||
| }; | |||||
| NODE_SOCKET_API(Method, method) | |||||
| NODE_SOCKET_API(SamplingPattern, sampling_pattern) | NODE_SOCKET_API(SamplingPattern, sampling_pattern) | ||||
| NODE_SOCKET_API(bool, use_denoise); | |||||
| NODE_SOCKET_API(DenoiserType, denoiser_type); | |||||
| NODE_SOCKET_API(int, denoise_start_sample); | |||||
| NODE_SOCKET_API(bool, use_denoise_pass_albedo); | |||||
| NODE_SOCKET_API(bool, use_denoise_pass_normal); | |||||
| NODE_SOCKET_API(DenoiserPrefilter, denoiser_prefilter); | |||||
| enum : uint32_t { | enum : uint32_t { | ||||
| AO_PASS_MODIFIED = (1 << 0), | AO_PASS_MODIFIED = (1 << 0), | ||||
| BACKGROUND_AO_MODIFIED = (1 << 1), | OBJECT_MANAGER = (1 << 1), | ||||
| LIGHT_SAMPLES_MODIFIED = (1 << 2), | |||||
| /* tag everything in the manager for an update */ | /* tag everything in the manager for an update */ | ||||
| UPDATE_ALL = ~0u, | UPDATE_ALL = ~0u, | ||||
| UPDATE_NONE = 0u, | UPDATE_NONE = 0u, | ||||
| }; | }; | ||||
| Integrator(); | Integrator(); | ||||
| ~Integrator(); | ~Integrator(); | ||||
| void device_update(Device *device, DeviceScene *dscene, Scene *scene); | void device_update(Device *device, DeviceScene *dscene, Scene *scene); | ||||
| void device_free(Device *device, DeviceScene *dscene, bool force_free = false); | void device_free(Device *device, DeviceScene *dscene, bool force_free = false); | ||||
| void tag_update(Scene *scene, uint32_t flag); | void tag_update(Scene *scene, uint32_t flag); | ||||
| AdaptiveSampling get_adaptive_sampling() const; | |||||
| DenoiseParams get_denoise_params() const; | |||||
| }; | }; | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||
| #endif /* __INTEGRATOR_H__ */ | #endif /* __INTEGRATOR_H__ */ | ||||