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:
authorSergey Sharybin <sergey.vfx@gmail.com>2015-11-24 11:21:40 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-11-24 11:21:40 +0300
commitfa6bdfd622999fa5f0550f879716a904991b33a6 (patch)
tree697008759db5918e54e82e77c32009ed9c398afa /intern/cycles/render/background.cpp
parent31cc60e76bfa81783e61a7b01586de9547de0174 (diff)
Cycles: Support per-render layer world AO settings
This is sort of extension of existing Use Environment option which now allows to disable AO on the render layer basis. Useful in cases like disabling AO for the background because it might make it too flat and so. Reviewers: juicyfruit, dingto, brecht Reviewed By: brecht Subscribers: eyecandy, venomgfx Differential Revision: https://developer.blender.org/D1633
Diffstat (limited to 'intern/cycles/render/background.cpp')
-rw-r--r--intern/cycles/render/background.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/intern/cycles/render/background.cpp b/intern/cycles/render/background.cpp
index 5fd7bd8f16f..0cd164dc03e 100644
--- a/intern/cycles/render/background.cpp
+++ b/intern/cycles/render/background.cpp
@@ -33,7 +33,8 @@ Background::Background()
ao_factor = 0.0f;
ao_distance = FLT_MAX;
- use = true;
+ use_shader = true;
+ use_ao = false;
visibility = PATH_RAY_ALL_VISIBILITY;
shader = 0;
@@ -53,7 +54,7 @@ void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene
device_free(device, dscene);
- if(use)
+ if(use_shader)
shader = scene->default_background;
else
shader = scene->default_empty;
@@ -61,8 +62,14 @@ void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene
/* set shader index and transparent option */
KernelBackground *kbackground = &dscene->data.background;
- kbackground->ao_factor = ao_factor;
- kbackground->ao_distance = ao_distance;
+ if(use_ao) {
+ kbackground->ao_factor = ao_factor;
+ kbackground->ao_distance = ao_distance;
+ }
+ else {
+ kbackground->ao_factor = 0.0f;
+ kbackground->ao_distance = FLT_MAX;
+ }
kbackground->transparent = transparent;
kbackground->surface_shader = scene->shader_manager->get_shader_id(shader);
@@ -100,7 +107,8 @@ void Background::device_free(Device * /*device*/, DeviceScene * /*dscene*/)
bool Background::modified(const Background& background)
{
return !(transparent == background.transparent &&
- use == background.use &&
+ use_shader == background.use_shader &&
+ use_ao == background.use_ao &&
ao_factor == background.ao_factor &&
ao_distance == background.ao_distance &&
visibility == background.visibility);