[Bf-blender-cvs] [7366283] master: Fix T42818: Cycles SSS passes are incorrect for SSS size of 0

Sergey Sharybin noreply at git.blender.org
Wed Dec 10 13:31:08 CET 2014


Commit: 7366283c0107a350ff9e6ed9d4699e0e1f74aef4
Author: Sergey Sharybin
Date:   Wed Dec 10 17:28:44 2014 +0500
Branches: master
https://developer.blender.org/rB7366283c0107a350ff9e6ed9d4699e0e1f74aef4

Fix T42818: Cycles SSS passes are incorrect for SSS size of 0

This was caused by some internal optimization which evaluated SSS with
size of zero as BSDF but used different ID so the evaluation result
didn't appear in regular diffuse pass.

This lead to situation when SSS data was nowhere stored if the
size was zero.

Now SSS with zero size and close-to-zero sizes will be handled in the
same way from the passes point of view.

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

M	intern/cycles/kernel/kernel_shader.h

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

diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h
index db08c32..6508974 100644
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@ -681,7 +681,7 @@ ccl_device float3 shader_bsdf_subsurface(KernelGlobals *kg, ShaderData *sd)
 	for(int i = 0; i< sd->num_closure; i++) {
 		ShaderClosure *sc = &sd->closure[i];
 
-		if(CLOSURE_IS_BSSRDF(sc->type))
+		if(CLOSURE_IS_BSSRDF(sc->type) || CLOSURE_IS_BSDF_BSSRDF(sc->type))
 			eval += sc->weight;
 	}




More information about the Bf-blender-cvs mailing list