From 7ffa42075e29033a54a606a75b802d17f4a0f079 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 1 Aug 2012 12:59:47 +0000 Subject: [PATCH] Fix #32205: Holdout shader + transparent background stays black with Alpha = 1 It was read of initialized memory around holdout_weight in cases when holdout material is used. Seems that it should be assigned to result of shader_holdout_eval here. If Brecht could double check this it'll be great. This could potentially fix #32224: Holdout Error with CUDA Cycles Render --- intern/cycles/kernel/kernel_path.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/intern/cycles/kernel/kernel_path.h b/intern/cycles/kernel/kernel_path.h index 98ab9169c21..f5188345948 100644 --- a/intern/cycles/kernel/kernel_path.h +++ b/intern/cycles/kernel/kernel_path.h @@ -288,7 +288,7 @@ __device float4 kernel_path_progressive(KernelGlobals *kg, RNG *rng, int sample, if(sd.flag & SD_HOLDOUT_MASK) holdout_weight = make_float3(1.0f, 1.0f, 1.0f); else - shader_holdout_eval(kg, &sd); + holdout_weight = shader_holdout_eval(kg, &sd); /* any throughput is ok, should all be identical here */ L_transparent += average(holdout_weight*throughput); @@ -655,7 +655,7 @@ __device float4 kernel_path_non_progressive(KernelGlobals *kg, RNG *rng, int sam if(sd.flag & SD_HOLDOUT_MASK) holdout_weight = make_float3(1.0f, 1.0f, 1.0f); else - shader_holdout_eval(kg, &sd); + holdout_weight = shader_holdout_eval(kg, &sd); /* any throughput is ok, should all be identical here */ L_transparent += average(holdout_weight*throughput);