Cycles: Fix wrong order of light manager update tag

Shader's has_surface_emission will only be known for sure after compilation.
This commit is contained in:
Sergey Sharybin 2016-07-28 12:31:01 +02:00
parent d3d1313ca4
commit 9f18e3acd6
1 changed files with 5 additions and 4 deletions

View File

@ -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();