Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/render/shader.cpp')
-rw-r--r--intern/cycles/render/shader.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/intern/cycles/render/shader.cpp b/intern/cycles/render/shader.cpp
index 86378dfb495..864875361c0 100644
--- a/intern/cycles/render/shader.cpp
+++ b/intern/cycles/render/shader.cpp
@@ -33,7 +33,9 @@
CCL_NAMESPACE_BEGIN
+thread_mutex ShaderManager::lookup_table_mutex;
vector<float> ShaderManager::beckmann_table;
+bool ShaderManager::beckmann_table_ready = false;
/* Beckmann sampling precomputed table, see bsdf_microfacet.h */
@@ -482,10 +484,11 @@ void ShaderManager::device_update_common(Device *device,
/* beckmann lookup table */
if(beckmann_table_offset == TABLE_OFFSET_INVALID) {
- if(beckmann_table.size() == 0) {
+ if(!beckmann_table_ready) {
thread_scoped_lock lock(lookup_table_mutex);
- if(beckmann_table.size() == 0) {
+ if(!beckmann_table_ready) {
beckmann_table_build(beckmann_table);
+ beckmann_table_ready = true;
}
}
beckmann_table_offset = scene->lookup_tables->add_table(dscene, beckmann_table);