From 9f18e3acd6bffb15a268e4375394328d9869ac38 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 28 Jul 2016 12:31:01 +0200 Subject: [PATCH] Cycles: Fix wrong order of light manager update tag Shader's has_surface_emission will only be known for sure after compilation. --- intern/cycles/render/svm.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/intern/cycles/render/svm.cpp b/intern/cycles/render/svm.cpp index f0e7ee2bd49..1a166885e2b 100644 --- a/intern/cycles/render/svm.cpp +++ b/intern/cycles/render/svm.cpp @@ -65,20 +65,21 @@ void SVMShaderManager::device_update(Device *device, DeviceScene *dscene, Scene svm_nodes.push_back(make_int4(NODE_SHADER_JUMP, 0, 0, 0)); svm_nodes.push_back(make_int4(NODE_SHADER_JUMP, 0, 0, 0)); } - + foreach(Shader *shader, scene->shaders) { if(progress.get_cancel()) return; assert(shader->graph); - if(shader->use_mis && shader->has_surface_emission) - scene->light_manager->need_update = true; - SVMCompiler::Summary summary; SVMCompiler compiler(scene->shader_manager, scene->image_manager); compiler.background = (shader == scene->default_background); compiler.compile(scene, shader, svm_nodes, shader->id, &summary); + if(shader->use_mis && shader->has_surface_emission) { + scene->light_manager->need_update = true; + } + VLOG(2) << "Compilation summary:\n" << "Shader name: " << shader->name << "\n" << summary.full_report();