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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2020-01-20 15:42:26 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2020-01-20 16:03:14 +0300
commit1613c994b069ddab170dd5af9b8f23a31541dec3 (patch)
tree9016b299c9ba808d3bb6cd7defc466275a963461 /intern/cycles/render/osl.cpp
parentbb692a2d0f78cc5702aee9fceda4fa500ec5d7e8 (diff)
Fix Cycles not correctly using Background.shader if specified
Based on patch by Alex Fuller. Differential Revision: https://developer.blender.org/D6627
Diffstat (limited to 'intern/cycles/render/osl.cpp')
-rw-r--r--intern/cycles/render/osl.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/intern/cycles/render/osl.cpp b/intern/cycles/render/osl.cpp
index 91f02e42071..1f0a243e6c1 100644
--- a/intern/cycles/render/osl.cpp
+++ b/intern/cycles/render/osl.cpp
@@ -16,6 +16,7 @@
#include "device/device.h"
+#include "render/background.h"
#include "render/colorspace.h"
#include "render/graph.h"
#include "render/light.h"
@@ -106,6 +107,7 @@ void OSLShaderManager::device_update(Device *device,
/* create shaders */
OSLGlobals *og = (OSLGlobals *)device->osl_memory();
+ Shader *background_shader = scene->background->get_shader(scene);
foreach (Shader *shader, scene->shaders) {
assert(shader->graph);
@@ -119,7 +121,7 @@ void OSLShaderManager::device_update(Device *device,
thread_scoped_lock lock(ss_mutex);
OSLCompiler compiler(this, services, ss, scene);
- compiler.background = (shader == scene->default_background);
+ compiler.background = (shader == background_shader);
compiler.compile(og, shader);
if (shader->use_mis && shader->has_surface_emission)
@@ -131,7 +133,7 @@ void OSLShaderManager::device_update(Device *device,
og->ts = ts;
og->services = services;
- int background_id = scene->shader_manager->get_shader_id(scene->default_background);
+ int background_id = scene->shader_manager->get_shader_id(background_shader);
og->background_state = og->surface_state[background_id & SHADER_MASK];
og->use = true;