[Bf-blender-cvs] [0601654328b] temp_cryptomatte: Cycles: fixed an assert in Cryptomattes, now also writting sorted Cryptomatte 2 layers

Stefan Werner noreply at git.blender.org
Fri Nov 3 21:09:39 CET 2017


Commit: 0601654328b8b8bf5e93aba147b4e7022df7d96e
Author: Stefan Werner
Date:   Fri Apr 7 10:55:26 2017 +0200
Branches: temp_cryptomatte
https://developer.blender.org/rB0601654328b8b8bf5e93aba147b4e7022df7d96e

Cycles: fixed an assert in Cryptomattes, now also writting sorted Cryptomatte 2 layers

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

M	intern/cycles/kernel/kernel_passes.h
M	intern/cycles/render/buffers.cpp

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

diff --git a/intern/cycles/kernel/kernel_passes.h b/intern/cycles/kernel/kernel_passes.h
index cee2b6a9029..ce8ad4df9e4 100644
--- a/intern/cycles/kernel/kernel_passes.h
+++ b/intern/cycles/kernel/kernel_passes.h
@@ -63,6 +63,9 @@ ccl_device_inline void kernel_write_pass_float4(ccl_global float *buffer, int sa
 ccl_device_inline void kernel_write_id_slots(ccl_global float *buffer, int num_slots, float id, float weight, bool init)
 {
 	kernel_assert(id != ID_NONE);
+	if(weight == 0.f) {
+		return;
+	}
 
 	if(init) {
 		for(int slot = 0; slot < num_slots; slot++) {
diff --git a/intern/cycles/render/buffers.cpp b/intern/cycles/render/buffers.cpp
index afdcada4d21..8f1d2705764 100644
--- a/intern/cycles/render/buffers.cpp
+++ b/intern/cycles/render/buffers.cpp
@@ -179,10 +179,11 @@ bool RenderBuffers::get_aov_rect(ustring name, float exposure, int sample, int c
 			for(int i = 0; i < size; i++, in += pass_stride, pixels += 4) {
 				float4 f = make_float4(in[0], in[1], in[2], in[3]);
 				
-				pixels[0] = f.x;/*scale*/;
-				pixels[1] = f.y*scale;
-				pixels[2] = f.z;/*scale*/;
-				pixels[3] = f.w*scale;
+				/* cryptomatte simple sorting for two layers */
+				pixels[0] = f.y > f.w ? f.x : f.z;
+				pixels[1] = (f.y > f.w ? f.y : f.w)*scale;
+				pixels[2] = f.y > f.w ? f.z : f.x;
+				pixels[3] = (f.y > f.w ? f.w : f.y)*scale;;
 			}
 			break;
 		default:



More information about the Bf-blender-cvs mailing list