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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-11-08 17:13:43 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-11-08 17:15:29 +0300
commit146b39a45d4ad1b36a977d19984797f984f161ec (patch)
treec44be89db5b92c2ca5328933b3a1e6f891f77dbd /intern/cycles/render/shader.cpp
parent3cf724209f619071555c1acce5958a13a11103e5 (diff)
parent116be3deffc087a61cdab452cd17bcaaf049a508 (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern/cycles/render/shader.cpp')
-rw-r--r--intern/cycles/render/shader.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/intern/cycles/render/shader.cpp b/intern/cycles/render/shader.cpp
index 4fce4b79f49..86860bbc8ac 100644
--- a/intern/cycles/render/shader.cpp
+++ b/intern/cycles/render/shader.cpp
@@ -700,4 +700,20 @@ float ShaderManager::linear_rgb_to_gray(float3 c)
return dot(c, rgb_to_y);
}
+string ShaderManager::get_cryptomatte_materials(Scene *scene)
+{
+ string manifest = "{";
+ unordered_set<ustring, ustringHash> materials;
+ foreach(Shader *shader, scene->shaders) {
+ if(materials.count(shader->name)) {
+ continue;
+ }
+ materials.insert(shader->name);
+ uint32_t cryptomatte_id = util_murmur_hash3(shader->name.c_str(), shader->name.length(), 0);
+ manifest += string_printf("\"%s\":\"%08x\",", shader->name.c_str(), cryptomatte_id);
+ }
+ manifest[manifest.size()-1] = '}';
+ return manifest;
+}
+
CCL_NAMESPACE_END