Commit: 619250f7f1de9358461881a02327cd5e7b8f8754 Author: Lukas Stockner Date: Mon Oct 31 20:16:42 2022 +0100 Branches: principled-v2 https://developer.blender.org/rB619250f7f1de9358461881a02327cd5e7b8f8754
Attempt to fix Metal compilation issues =================================================================== M intern/cycles/kernel/closure/bsdf_microfacet.h M intern/cycles/kernel/closure/bsdf_microfacet_glass.h M intern/cycles/kernel/closure/bsdf_microfacet_util.h M intern/cycles/kernel/closure/bsdf_principled_sheen.h M intern/cycles/kernel/closure/bsdf_util.h M intern/cycles/kernel/svm/closure_principled.h M intern/cycles/util/math_float2.h M intern/cycles/util/math_float3.h =================================================================== diff --git a/intern/cycles/kernel/closure/bsdf_microfacet.h b/intern/cycles/kernel/closure/bsdf_microfacet.h index 13729df2985..8e4e4345a14 100644 --- a/intern/cycles/kernel/closure/bsdf_microfacet.h +++ b/intern/cycles/kernel/closure/bsdf_microfacet.h @@ -60,7 +60,7 @@ ccl_device_forceinline Spectrum reflection_color(ccl_private const MicrofacetBsd return make_spectrum(f); } else if (bsdf->type == CLOSURE_BSDF_MICROFACET_GGX_FRESNEL_V2_ID) { - MicrofacetExtrav2 *extra = (MicrofacetExtrav2 *)bsdf->extra; + ccl_private MicrofacetExtrav2 *extra = (ccl_private MicrofacetExtrav2 *)bsdf->extra; Spectrum F = zero_spectrum(); float cosHL = dot(H, L); @@ -173,7 +173,7 @@ ccl_device int bsdf_microfacet_ggx_fresnel_v2_setup(KernelGlobals kg, bsdf->alpha_x = saturatef(bsdf->alpha_x); bsdf->alpha_y = saturatef(bsdf->alpha_y); - MicrofacetExtrav2 *extra = (MicrofacetExtrav2 *)bsdf->extra; + ccl_private MicrofacetExtrav2 *extra = (ccl_private MicrofacetExtrav2 *)bsdf->extra; if (metallic > 0.0f) { Spectrum metal_Fss = fresnel_metallic_Fss(extra->metal_base, extra->metal_edge_factor); diff --git a/intern/cycles/kernel/closure/bsdf_microfacet_glass.h b/intern/cycles/kernel/closure/bsdf_microfacet_glass.h index 160a9a8b76c..ad986eb15a6 100644 --- a/intern/cycles/kernel/closure/bsdf_microfacet_glass.h +++ b/intern/cycles/kernel/closure/bsdf_microfacet_glass.h @@ -68,7 +68,7 @@ ccl_device int bsdf_microfacet_multi_ggx_glass_fresnel_setup(KernelGlobals kg, ccl_device_inline Spectrum glass_fresnel(ccl_private const MicrofacetBsdf *bsdf, float cosTheta, - float *reflect_pdf) + ccl_private float *reflect_pdf) { if (bsdf->T.x > 0.0f) { Spectrum F = fresnel_dielectric_thin_film(cosTheta, bsdf->ior, bsdf->T.y, bsdf->T.x); @@ -155,7 +155,7 @@ ccl_device Spectrum bsdf_microfacet_ggx_glass_eval_transmit(ccl_private const Mi float reflect_pdf; Spectrum F = glass_fresnel(bsdf, cosMO, &reflect_pdf); - if (F == one_spectrum()) { + if (is_one(F)) { /* TIR */ *pdf = 0.0f; return zero_spectrum(); diff --git a/intern/cycles/kernel/closure/bsdf_microfacet_util.h b/intern/cycles/kernel/closure/bsdf_microfacet_util.h index 4a41155b3f7..661a8e87d33 100644 --- a/intern/cycles/kernel/closure/bsdf_microfacet_util.h +++ b/intern/cycles/kernel/closure/bsdf_microfacet_util.h @@ -162,7 +162,7 @@ ccl_device_inline float dielectric_fresnel_Fss(float eta) */ ccl_device_inline void fresnel_dielectric_complex( - float cosTheta1, float eta1, float eta2, float2 *R, float2 *phi) + float cosTheta1, float eta1, float eta2, ccl_private float2 *R, ccl_private float2 *phi) { float sinTheta1Sqr = 1.0f - sqr(cosTheta1); diff --git a/intern/cycles/kernel/closure/bsdf_principled_sheen.h b/intern/cycles/kernel/closure/bsdf_principled_sheen.h index 949a6f8f567..6374c86d010 100644 --- a/intern/cycles/kernel/closure/bsdf_principled_sheen.h +++ b/intern/cycles/kernel/closure/bsdf_principled_sheen.h @@ -73,7 +73,7 @@ ccl_device_inline float sheen_v2_lambda(float mu, float w) } ccl_device_inline Spectrum -sheen_v2_eval(float3 N, float3 V, float3 L, float3 H, float r, float *pdf) +sheen_v2_eval(float3 N, float3 V, float3 L, float3 H, float r, ccl_private float *pdf) { float cosNH = dot(N, H), cosNV = dot(N, V), cosNL = dot(N, L); diff --git a/intern/cycles/kernel/closure/bsdf_util.h b/intern/cycles/kernel/closure/bsdf_util.h index 47a37a43c87..b1c5a9375dd 100644 --- a/intern/cycles/kernel/closure/bsdf_util.h +++ b/intern/cycles/kernel/closure/bsdf_util.h @@ -105,7 +105,7 @@ ccl_device float schlick_fresnel(float u) */ ccl_device Spectrum metallic_edge_factor(Spectrum F0, Spectrum F82) { - if (F82 == one_spectrum()) { + if (is_one(F82)) { return zero_spectrum(); } diff --git a/intern/cycles/kernel/svm/closure_principled.h b/intern/cycles/kernel/svm/closure_principled.h index 115d4aff12d..db1d850f5a2 100644 --- a/intern/cycles/kernel/svm/closure_principled.h +++ b/intern/cycles/kernel/svm/closure_principled.h @@ -499,7 +499,7 @@ ccl_device_inline Spectrum principled_v2_clearcoat(KernelGlobals kg, float3 N = stack_valid(normal_offset) ? stack_load_float3(stack, normal_offset) : sd->N; Spectrum tint = saturate(rgb_to_spectrum(stack_load_float3(stack, tint_offset))); - if (tint != one_spectrum()) { + if (!is_one(tint)) { /* Tint is normalized to perpendicular incidence. * Therefore, if we define the coating thickness as length 1, the length along the ray is * t = sqrt(1+tan^2(angle(N, I))) = sqrt(1+tan^2(acos(dotNI))) = 1 / dotNI. @@ -649,7 +649,7 @@ ccl_device_inline float principled_v2_specular(KernelGlobals kg, bsdf->N = N; bsdf->ior = ior; bsdf->T = T; - bsdf->extra = (MicrofacetExtra *)extra; + bsdf->extra = (ccl_private MicrofacetExtra *)extra; bsdf->alpha_x = sqr(roughness) / aspect; bsdf->alpha_y = sqr(roughness) * aspect; @@ -704,7 +704,7 @@ ccl_device void svm_node_closure_principled_v2(KernelGlobals kg, uint4 node_2, float mix_weight, int path_flag, - int *offset) + ccl_private int *offset) { Spectrum weight = sd->svm_closure_weight * mix_weight; @@ -756,7 +756,7 @@ ccl_device void svm_node_closure_principled(KernelGlobals kg, uint4 node_2, float mix_weight, int path_flag, - int *offset) + ccl_private int *offset) { /* Load distribution type. */ uint packed_distribution, dummy; diff --git a/intern/cycles/util/math_float2.h b/intern/cycles/util/math_float2.h index ab0f3f9f16e..60686561f9b 100644 --- a/intern/cycles/util/math_float2.h +++ b/intern/cycles/util/math_float2.h @@ -36,7 +36,6 @@ ccl_device_inline bool operator==(const float2 &a, const float2 &b); ccl_device_inline bool operator!=(const float2 &a, const float2 &b); ccl_device_inline bool is_zero(const float2 &a); -ccl_device_inline float average(const float2 &a); ccl_device_inline float distance(const float2 &a, const float2 &b); ccl_device_inline float dot(const float2 &a, const float2 &b); ccl_device_inline float cross(const float2 &a, const float2 &b); @@ -52,11 +51,12 @@ ccl_device_inline float2 fabs(const float2 &a); ccl_device_inline float2 as_float2(const float4 &a); ccl_device_inline float2 interp(const float2 &a, const float2 &b, float t); ccl_device_inline float2 floor(const float2 &a); -ccl_device_inline float2 sqr(const float2 &a); ccl_device_inline float2 sqrt(const float2 &a); #endif /* !__KERNEL_METAL__ */ ccl_device_inline float2 safe_divide_float2_float(const float2 a, const float b); +ccl_device_inline float2 sqr(const float2 &a); +ccl_device_inline float average(const float2 &a); /******************************************************************************* * Definition. @@ -170,11 +170,6 @@ ccl_device_inline bool is_zero(const float2 &a) return (a.x == 0.0f && a.y == 0.0f); } -ccl_device_inline float average(const float2 &a) -{ - return (a.x + a.y) * (1.0f / 2.0f); -} - ccl_device_inline float distance(const float2 &a, const float2 &b) { return len(a - b); @@ -232,11 +227,6 @@ ccl_device_inline float2 as_float2(const float4 &a) return make_float2(a.x, a.y); } -ccl_device_inline float2 sqr(const float2 &a) -{ - return a * a; -} - ccl_device_inline float2 sqrt(const float2 &a) { return make_float2(sqrtf(a.x), sqrtf(a.y)); @@ -274,6 +264,16 @@ ccl_device_inline float2 safe_divide_float2_float(const float2 a, const float b) return (b != 0.0f) ? a / b : zero_float2(); } +ccl_device_inline float average(const float2 &a) +{ + return (a.x + a.y) * (1.0f / 2.0f); +} + +ccl_device_inline float2 sqr(const float2 &a) +{ + return a * a; +} + CCL_NAMESPACE_END #endif /* __UTIL_MATH_FLOAT2_H__ */ diff --git a/intern/cycles/util/math_float3.h b/intern/cycles/util/math_float3.h index eec7122b9dc..e43c80761f3 100644 --- a/intern/cycles/util/math_float3.h +++ b/intern/cycles/util/math_float3.h @@ -69,6 +69,7 @@ ccl_device_inline float3 interp(float3 a, float3 b, float t); ccl_device_inline float3 sqr(float3 a); ccl_device_inline bool is_zero(const float3 a); +ccl_device_inline bool is_one(const float3 a); ccl_device_inline float reduce_add(const float3 a); ccl_device_inline float average(const float3 a); ccl_device_inline bool isequal(const float3 a, const float3 b); @@ -505,6 +506,15 @@ ccl_device_inline bool is_zero(const float3 a) #endif } +ccl_device_inline bool is_one(const float3 a) +{ +#ifdef __KERNEL_SSE__ + return a == make_float3(1.0f); +#else + return (a.x == 1.0f && a.y == 1.0f && a.z == 1.0f); +#endif +} + ccl_device_inline float reduce_add(const float3 a) { #if defined(__KERNEL_SSE__) && defined(__KERNEL_NEON__) _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs