[Bf-blender-cvs] [20b2af9cf5a] soc-2018-hair-shader-fixes: Remove mode handling

L. E. Segovia noreply at git.blender.org
Wed Aug 1 20:26:25 CEST 2018


Commit: 20b2af9cf5a8bb6b15c6652a02665dcd67eec3f6
Author: L. E. Segovia
Date:   Wed Aug 1 18:13:33 2018 +0000
Branches: soc-2018-hair-shader-fixes
https://developer.blender.org/rB20b2af9cf5a8bb6b15c6652a02665dcd67eec3f6

Remove mode handling

This commit reverts 21aefa098f4935597a759e199153e9b55279ff8a.
This commit reverts 2ab98cca19cb3acd3da61b5f71a61a1139f1713e.

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

M	intern/cycles/kernel/closure/bsdf_hair_principled.h
M	intern/cycles/kernel/svm/svm_closure.h
M	intern/cycles/render/graph.cpp
M	intern/cycles/render/nodes.cpp
M	intern/cycles/render/nodes.h
M	source/blender/nodes/shader/nodes/node_shader_bsdf_hair_principled.c

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

diff --git a/intern/cycles/kernel/closure/bsdf_hair_principled.h b/intern/cycles/kernel/closure/bsdf_hair_principled.h
index 04b279230a1..6907b5e7f08 100644
--- a/intern/cycles/kernel/closure/bsdf_hair_principled.h
+++ b/intern/cycles/kernel/closure/bsdf_hair_principled.h
@@ -32,11 +32,6 @@ typedef ccl_addr_space struct PrincipledHairExtra {
 	float eta;
 	/* Geometry data. */
 	float4 geom;
-
-	float r;
-	float tt;
-	float trt;
-	float trrt;
 } PrincipledHairExtra;
 
 typedef ccl_addr_space struct PrincipledHairBSDF {
@@ -345,34 +340,29 @@ ccl_device float3 bsdf_principled_hair_eval(KernelGlobals *kg,
 
 	float4 F;
 	float Mp, Np;
-	float4 weight;
 
 	/* Primary specular (R). */
 	Mp = longitudinal_scattering(angles[0], angles[1], sin_theta_o, cos_theta_o, bsdf->m0_roughness);
 	Np = azimuthal_scattering(phi, 0, bsdf->s, gamma_o, gamma_t);
-	weight = make_float4(bsdf->extra->r, bsdf->extra->r, bsdf->extra->r, 1.0f);
-	F  = weight * Ap[0] * Mp * Np;
+	F  = Ap[0] * Mp * Np;
 	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	/* Transmission (TT). */
 	Mp = longitudinal_scattering(angles[2], angles[3], sin_theta_o, cos_theta_o, 0.25f*bsdf->v);
 	Np = azimuthal_scattering(phi, 1, bsdf->s, gamma_o, gamma_t);
-	weight = make_float4(bsdf->extra->tt, bsdf->extra->tt, bsdf->extra->tt, 1.0f);
-	F += weight * Ap[1] * Mp * Np;
+	F += Ap[1] * Mp * Np;
 	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	/* Secondary specular (TRT). */
 	Mp = longitudinal_scattering(angles[4], angles[5], sin_theta_o, cos_theta_o, 4.0f*bsdf->v);
 	Np = azimuthal_scattering(phi, 2, bsdf->s, gamma_o, gamma_t);
-	weight = make_float4(bsdf->extra->trt, bsdf->extra->trt, bsdf->extra->trt, 1.0f);
-	F += weight * Ap[2] * Mp * Np;
+	F += Ap[2] * Mp * Np;
 	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	/* Residual component (TRRT+). */
 	Mp = longitudinal_scattering(sin_theta_i, cos_theta_i, sin_theta_o, cos_theta_o, 4.0f*bsdf->v);
 	Np = M_1_2PI_F;
-	weight = make_float4(bsdf->extra->trrt, bsdf->extra->trrt, bsdf->extra->trrt, 1.0f);
-	F += weight * Ap[3] * Mp * Np;
+	F += Ap[3] * Mp * Np;
 	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	*pdf = F.w;
@@ -466,34 +456,29 @@ ccl_device int bsdf_principled_hair_sample(KernelGlobals *kg,
 
 	float4 F;
 	float Mp, Np;
-	float4 weight;
 
 	/* Primary specular (R). */
 	Mp = longitudinal_scattering(angles[0], angles[1], sin_theta_o, cos_theta_o, bsdf->m0_roughness);
 	Np = azimuthal_scattering(phi, 0, bsdf->s, gamma_o, gamma_t);
-	weight = make_float4(bsdf->extra->r, bsdf->extra->r, bsdf->extra->r, 1.0f);
-	F  = weight * Ap[0] * Mp * Np;
+	F  = Ap[0] * Mp * Np;
 	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	/* Transmission (TT). */
 	Mp = longitudinal_scattering(angles[2], angles[3], sin_theta_o, cos_theta_o, 0.25f*bsdf->v);
 	Np = azimuthal_scattering(phi, 1, bsdf->s, gamma_o, gamma_t);
-	weight = make_float4(bsdf->extra->tt, bsdf->extra->tt, bsdf->extra->tt, 1.0f);
-	F += weight * Ap[1] * Mp * Np;
+	F += Ap[1] * Mp * Np;
 	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	/* Secondary specular (TRT). */
 	Mp = longitudinal_scattering(angles[4], angles[5], sin_theta_o, cos_theta_o, 4.0f*bsdf->v);
 	Np = azimuthal_scattering(phi, 2, bsdf->s, gamma_o, gamma_t);
-	weight = make_float4(bsdf->extra->trt, bsdf->extra->trt, bsdf->extra->trt, 1.0f);
-	F += weight * Ap[2] * Mp * Np;
+	F += Ap[2] * Mp * Np;
 	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	/* Residual component (TRRT+). */
 	Mp = longitudinal_scattering(sin_theta_i, cos_theta_i, sin_theta_o, cos_theta_o, 4.0f*bsdf->v);
 	Np = M_1_2PI_F;
-	weight = make_float4(bsdf->extra->trrt, bsdf->extra->trrt, bsdf->extra->trrt, 1.0f);
-	F += weight * Ap[3] * Mp * Np;
+	F += Ap[3] * Mp * Np;
 	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	*eval = float4_to_float3(F);
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index 85c7e93f246..6b2910df67a 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -741,7 +741,6 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
 			uint4 data_node2 = read_node(kg, offset);
 			uint4 data_node3 = read_node(kg, offset);
 			uint4 data_node4 = read_node(kg, offset);
-			uint4 data_node5 = read_node(kg, offset);
 
 			float3 weight = sd->svm_closure_weight * mix_weight;
 
@@ -765,8 +764,6 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
 				random = stack_load_float_default(stack, random_ofs, data_node3.y);
 			}
 
-			uint primary_specular_ofs, transmission_ofs, secondary_specular_ofs, residual_ofs;
-			decode_node_uchar4(data_node4.x, &primary_specular_ofs, &transmission_ofs, &secondary_specular_ofs, &residual_ofs);
 
 			PrincipledHairBSDF *bsdf = (PrincipledHairBSDF*)bsdf_alloc(sd, sizeof(PrincipledHairBSDF), weight);
 			if(bsdf) {
@@ -785,11 +782,6 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
 				float coat = stack_load_float_default(stack, coat_ofs, data_node2.y);
 				float m0_roughness = 1.0f - clamp(coat, 0.0f, 1.0f);
 
-				float r = stack_load_float_default(stack, primary_specular_ofs, data_node4.z);
-				float tt = stack_load_float_default(stack, transmission_ofs, data_node4.w);
-				float trt = stack_load_float_default(stack, secondary_specular_ofs, data_node5.y);
-				float trrt = stack_load_float_default(stack, residual_ofs, data_node5.z);
-
 				bsdf->N = N;
 				bsdf->roughness = roughness;
 				bsdf->radial_roughness = radial_roughness;
@@ -798,11 +790,6 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
 				bsdf->extra->alpha = alpha;
 				bsdf->extra->eta = ior;
 
-				bsdf->extra->r = r;
-				bsdf->extra->tt = tt;
-				bsdf->extra->trt = trt;
-				bsdf->extra->trrt = trrt;
-
 				switch(parametrization) {
 					case NODE_PRINCIPLED_HAIR_DIRECT_ABSORPTION: {
 						float3 absorption_coefficient = stack_load_float3(stack, absorption_coefficient_ofs);
diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp
index 2b01662a3f8..3a9e2981418 100644
--- a/intern/cycles/render/graph.cpp
+++ b/intern/cycles/render/graph.cpp
@@ -1092,7 +1092,7 @@ int ShaderGraph::get_num_closures()
 			num_closures += VOLUME_STACK_SIZE;
 		}
 		else if(closure_type == CLOSURE_BSDF_HAIR_PRINCIPLED_ID) {
-			num_closures += 5;
+			num_closures += 4;
 		}
 		else {
 			++num_closures;
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 6358a463210..96e7459a48c 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -3122,11 +3122,6 @@ NODE_DEFINE(PrincipledHairBsdfNode)
 	SOCKET_IN_FLOAT(random_color, "Random Color", 0.0f);
 	SOCKET_IN_FLOAT(random, "Random", 0.0f);
 
-	SOCKET_IN_FLOAT(primary_specular, "Primary Specular", 1.0f);
-	SOCKET_IN_FLOAT(transmission, "Transmission", 1.0f);
-	SOCKET_IN_FLOAT(secondary_specular, "Secondary Specular", 1.0f);
-	SOCKET_IN_FLOAT(residual, "Residual", 1.0f);
-
 	SOCKET_IN_NORMAL(normal, "Normal", make_float3(0.0f, 0.0f, 0.0f), SocketType::LINK_NORMAL);
 	SOCKET_IN_FLOAT(surface_mix_weight, "SurfaceMixWeight", 0.0f, SocketType::SVM_INTERNAL);
 
@@ -3172,11 +3167,6 @@ void PrincipledHairBsdfNode::compile(SVMCompiler& compiler)
 	ShaderInput *random_in = input("Random");
 	int attr_random = random_in->link ? SVM_STACK_INVALID : compiler.attribute(ATTR_STD_CURVE_RANDOM);
 
-	ShaderInput *primary_specular_in = input("Primary Specular");
-	ShaderInput *transmission_in = input("Transmission");
-	ShaderInput *secondary_specular_in = input("Secondary Specular");
-	ShaderInput *residual_in = input("Residual");
-
 	/* Encode all parameters into data nodes. */
 	compiler.add_node(NODE_CLOSURE_BSDF,
 		/* Socket IDs can be packed 4 at a time into a single data packet */
@@ -3217,24 +3207,14 @@ void PrincipledHairBsdfNode::compile(SVMCompiler& compiler)
 		__float_as_uint(random_color),
 		__float_as_uint(random_roughness));
 
-	compiler.add_node(
-		compiler.encode_uchar4(
-			compiler.stack_assign_if_linked(primary_specular_in),
-			compiler.stack_assign_if_linked(transmission_in),
-			compiler.stack_assign_if_linked(secondary_specular_in),
-			compiler.stack_assign_if_linked(residual_in)),
-		attr_random,
-		__float_as_uint(primary_specular),
-		__float_as_uint(transmission));
-
 	compiler.add_node(
 		compiler.encode_uchar4(
 			SVM_STACK_INVALID,
 			SVM_STACK_INVALID,
 			SVM_STACK_INVALID,
 			SVM_STACK_INVALID),
-		__float_as_uint(secondary_specular),
-		__float_as_uint(residual),
+		attr_random,
+		SVM_STACK_INVALID,
 		SVM_STACK_INVALID);
 }
 
diff --git a/intern/cycles/render/nodes.h b/intern/cycles/render/nodes.h
index 5b277ed0bb1..28bbe2de05a 100644
--- a/intern/cycles/render/nodes.h
+++ b/intern/cycles/render/nodes.h
@@ -639,11 +639,6 @@ public:
 	/* Absorption coefficient (unfiltered). */
 	float3 absorption_coefficient;
 
-	float primary_specular;
-	float transmission;
-	float secondary_specular;
-	float residual;
-	
 	float3 normal;
 	float surface_mix_weight;
 	/* If linked, here will be the given random number. */
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_principled.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_principled.c
index b64e5a2ca8d..aeeb262a5a6 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_principled.c
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_principled.c
@@ -44,10 +44,6 @@ static bNodeSocketTemplate sh_node_bsdf_hair_principled_in[] = {
 	{	SOCK_FLOAT, 	1, N_("Random Color"),				0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
 	{	SOCK_FLOAT, 	1, N_("Random Roughness"),			0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
 	{	SOCK_FLOAT,		1, N_("Random"),					0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
-	{	SOCK_FLOAT,		1, N_("Primary Specular"),			1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
-	{	SOCK_FLOAT,		1, N_("Transmission"),				1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
-	{	SOCK_FLOAT,		1, N_("Secondary Specular"),		1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
-	{	SOCK_FLOAT,		1, N_("Residual"),					1.0f, 0.0f, 0.0f, 0.0f, 0.0

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list