[Bf-blender-cvs] [e4f912c041b] temp_cryptomatte: Cycles: Fixes for cryptomatte writing via coverage buffer, was writing the wrong place for material cyrptomatte
Stefan Werner
noreply at git.blender.org
Fri Nov 3 21:10:09 CET 2017
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
More information about the Bf-blender-cvs
mailing list