[Bf-blender-cvs] [00d0f3c2352] soc-2018-hair-shader: Fix more of nirved's OpenCL errors

L. E. Segovia noreply at git.blender.org
Wed May 30 19:35:52 CEST 2018


Commit: 00d0f3c23527b047f3211fd760080fdfcec4037b
Author: L. E. Segovia
Date:   Wed May 30 17:35:35 2018 +0000
Branches: soc-2018-hair-shader
https://developer.blender.org/rB00d0f3c23527b047f3211fd760080fdfcec4037b

Fix more of nirved's OpenCL errors

Thank you nirved for finding and explaining them!

Ref T54796

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

M	intern/cycles/kernel/closure/bsdf_hair_principled.h
M	intern/cycles/kernel/svm/svm_closure.h
M	intern/cycles/util/util_math_float3.h

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

diff --git a/intern/cycles/kernel/closure/bsdf_hair_principled.h b/intern/cycles/kernel/closure/bsdf_hair_principled.h
index fac181d4a1c..f620b13b329 100644
--- a/intern/cycles/kernel/closure/bsdf_hair_principled.h
+++ b/intern/cycles/kernel/closure/bsdf_hair_principled.h
@@ -301,25 +301,25 @@ ccl_device_noinline float3 bsdf_principled_hair_eval(const ShaderData *sd, const
 	Mp = longitudinal_scattering(angles[0], angles[1], sin_theta_o, cos_theta_o, bsdf->v);
 	Np = azimuthal_scattering(phi, 0, bsdf->s, gamma_o, gamma_t);
 	F  = Ap[0] * Mp * Np;
-	kernel_assert(isfinite3_safe(F));
+	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	// 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);
 	F += Ap[1] * Mp * Np;
-	kernel_assert(isfinite3_safe(F));
+	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	// 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);
 	F += Ap[2] * Mp * Np;
-	kernel_assert(isfinite3_safe(F));
+	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	// 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;
 	F += Ap[3] * Mp * Np;
-	kernel_assert(isfinite3_safe(F));
+	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	//printf("%f %f %f %f\n", (double)F.x, (double)F.y, (double)F.z, (double)F.w);
 
@@ -431,25 +431,25 @@ ccl_device int bsdf_principled_hair_sample(KernelGlobals *kg, const ShaderClosur
 	Mp = longitudinal_scattering(angles[0], angles[1], sin_theta_o, cos_theta_o, bsdf->v);
 	Np = azimuthal_scattering(phi, 0, bsdf->s, gamma_o, gamma_t);
 	F  = Ap[0] * Mp * Np;
-	kernel_assert(isfinite3_safe(F));
+	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	// 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);
 	F += Ap[1] * Mp * Np;
-	kernel_assert(isfinite3_safe(F));
+	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	// 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);
 	F += Ap[2] * Mp * Np;
-	kernel_assert(isfinite3_safe(F));
+	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	// 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;
 	F += Ap[3] * Mp * Np;
-	kernel_assert(isfinite3_safe(F));
+	kernel_assert(isfinite3_safe(float4_to_float3(F)));
 
 	*eval = float4_to_float3(F);
 	*pdf = F.w;
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index 6f5c0efb1ef..c3dd3caaabf 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -753,12 +753,13 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
 					default:
 						kernel_assert(!"Invalid Principled Hair parametrization!");
 						//fallthrough
-					case NODE_PRINCIPLED_HAIR_REFLECTANCE:
+					case NODE_PRINCIPLED_HAIR_REFLECTANCE: {
 						float roughness_fac = (((((0.245f*param2) + 5.574f)*param2 - 10.73f)*param2 + 2.532f)*param2 - 0.215f)*param2 + 5.969f;
 						bsdf->sigma = log3(color)/roughness_fac;
 						bsdf->sigma *= bsdf->sigma;
 						break;
 				}
+				}
 
 				sd->flag |= bsdf_principled_hair_setup(bsdf);
 			}
diff --git a/intern/cycles/util/util_math_float3.h b/intern/cycles/util/util_math_float3.h
index aa961b96db5..171b0a8ac9c 100644
--- a/intern/cycles/util/util_math_float3.h
+++ b/intern/cycles/util/util_math_float3.h
@@ -392,11 +392,6 @@ ccl_device_inline bool isfinite3_safe(float3 v)
 	return isfinite_safe(v.x) && isfinite_safe(v.y) && isfinite_safe(v.z);
 }
 
-ccl_device_inline bool isfinite3_safe(float4 v)
-{
-	return isfinite_safe(v.x) && isfinite_safe(v.y) && isfinite_safe(v.z);
-}
-
 ccl_device_inline float3 ensure_finite3(float3 v)
 {
 	if(!isfinite_safe(v.x)) v.x = 0.0f;



More information about the Bf-blender-cvs mailing list