Cycles: Auto disable World MIS, if we only use a simple color.

When World MIS is enabled by the user, we now check if we actually need it.
In case of a simple node setup (no procedurals, no HDRs..) we auto disable MIS internally to save render time.

This change is important for upcoming default changes.
This commit is contained in:
Thomas Dinges
2016-02-05 22:13:51 +01:00
parent ca88bc5ac1
commit 469447f707
5 changed files with 51 additions and 15 deletions

View File

@@ -397,7 +397,11 @@ void SVMCompiler::generate_node(ShaderNode *node, ShaderNodeSet& done)
stack_clear_users(node, done);
stack_clear_temporary(node);
if(current_type == SHADER_TYPE_VOLUME) {
if(current_type == SHADER_TYPE_SURFACE) {
if(node->has_spatial_varying())
current_shader->has_surface_spatial_varying = true;
}
else if(current_type == SHADER_TYPE_VOLUME) {
if(node->has_spatial_varying())
current_shader->has_volume_spatial_varying = true;
}
@@ -761,6 +765,7 @@ void SVMCompiler::compile(Scene *scene,
shader->has_bssrdf_bump = false;
shader->has_volume = false;
shader->has_displacement = false;
shader->has_surface_spatial_varying = false;
shader->has_volume_spatial_varying = false;
shader->has_object_dependency = false;
shader->has_integrator_dependency = false;