diff options
Diffstat (limited to 'intern/cycles/render/background.cpp')
-rw-r--r-- | intern/cycles/render/background.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/intern/cycles/render/background.cpp b/intern/cycles/render/background.cpp index 7bdcb1578c3..d2463454522 100644 --- a/intern/cycles/render/background.cpp +++ b/intern/cycles/render/background.cpp @@ -54,6 +54,7 @@ NODE_DEFINE(Background) Background::Background() : Node(node_type) { + need_update = true; shader = NULL; } @@ -63,7 +64,7 @@ Background::~Background() void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene) { - if (!is_modified()) + if (!need_update) return; scoped_callback_timer timer([scene](double time) { @@ -101,7 +102,7 @@ void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene else kbackground->volume_shader = SHADER_NONE; - kbackground->volume_step_size = volume_step_size * scene->integrator->get_volume_step_rate(); + kbackground->volume_step_size = volume_step_size * scene->integrator->volume_step_rate; /* No background node, make world shader invisible to all rays, to skip evaluation in kernel. */ if (bg_shader->graph->nodes.size() <= 1) { @@ -121,17 +122,22 @@ void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene kbackground->surface_shader |= SHADER_EXCLUDE_CAMERA; } - clear_modified(); + need_update = false; } void Background::device_free(Device * /*device*/, DeviceScene * /*dscene*/) { } +bool Background::modified(const Background &background) +{ + return !Node::equals(background); +} + void Background::tag_update(Scene *scene) { scene->integrator->tag_update(scene); - tag_modified(); + need_update = true; } Shader *Background::get_shader(const Scene *scene) |