diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-05-07 21:05:21 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-05-22 18:29:25 +0300 |
commit | 0062d9f58c74e6dd021a3517e0dcba41c414ac97 (patch) | |
tree | d4d1e425b81b5f8b53fb9251195b4749a237452f /intern/cycles/render/integrator.cpp | |
parent | 226dc75e7791fae379c5b1b3da5a1267f72277f9 (diff) |
Code refactor: nodify Cycles integrator.
Differential Revision: https://developer.blender.org/D2016
Diffstat (limited to 'intern/cycles/render/integrator.cpp')
-rw-r--r-- | intern/cycles/render/integrator.cpp | 129 |
1 files changed, 54 insertions, 75 deletions
diff --git a/intern/cycles/render/integrator.cpp b/intern/cycles/render/integrator.cpp index fd4f34c8990..a136e9ad76b 100644 --- a/intern/cycles/render/integrator.cpp +++ b/intern/cycles/render/integrator.cpp @@ -27,48 +27,62 @@ CCL_NAMESPACE_BEGIN -Integrator::Integrator() +NODE_DEFINE(Integrator) { - min_bounce = 2; - max_bounce = 7; - - max_diffuse_bounce = max_bounce; - max_glossy_bounce = max_bounce; - max_transmission_bounce = max_bounce; - max_volume_bounce = max_bounce; - - transparent_min_bounce = min_bounce; - transparent_max_bounce = max_bounce; - transparent_shadows = false; - - volume_max_steps = 1024; - volume_step_size = 0.1f; - - caustics_reflective = true; - caustics_refractive = true; - filter_glossy = 0.0f; - seed = 0; - layer_flag = ~0; - sample_clamp_direct = 0.0f; - sample_clamp_indirect = 0.0f; - motion_blur = false; - - aa_samples = 0; - diffuse_samples = 1; - glossy_samples = 1; - transmission_samples = 1; - ao_samples = 1; - mesh_light_samples = 1; - subsurface_samples = 1; - volume_samples = 1; - - sample_all_lights_direct = true; - sample_all_lights_indirect = true; - - method = PATH; - - sampling_pattern = SAMPLING_PATTERN_SOBOL; + NodeType *type = NodeType::add("integrator", create); + + SOCKET_INT(min_bounce, "Min Bounce", 2); + SOCKET_INT(max_bounce, "Max Bounce", 7); + + SOCKET_INT(max_diffuse_bounce, "Max Diffuse Bounce", 7); + SOCKET_INT(max_glossy_bounce, "Max Glossy Bounce", 7); + SOCKET_INT(max_transmission_bounce, "Max Transmission Bounce", 7); + SOCKET_INT(max_volume_bounce, "Max Volume Bounce", 7); + + SOCKET_INT(transparent_min_bounce, "Transparent Min Bounce", 2); + SOCKET_INT(transparent_max_bounce, "Transparent Max Bounce", 7); + SOCKET_BOOLEAN(transparent_shadows, "Transparent Shadows", false); + + SOCKET_INT(volume_max_steps, "Volume Max Steps", 1024); + SOCKET_FLOAT(volume_step_size, "Volume Step Size", 0.1f); + + SOCKET_BOOLEAN(caustics_reflective, "Reflective Caustics", true); + SOCKET_BOOLEAN(caustics_refractive, "Refractive Caustics", true); + SOCKET_FLOAT(filter_glossy, "Filter Glossy", 0.0f); + SOCKET_INT(seed, "Seed", 0); + SOCKET_INT(layer_flag, "Layer Flag", ~0); + SOCKET_FLOAT(sample_clamp_direct, "Sample Clamp Direct", 0.0f); + SOCKET_FLOAT(sample_clamp_indirect, "Sample Clamp Indirect", 0.0f); + SOCKET_BOOLEAN(motion_blur, "Motion Blur", false); + + SOCKET_INT(aa_samples, "AA Samples", 0); + SOCKET_INT(diffuse_samples, "Diffuse Samples", 1); + SOCKET_INT(glossy_samples, "Glossy Samples", 1); + SOCKET_INT(transmission_samples, "Transmission Samples", 1); + SOCKET_INT(ao_samples, "AO Samples", 1); + SOCKET_INT(mesh_light_samples, "Mesh Light Samples", 1); + SOCKET_INT(subsurface_samples, "Subsurface Samples", 1); + SOCKET_INT(volume_samples, "Volume Samples", 1); + + SOCKET_BOOLEAN(sample_all_lights_direct, "Sample All Lights Direct", true); + SOCKET_BOOLEAN(sample_all_lights_indirect, "Sample All Lights Indirect", true); + + static NodeEnum method_enum; + method_enum.insert("path", PATH); + method_enum.insert("branched_path", BRANCHED_PATH); + SOCKET_ENUM(method, "Method", method_enum, PATH); + + static NodeEnum sampling_pattern_enum; + sampling_pattern_enum.insert("sobol", SAMPLING_PATTERN_SOBOL); + sampling_pattern_enum.insert("cmj", SAMPLING_PATTERN_CMJ); + SOCKET_ENUM(sampling_pattern, "Sampling Pattern", sampling_pattern_enum, SAMPLING_PATTERN_SOBOL); + + return type; +} +Integrator::Integrator() +: Node(node_type) +{ need_update = true; } @@ -192,41 +206,6 @@ void Integrator::device_free(Device *device, DeviceScene *dscene) dscene->sobol_directions.clear(); } -bool Integrator::modified(const Integrator& integrator) -{ - return !(min_bounce == integrator.min_bounce && - max_bounce == integrator.max_bounce && - max_diffuse_bounce == integrator.max_diffuse_bounce && - max_glossy_bounce == integrator.max_glossy_bounce && - max_transmission_bounce == integrator.max_transmission_bounce && - max_volume_bounce == integrator.max_volume_bounce && - transparent_min_bounce == integrator.transparent_min_bounce && - transparent_max_bounce == integrator.transparent_max_bounce && - transparent_shadows == integrator.transparent_shadows && - volume_max_steps == integrator.volume_max_steps && - volume_step_size == integrator.volume_step_size && - caustics_reflective == integrator.caustics_reflective && - caustics_refractive == integrator.caustics_refractive && - filter_glossy == integrator.filter_glossy && - layer_flag == integrator.layer_flag && - seed == integrator.seed && - sample_clamp_direct == integrator.sample_clamp_direct && - sample_clamp_indirect == integrator.sample_clamp_indirect && - method == integrator.method && - aa_samples == integrator.aa_samples && - diffuse_samples == integrator.diffuse_samples && - glossy_samples == integrator.glossy_samples && - transmission_samples == integrator.transmission_samples && - ao_samples == integrator.ao_samples && - mesh_light_samples == integrator.mesh_light_samples && - subsurface_samples == integrator.subsurface_samples && - volume_samples == integrator.volume_samples && - motion_blur == integrator.motion_blur && - sampling_pattern == integrator.sampling_pattern && - sample_all_lights_direct == integrator.sample_all_lights_direct && - sample_all_lights_indirect == integrator.sample_all_lights_indirect); -} - void Integrator::tag_update(Scene *scene) { foreach(Shader *shader, scene->shaders) { |