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