diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2013-12-28 05:27:48 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2013-12-28 19:57:10 +0400 |
commit | 37c4d6a50a7dc8e819ecab208f150ceb0ae1d01c (patch) | |
tree | dfb741142554015bb046ee20aedab3198637263e /intern/cycles/render/background.cpp | |
parent | a35db17cee5a9b47dc9624f7dfcb41f5fc185b33 (diff) |
Cycles Volume Render: add flags to quickly detect when objects have a volume shader.
Diffstat (limited to 'intern/cycles/render/background.cpp')
-rw-r--r-- | intern/cycles/render/background.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/intern/cycles/render/background.cpp b/intern/cycles/render/background.cpp index 9359618b48d..c9c66dad3fe 100644 --- a/intern/cycles/render/background.cpp +++ b/intern/cycles/render/background.cpp @@ -65,16 +65,21 @@ void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene kbackground->ao_distance = ao_distance; kbackground->transparent = transparent; - kbackground->shader = scene->shader_manager->get_shader_id(shader); + kbackground->surface_shader = scene->shader_manager->get_shader_id(shader); + + if(scene->shaders[shader]->has_volume) + kbackground->volume_shader = kbackground->surface_shader; + else + kbackground->volume_shader = SHADER_NO_ID; if(!(visibility & PATH_RAY_DIFFUSE)) - kbackground->shader |= SHADER_EXCLUDE_DIFFUSE; + kbackground->surface_shader |= SHADER_EXCLUDE_DIFFUSE; if(!(visibility & PATH_RAY_GLOSSY)) - kbackground->shader |= SHADER_EXCLUDE_GLOSSY; + kbackground->surface_shader |= SHADER_EXCLUDE_GLOSSY; if(!(visibility & PATH_RAY_TRANSMIT)) - kbackground->shader |= SHADER_EXCLUDE_TRANSMIT; + kbackground->surface_shader |= SHADER_EXCLUDE_TRANSMIT; if(!(visibility & PATH_RAY_CAMERA)) - kbackground->shader |= SHADER_EXCLUDE_CAMERA; + kbackground->surface_shader |= SHADER_EXCLUDE_CAMERA; need_update = false; } |