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:
@@ -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));
|
||||||
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) {
|
foreach(Shader *shader, scene->shaders) {
|
||||||
if(progress.get_cancel()) return;
|
if(progress.get_cancel()) return;
|
||||||
|
|
||||||
assert(shader->graph);
|
assert(shader->graph);
|
||||||
|
|
||||||
if(shader->use_mis && shader->has_surface_emission)
|
|
||||||
scene->light_manager->need_update = true;
|
|
||||||
|
|
||||||
SVMCompiler::Summary summary;
|
SVMCompiler::Summary summary;
|
||||||
SVMCompiler compiler(scene->shader_manager, scene->image_manager);
|
SVMCompiler compiler(scene->shader_manager, scene->image_manager);
|
||||||
compiler.background = (shader == scene->default_background);
|
compiler.background = (shader == scene->default_background);
|
||||||
compiler.compile(scene, shader, svm_nodes, shader->id, &summary);
|
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"
|
VLOG(2) << "Compilation summary:\n"
|
||||||
<< "Shader name: " << shader->name << "\n"
|
<< "Shader name: " << shader->name << "\n"
|
||||||
<< summary.full_report();
|
<< summary.full_report();
|
||||||
|
Reference in New Issue
Block a user