[Bf-blender-cvs] [836a1ccf729] blender-v2.79a-release: Fix T53600: Cycles shader mixing issue with principled BSDF and zero weights.

Brecht Van Lommel noreply at git.blender.org
Mon Jan 1 18:00:31 CET 2018


Commit: 836a1ccf729aa63292b156647753afbad9e0913a
Author: Brecht Van Lommel
Date:   Mon Jan 1 17:13:04 2018 +0100
Branches: blender-v2.79a-release
https://developer.blender.org/rB836a1ccf729aa63292b156647753afbad9e0913a

Fix T53600: Cycles shader mixing issue with principled BSDF and zero weights.

SVM nodes need to read all data to get the right offset for the following node.
This is quite weak, a more generic solution would be good in the future.

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

M	intern/cycles/kernel/svm/svm_closure.h

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

diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index 4268813b263..7e5134b7f2f 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -67,8 +67,17 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
 	/* note we read this extra node before weight check, so offset is added */
 	uint4 data_node = read_node(kg, offset);
 
-	if(mix_weight == 0.0f)
+	if(mix_weight == 0.0f) {
+		if(type == CLOSURE_BSDF_PRINCIPLED_ID) {
+			/* Read all principled BSDF extra data to get the right offset. */
+			read_node(kg, offset);
+			read_node(kg, offset);
+			read_node(kg, offset);
+			read_node(kg, offset);
+		}
+
 		return;
+	}
 
 	float3 N = stack_valid(data_node.x)? stack_load_float3(stack, data_node.x): sd->N;



More information about the Bf-blender-cvs mailing list