[Bf-blender-cvs] [c4174a44dc3] soc-2018-hair-shader: Actually classify Zootopia shader as BSDF + transmissive

L. E. Segovia noreply at git.blender.org
Sun May 20 23:14:05 CEST 2018


Commit: c4174a44dc311d2fd65ca74c4387bbc6f529df95
Author: L. E. Segovia
Date:   Sun May 20 21:11:53 2018 +0000
Branches: soc-2018-hair-shader
https://developer.blender.org/rBc4174a44dc311d2fd65ca74c4387bbc6f529df95

Actually classify Zootopia shader as BSDF + transmissive

(also reenable diffuse fallback when not using a curve)

Ref T54796

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

M	intern/cycles/kernel/closure/bsdf_hair_principled.h
M	intern/cycles/kernel/svm/svm_types.h

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

diff --git a/intern/cycles/kernel/closure/bsdf_hair_principled.h b/intern/cycles/kernel/closure/bsdf_hair_principled.h
index 6d1af480996..57578f27561 100644
--- a/intern/cycles/kernel/closure/bsdf_hair_principled.h
+++ b/intern/cycles/kernel/closure/bsdf_hair_principled.h
@@ -146,12 +146,12 @@ ccl_device_inline float4 combine_with_energy(float3 c)
 
 ccl_device int bsdf_principled_hair_setup(KernelGlobals *kg, ShaderData *sd, PrincipledHairBSDF *bsdf)
 {
-	// if((sd->type & PRIMITIVE_ALL_CURVE) == 0) {
-	// 	bsdf->type = CLOSURE_BSDF_HAIR_PRINCIPLED_ID;
-	// 	return SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_NEEDS_LCG;
-	// }
+	if((sd->type & PRIMITIVE_ALL_CURVE) == 0) {
+		bsdf->type = CLOSURE_BSDF_DIFFUSE_ID;
+		return SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_NEEDS_LCG;
+	}
 
-    printf("Initializing PrincipledHair closure \n");
+	printf("Initializing PrincipledHair closure \n");
 
 	bsdf->type = CLOSURE_BSDF_HAIR_PRINCIPLED_ID;
 	bsdf->v = clamp(bsdf->v, 0.001f, 0.999f);
@@ -252,13 +252,13 @@ ccl_device float3 bsdf_principled_hair_eval(const ShaderData *sd, const ShaderCl
 
 	float4 F;
 	F  = Ap[0] * azimuthal_scattering(phi, 0, bsdf->s, gamma_o, gamma_t)
-	           * longitudinal_scattering(angles[0], angles[1], sin_theta_o, cos_theta_o, bsdf->v);
+			   * longitudinal_scattering(angles[0], angles[1], sin_theta_o, cos_theta_o, bsdf->v);
 
 	F += Ap[1] * azimuthal_scattering(phi, 1, bsdf->s, gamma_o, gamma_t)
-	           * longitudinal_scattering(angles[2], angles[3], sin_theta_o, cos_theta_o, 0.25f*bsdf->v);
+			   * longitudinal_scattering(angles[2], angles[3], sin_theta_o, cos_theta_o, 0.25f*bsdf->v);
 
 	F += Ap[2] * azimuthal_scattering(phi, 2, bsdf->s, gamma_o, gamma_t)
-	           * longitudinal_scattering(angles[4], angles[5], sin_theta_o, cos_theta_o, 4.0f*bsdf->v);
+			   * longitudinal_scattering(angles[4], angles[5], sin_theta_o, cos_theta_o, 4.0f*bsdf->v);
 
 	F += Ap[3] * longitudinal_scattering(sin_theta_i, cos_theta_i, sin_theta_o, cos_theta_o, 4.0f*bsdf->v) * M_1_2PI_F;
 
@@ -354,13 +354,13 @@ ccl_device int bsdf_principled_hair_sample(ShaderData *sd, const ShaderClosure *
 
 	float4 F;
 	F  = Ap[0] * azimuthal_scattering(phi, 0, bsdf->s, gamma_o, gamma_t)
-	           * longitudinal_scattering(angles[0], angles[1], sin_theta_o, cos_theta_o, bsdf->v);
+			   * longitudinal_scattering(angles[0], angles[1], sin_theta_o, cos_theta_o, bsdf->v);
 
 	F += Ap[1] * azimuthal_scattering(phi, 1, bsdf->s, gamma_o, gamma_t)
-	           * longitudinal_scattering(angles[2], angles[3], sin_theta_o, cos_theta_o, 0.25f*bsdf->v);
+			   * longitudinal_scattering(angles[2], angles[3], sin_theta_o, cos_theta_o, 0.25f*bsdf->v);
 
 	F += Ap[2] * azimuthal_scattering(phi, 2, bsdf->s, gamma_o, gamma_t)
-	           * longitudinal_scattering(angles[4], angles[5], sin_theta_o, cos_theta_o, 4.0f*bsdf->v);
+			   * longitudinal_scattering(angles[4], angles[5], sin_theta_o, cos_theta_o, 4.0f*bsdf->v);
 
 	F += Ap[3] * longitudinal_scattering(sin_theta_i, cos_theta_i, sin_theta_o, cos_theta_o, 4.0f*bsdf->v) * M_1_2PI_F;
 
diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h
index e32177202b6..267a93f50b0 100644
--- a/intern/cycles/kernel/svm/svm_types.h
+++ b/intern/cycles/kernel/svm/svm_types.h
@@ -445,6 +445,7 @@ typedef enum ClosureType {
 	CLOSURE_BSDF_MICROFACET_GGX_GLASS_ID,
 	CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_FRESNEL_ID,
 	CLOSURE_BSDF_SHARP_GLASS_ID,
+	CLOSURE_BSDF_HAIR_PRINCIPLED_ID,
 	CLOSURE_BSDF_HAIR_TRANSMISSION_ID,
 
 	/* Special cases */
@@ -470,8 +471,6 @@ typedef enum ClosureType {
 	CLOSURE_VOLUME_HENYEY_GREENSTEIN_ID,
 
 	CLOSURE_BSDF_PRINCIPLED_ID,
-	CLOSURE_BSDF_HAIR_PRINCIPLED_ID,
-
 	NBUILTIN_CLOSURES
 } ClosureType;



More information about the Bf-blender-cvs mailing list