Commit: e4f912c041b451dcabe2a992c1c49f435b074f72
Author: Stefan Werner
Date:   Thu Aug 17 13:10:58 2017 +0200
Branches: temp_cryptomatte
https://developer.blender.org/rBe4f912c041b451dcabe2a992c1c49f435b074f72

Cycles: Fixes for cryptomatte writing via coverage buffer, was writing the 
wrong place for material cyrptomatte

===================================================================

M       intern/cycles/device/device_cpu.cpp
M       intern/cycles/render/coverage.cpp
M       intern/cycles/render/coverage.h

===================================================================

diff --git a/intern/cycles/device/device_cpu.cpp 
b/intern/cycles/device/device_cpu.cpp
index 3c7af96c2b6..cbcd28ca06d 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -734,11 +734,12 @@ public:
                                        path_trace(task, tile, kg, 
coverage_object, coverage_material);
                                }
                                if(kg->__data.film.use_cryptomatte & 
CRYPT_ACCURATE) {
+                                       int aov_index = 0;
                                        if(kg->__data.film.use_cryptomatte & 
CRYPT_OBJECT) {
-                                               flatten_coverage(kg, 
coverage_object, tile);
+                                               aov_index += 
flatten_coverage(kg, coverage_object, tile, aov_index);
                                        }
                                        if(kg->__data.film.use_cryptomatte & 
CRYPT_MATERIAL) {
-                                               flatten_coverage(kg, 
coverage_material, tile);
+                                               aov_index += 
flatten_coverage(kg, coverage_material, tile, aov_index);
                                        }
                                }
                        }
diff --git a/intern/cycles/render/coverage.cpp 
b/intern/cycles/render/coverage.cpp
index bc7eeb496d5..ac97baef93c 100644
--- a/intern/cycles/render/coverage.cpp
+++ b/intern/cycles/render/coverage.cpp
@@ -61,7 +61,7 @@ static inline void kernel_write_id_slots(float *buffer, int 
num_slots, float id,
 
 static bool crypomatte_comp(const std::pair<float, float>& i, const 
std::pair<float, float> j) { return i.first > j.first; }
 
-void flatten_coverage(KernelGlobals *kg, vector<map<float, float> > & 
coverage, const RenderTile &tile)
+int flatten_coverage(KernelGlobals *kg, vector<map<float, float> > & coverage, 
const RenderTile &tile, const int aov_index)
 {
        /* sort the coverage map and write it to the output */
        int index = 0;
@@ -90,13 +90,15 @@ void flatten_coverage(KernelGlobals *kg, vector<map<float, 
float> > & coverage,
                                }
                                int limit = min(num_slots, sorted_pixel.size());
                                for(int i = 0; i < limit; i++) {
-                                       int pass_offset = 
(kg->__data.film.pass_aov[0] & ~(1 << 31));
+                                       int pass_offset = 
(kg->__data.film.pass_aov[aov_index] & ~(1 << 31));
                                        kernel_write_id_slots(buffer + 
pass_offset, 2 * (kg->__data.film.use_cryptomatte & 255), 
sorted_pixel[i].second, sorted_pixel[i].first, i == 0);
                                }
                        }
                        index++;
                }
        }
+
+       return kernel_data.film.use_cryptomatte & 255;
 }
 
 CCL_NAMESPACE_END
diff --git a/intern/cycles/render/coverage.h b/intern/cycles/render/coverage.h
index d225bbb35a0..53b1a35454e 100644
--- a/intern/cycles/render/coverage.h
+++ b/intern/cycles/render/coverage.h
@@ -25,7 +25,7 @@ CCL_NAMESPACE_BEGIN
 
 struct KernelGlobals;
 
-void flatten_coverage(KernelGlobals *kg, vector<map<float, float> >&coverage, 
const RenderTile &tile);
+int flatten_coverage(KernelGlobals *kg, vector<map<float, float> >&coverage, 
const RenderTile &tile, const int aov_index);
 
 CCL_NAMESPACE_END

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to