Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2016-05-07 21:05:21 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2016-05-22 18:29:25 +0300
commit0062d9f58c74e6dd021a3517e0dcba41c414ac97 (patch)
treed4d1e425b81b5f8b53fb9251195b4749a237452f /intern/cycles/render/integrator.cpp
parent226dc75e7791fae379c5b1b3da5a1267f72277f9 (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.cpp129
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) {