Cycles: fix AO pass not rendering with AO enabled for world, and make mask

layers work more like blender internal.
This commit is contained in:
Brecht Van Lommel 2012-02-28 19:43:33 +00:00
parent dcfd1dd7e2
commit 8a76aa2e47
6 changed files with 15 additions and 11 deletions

@ -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")

@ -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);

@ -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();
}

@ -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;
}

@ -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;
}

@ -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;