diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-05-14 15:50:03 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-05-17 22:39:16 +0300 |
commit | 0e8cd14dfee9788f24854aa8f4148033ef042f51 (patch) | |
tree | 4fd7fdb358f9ef4ccdcb934025b74ee6f25598ad /intern/cycles/render/background.cpp | |
parent | 08670d3b8117cda608c178688f261e1204794a0d (diff) |
Code refactor: use shader pointers rather than shader indexes.
Diffstat (limited to 'intern/cycles/render/background.cpp')
-rw-r--r-- | intern/cycles/render/background.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/intern/cycles/render/background.cpp b/intern/cycles/render/background.cpp index 0cd164dc03e..89f90bc8dad 100644 --- a/intern/cycles/render/background.cpp +++ b/intern/cycles/render/background.cpp @@ -37,7 +37,7 @@ Background::Background() use_ao = false; visibility = PATH_RAY_ALL_VISIBILITY; - shader = 0; + shader = NULL; transparent = false; need_update = true; @@ -54,10 +54,14 @@ void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene device_free(device, dscene); - if(use_shader) - shader = scene->default_background; + Shader *bg_shader = shader; + + if(use_shader) { + if(!bg_shader) + bg_shader = scene->default_background; + } else - shader = scene->default_empty; + bg_shader = scene->default_empty; /* set shader index and transparent option */ KernelBackground *kbackground = &dscene->data.background; @@ -72,15 +76,15 @@ void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene } kbackground->transparent = transparent; - kbackground->surface_shader = scene->shader_manager->get_shader_id(shader); + kbackground->surface_shader = scene->shader_manager->get_shader_id(bg_shader); - if(scene->shaders[shader]->has_volume) + if(bg_shader->has_volume) kbackground->volume_shader = kbackground->surface_shader; else kbackground->volume_shader = SHADER_NONE; /* No background node, make world shader invisible to all rays, to skip evaluation in kernel. */ - if(scene->shaders[shader]->graph->nodes.size() <= 1) { + if(bg_shader->graph->nodes.size() <= 1) { kbackground->surface_shader |= SHADER_EXCLUDE_ANY; } /* Background present, check visibilities */ |