[Bf-blender-cvs] [63ee7fabf6c] soc-2018-hair-shader: Publish debug code for Lukas

L. E. Segovia noreply at git.blender.org
Sun May 20 19:35:34 CEST 2018


Commit: 63ee7fabf6c75a355549d75bc2ef2bc30688fb2b
Author: L. E. Segovia
Date:   Sun May 20 17:33:22 2018 +0000
Branches: soc-2018-hair-shader
https://developer.blender.org/rB63ee7fabf6c75a355549d75bc2ef2bc30688fb2b

Publish debug code for Lukas

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

M	intern/cycles/kernel/closure/bsdf.h
M	intern/cycles/kernel/closure/bsdf_hair_principled.h
M	intern/cycles/kernel/svm/svm_closure.h

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

diff --git a/intern/cycles/kernel/closure/bsdf.h b/intern/cycles/kernel/closure/bsdf.h
index 0f6d7450003..3a5edb8ce90 100644
--- a/intern/cycles/kernel/closure/bsdf.h
+++ b/intern/cycles/kernel/closure/bsdf.h
@@ -32,7 +32,6 @@
 #include "kernel/closure/bsdf_principled_sheen.h"
 #include "kernel/closure/bssrdf.h"
 #include "kernel/closure/volume.h"
-
 CCL_NAMESPACE_BEGIN
 
 /* Returns the square of the roughness of the closure if it has roughness,
@@ -74,16 +73,18 @@ ccl_device_inline float bsdf_get_roughness_squared(const ShaderClosure *sc)
 }
 
 ccl_device_forceinline int bsdf_sample(KernelGlobals *kg,
-                                       ShaderData *sd,
-                                       const ShaderClosure *sc,
-                                       float randu,
-                                       float randv,
-                                       float3 *eval,
-                                       float3 *omega_in,
-                                       differential3 *domega_in,
-                                       float *pdf)
+									   ShaderData *sd,
+									   const ShaderClosure *sc,
+									   float randu,
+									   float randv,
+									   float3 *eval,
+									   float3 *omega_in,
+									   differential3 *domega_in,
+									   float *pdf)
 {
 	int label;
+    
+    printf("sample: %i\n", sc->type);
 
 	switch(sc->type) {
 		case CLOSURE_BSDF_DIFFUSE_ID:
@@ -134,12 +135,12 @@ ccl_device_forceinline int bsdf_sample(KernelGlobals *kg,
 		case CLOSURE_BSDF_MICROFACET_MULTI_GGX_ID:
 		case CLOSURE_BSDF_MICROFACET_MULTI_GGX_FRESNEL_ID:
 			label = bsdf_microfacet_multi_ggx_sample(kg, sc, sd->Ng, sd->I, sd->dI.dx, sd->dI.dy, randu, randv,
-			        eval, omega_in,  &domega_in->dx, &domega_in->dy, pdf, &sd->lcg_state);
+					eval, omega_in,  &domega_in->dx, &domega_in->dy, pdf, &sd->lcg_state);
 			break;
 		case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID:
 		case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_FRESNEL_ID:
 			label = bsdf_microfacet_multi_ggx_glass_sample(kg, sc, sd->Ng, sd->I, sd->dI.dx, sd->dI.dy, randu, randv,
-			        eval, omega_in,  &domega_in->dx, &domega_in->dy, pdf, &sd->lcg_state);
+					eval, omega_in,  &domega_in->dx, &domega_in->dy, pdf, &sd->lcg_state);
 			break;
 		case CLOSURE_BSDF_MICROFACET_BECKMANN_ID:
 		case CLOSURE_BSDF_MICROFACET_BECKMANN_ANISO_ID:
@@ -172,9 +173,9 @@ ccl_device_forceinline int bsdf_sample(KernelGlobals *kg,
 			label = bsdf_hair_transmission_sample(sc, sd->Ng, sd->I, sd->dI.dx, sd->dI.dy, randu, randv,
 				eval, omega_in, &domega_in->dx, &domega_in->dy, pdf);
 			break;
-        case CLOSURE_BSDF_HAIR_PRINCIPLED_ID:
-            label = bsdf_principled_hair_sample(sd, sc, randu, randv, eval, omega_in, &domega_in->dx, &domega_in->dy, pdf);
-            break;
+		case CLOSURE_BSDF_HAIR_PRINCIPLED_ID:
+			label = bsdf_principled_hair_sample(sd, sc, randu, randv, eval, omega_in, &domega_in->dx, &domega_in->dy, pdf);
+			break;
 #ifdef __PRINCIPLED__
 		case CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID:
 		case CLOSURE_BSDF_BSSRDF_PRINCIPLED_ID:
@@ -217,17 +218,16 @@ ccl_device
 ccl_device_forceinline
 #endif
 float3 bsdf_eval(KernelGlobals *kg,
-                 ShaderData *sd,
-                 const ShaderClosure *sc,
-                 const float3 omega_in,
-                 float *pdf)
+				 ShaderData *sd,
+				 const ShaderClosure *sc,
+				 const float3 omega_in,
+				 float *pdf)
 {
 	float3 eval;
+    
+    printf("eval: %i\n", sc->type);
 
-    if(sc->type == CLOSURE_BSDF_HAIR_PRINCIPLED_ID) {
-        eval = bsdf_principled_hair_eval(sd, sc, omega_in, pdf);
-    }
-    else if(dot(sd->Ng, omega_in) >= 0.0f) {
+	if(dot(sd->Ng, omega_in) >= 0.0f) {
 		switch(sc->type) {
 			case CLOSURE_BSDF_DIFFUSE_ID:
 			case CLOSURE_BSDF_BSSRDF_ID:
@@ -291,6 +291,10 @@ float3 bsdf_eval(KernelGlobals *kg,
 			case CLOSURE_BSDF_GLOSSY_TOON_ID:
 				eval = bsdf_glossy_toon_eval_reflect(sc, sd->I, omega_in, pdf);
 				break;
+			case CLOSURE_BSDF_HAIR_PRINCIPLED_ID:
+                printf("eval'ing hair \n");
+				eval = bsdf_principled_hair_eval(sd, sc, omega_in, pdf);
+				break;
 			case CLOSURE_BSDF_HAIR_REFLECTION_ID:
 				eval = bsdf_hair_reflection_eval_reflect(sc, sd->I, omega_in, pdf);
 				break;
@@ -321,7 +325,7 @@ float3 bsdf_eval(KernelGlobals *kg,
 		switch(sc->type) {
 			case CLOSURE_BSDF_DIFFUSE_ID:
 			case CLOSURE_BSDF_BSSRDF_ID:
-				eval = bsdf_diffuse_eval_transmit(sc, sd->I, omega_in, pdf);
+                eval = bsdf_diffuse_eval_transmit(sc, sd->I, omega_in, pdf);
 				break;
 #ifdef __SVM__
 			case CLOSURE_BSDF_OREN_NAYAR_ID:
@@ -373,6 +377,10 @@ float3 bsdf_eval(KernelGlobals *kg,
 			case CLOSURE_BSDF_GLOSSY_TOON_ID:
 				eval = bsdf_glossy_toon_eval_transmit(sc, sd->I, omega_in, pdf);
 				break;
+			case CLOSURE_BSDF_HAIR_PRINCIPLED_ID:
+                printf("eval'ing hair 2\n");
+				eval = bsdf_principled_hair_eval(sd, sc, omega_in, pdf);
+				break;
 			case CLOSURE_BSDF_HAIR_REFLECTION_ID:
 				eval = bsdf_hair_reflection_eval_transmit(sc, sd->I, omega_in, pdf);
 				break;
diff --git a/intern/cycles/kernel/closure/bsdf_hair_principled.h b/intern/cycles/kernel/closure/bsdf_hair_principled.h
index c4b4de7ad46..6d1af480996 100644
--- a/intern/cycles/kernel/closure/bsdf_hair_principled.h
+++ b/intern/cycles/kernel/closure/bsdf_hair_principled.h
@@ -43,7 +43,7 @@ ccl_device_inline float cos_from_sin(const float s)
 
 /* Gives the change in direction in the normal plane for the given angles and p-th-order scattering. */
 ccl_device_inline float delta_phi(int p, float gamma_o, float gamma_t) {
-	return 2.0f*(p * (gamma_t + M_PI_2_F) - gamma_o);
+	return 2.0f * p * gamma_t - 2.0f * gamma_o + p * M_PI_F;
 }
 
 ccl_device_inline float wrap_angle(float a)
