diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-11-24 11:21:40 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-11-24 11:21:40 +0300 |
commit | fa6bdfd622999fa5f0550f879716a904991b33a6 (patch) | |
tree | 697008759db5918e54e82e77c32009ed9c398afa /intern/cycles/render/background.cpp | |
parent | 31cc60e76bfa81783e61a7b01586de9547de0174 (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.cpp | 18 |
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); |