From 8a76aa2e479c05946f97aade4a733b0fea45dbf3 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 28 Feb 2012 19:43:33 +0000 Subject: Cycles: fix AO pass not rendering with AO enabled for world, and make mask layers work more like blender internal. --- intern/cycles/blender/addon/ui.py | 1 + intern/cycles/blender/blender_shader.cpp | 10 ++++------ intern/cycles/blender/blender_sync.cpp | 3 ++- intern/cycles/render/background.cpp | 2 ++ intern/cycles/render/film.cpp | 2 ++ intern/cycles/render/scene.cpp | 8 ++++---- 6 files changed, 15 insertions(+), 11 deletions(-) (limited to 'intern/cycles') diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index faf057e13cc..9eb8f251ebb 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -179,6 +179,7 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel): col.prop(scene, "layers", text="Scene") col.label(text="Material:") col.prop(rl, "material_override", text="") + col.prop(rl, "use_zmask"); col = split.column() col.prop(rl, "layers", text="Layer") diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index a88bcaf3ace..415a043cf78 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -700,14 +700,12 @@ void BlenderSync::sync_world() if(b_world) { BL::WorldLighting b_light = b_world.light_settings(); - if(b_light.use_ambient_occlusion()) { + if(b_light.use_ambient_occlusion()) background->ao_factor = b_light.ao_factor(); - background->ao_distance = b_light.distance(); - } - else { + else background->ao_factor = 0.0f; - background->ao_distance = 0.0f; - } + + background->ao_distance = b_light.distance(); } shader->set_graph(graph); diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 901b1a09f97..45ed7adcfdc 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -204,7 +204,8 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer) render_layer.name = b_rlay->name(); render_layer.scene_layer = get_layer(b_scene.layers()); render_layer.layer = get_layer(b_rlay->layers()); - render_layer.holdout_layer = get_layer(b_rlay->layers_zmask()); + render_layer.holdout_layer = (b_rlay->use_zmask())? ~get_layer(b_rlay->layers_zmask()): 0; + render_layer.layer |= render_layer.holdout_layer; render_layer.material_override = b_rlay->material_override(); } diff --git a/intern/cycles/render/background.cpp b/intern/cycles/render/background.cpp index c5b003fe6c5..919bd83f195 100644 --- a/intern/cycles/render/background.cpp +++ b/intern/cycles/render/background.cpp @@ -18,6 +18,7 @@ #include "background.h" #include "device.h" +#include "integrator.h" #include "graph.h" #include "nodes.h" #include "scene.h" @@ -74,6 +75,7 @@ bool Background::modified(const Background& background) void Background::tag_update(Scene *scene) { + scene->integrator->tag_update(scene); need_update = true; } diff --git a/intern/cycles/render/film.cpp b/intern/cycles/render/film.cpp index daadb6c04c8..3fb1e385adc 100644 --- a/intern/cycles/render/film.cpp +++ b/intern/cycles/render/film.cpp @@ -19,6 +19,7 @@ #include "camera.h" #include "device.h" #include "film.h" +#include "integrator.h" #include "scene.h" #include "util_algorithm.h" @@ -255,6 +256,7 @@ bool Film::modified(const Film& film) void Film::tag_update(Scene *scene) { + scene->integrator->tag_update(scene); need_update = true; } diff --git a/intern/cycles/render/scene.cpp b/intern/cycles/render/scene.cpp index 0b2e2b8a9b6..079f2744e73 100644 --- a/intern/cycles/render/scene.cpp +++ b/intern/cycles/render/scene.cpp @@ -152,13 +152,13 @@ void Scene::device_update(Device *device_, Progress& progress) if(progress.get_cancel()) return; - progress.set_status("Updating Integrator"); - integrator->device_update(device, &dscene); + progress.set_status("Updating Film"); + film->device_update(device, &dscene); if(progress.get_cancel()) return; - progress.set_status("Updating Film"); - film->device_update(device, &dscene); + progress.set_status("Updating Integrator"); + integrator->device_update(device, &dscene); if(progress.get_cancel()) return; -- cgit v1.2.3