Cycles: Small optimization for scenes without Transparent Shaders, helps a few percent.

Differential Revision: https://developer.blender.org/D570
This commit is contained in:
Thomas Dinges
2014-06-01 07:11:13 +02:00
parent 09b0eadadd
commit 14be4b506a
2 changed files with 12 additions and 2 deletions

View File

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