@@ -100,7 +100,7 @@ ccl_device_inline float trimmed_logistic(float x, float s)
 	/* The logistic distribution is symmetric and centered around zero,
 	 * so logistic_cdf(x, s) = 1 - logistic_cdf(-x, s).
 	 * Therefore, logistic_cdf(x, s)-logistic_cdf(-x, s) = 1 - 2*logistic_cdf(-x, s) */
-	float scaling_fac = 1.0f - 2.0f*logistic_cdf(-M_PI_F, s);
+	float scaling_fac = 1.0f - 2.0f*logistic_cdf(-x, s);
 	float val = logistic(x, s);
 	return val / scaling_fac;
 }
@@ -146,10 +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_DIFFUSE_ID;
-		return SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_NEEDS_LCG;
-	}
+	// 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;
+	// }
+
+    printf("Initializing PrincipledHair closure \n");
 
 	bsdf->type = CLOSURE_BSDF_HAIR_PRINCIPLED_ID;
 	bsdf->v = clamp(bsdf->v, 0.001f, 0.999f);
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index 2096f8f2c53..c4aa6e349c9 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -722,6 +722,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
 			break;
 		}
         case CLOSURE_BSDF_HAIR_PRINCIPLED_ID: {
+            printf("Creating PrincipledHair closure \n");
             float3 weight = sd->svm_closure_weight * mix_weight;
 
             uint offset_ofs, ior_ofs, color_ofs, parametrization;



More information about the Bf-blender-cvs mailing list