Cycles: Small optimization for scenes without Transparent Shaders, helps a few percent.
Differential Revision: https://developer.blender.org/D570
This commit is contained in:
parent
09b0eadadd
commit
14be4b506a
|
@ -95,7 +95,11 @@ void Integrator::device_update(Device *device, DeviceScene *dscene, Scene *scene
|
|||
kintegrator->transparent_max_bounce = transparent_max_bounce + 1;
|
||||
kintegrator->transparent_min_bounce = transparent_min_bounce + 1;
|
||||
|
||||
kintegrator->transparent_shadows = transparent_shadows;
|
||||
/* At this point kintegrator->transparent_shadows is set automatically
|
||||
* based on whether shaders use transparent shadows (see shader.cpp).
|
||||
* If user doesn't want transparent shadows, force them off. */
|
||||
if(!transparent_shadows)
|
||||
kintegrator->transparent_shadows = false;
|
||||
|
||||
kintegrator->volume_homogeneous_sampling = volume_homogeneous_sampling;
|
||||
kintegrator->volume_max_steps = volume_max_steps;
|
||||
|
|
|
@ -229,6 +229,7 @@ void ShaderManager::device_update_common(Device *device, DeviceScene *dscene, Sc
|
|||
uint i = 0;
|
||||
bool has_converter_blackbody = false;
|
||||
bool has_volumes = false;
|
||||
bool has_transparent_shadows = false;
|
||||
|
||||
foreach(Shader *shader, scene->shaders) {
|
||||
uint flag = 0;
|
||||
|
@ -267,6 +268,10 @@ void ShaderManager::device_update_common(Device *device, DeviceScene *dscene, Sc
|
|||
|
||||
shader_flag[i++] = flag;
|
||||
shader_flag[i++] = shader->pass_id;
|
||||
|
||||
/* Check if we need transparent shadows */
|
||||
if(flag & SD_HAS_TRANSPARENT_SHADOW)
|
||||
has_transparent_shadows = true;
|
||||
}
|
||||
|
||||
device->tex_alloc("__shader_flag", dscene->shader_flag);
|
||||
|
@ -285,9 +290,10 @@ void ShaderManager::device_update_common(Device *device, DeviceScene *dscene, Sc
|
|||
blackbody_table_offset = TABLE_OFFSET_INVALID;
|
||||
}
|
||||
|
||||
/* volumes */
|
||||
/* integrator */
|
||||
KernelIntegrator *kintegrator = &dscene->data.integrator;
|
||||
kintegrator->use_volumes = has_volumes;
|
||||
kintegrator->transparent_shadows = has_transparent_shadows;
|
||||
}
|
||||
|
||||
void ShaderManager::device_free_common(Device *device, DeviceScene *dscene, Scene *scene)
|
||||
|
|
Loading…
Reference in New Issue