From d6a183d7b366b4f375d09ea90b2d6f2227f4c851 Mon Sep 17 00:00:00 2001 From: Lukas Stockner Date: Thu, 8 Jun 2023 02:35:16 +0200 Subject: [PATCH 1/2] Cycles: Fix assert for MultiGGX Principled Transmission --- intern/cycles/kernel/closure/bsdf_microfacet.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/intern/cycles/kernel/closure/bsdf_microfacet.h b/intern/cycles/kernel/closure/bsdf_microfacet.h index af8e62da983..7d3dd79030a 100644 --- a/intern/cycles/kernel/closure/bsdf_microfacet.h +++ b/intern/cycles/kernel/closure/bsdf_microfacet.h @@ -221,9 +221,13 @@ ccl_device_forceinline Spectrum microfacet_fresnel(ccl_private const MicrofacetB const bool refraction) { if (bsdf->fresnel_type == MicrofacetFresnel::PRINCIPLED_V1) { - kernel_assert(!refraction); ccl_private FresnelPrincipledV1 *fresnel = (ccl_private FresnelPrincipledV1 *)bsdf->fresnel; - return interpolate_fresnel_color(wi, H, bsdf->ior, fresnel->cspec0); + if (refraction) { + return fresnel->color; + } + else { + return interpolate_fresnel_color(wi, H, bsdf->ior, fresnel->cspec0); + } } else if (bsdf->fresnel_type == MicrofacetFresnel::DIELECTRIC) { const float F = fresnel_dielectric_cos(dot(wi, H), bsdf->ior); From 1460c1c55c9bf327c7a1cf1d947c6617fee65882 Mon Sep 17 00:00:00 2001 From: Lukas Stockner Date: Thu, 8 Jun 2023 03:03:51 +0200 Subject: [PATCH 2/2] Cycles: Fix negative contribution from Velvet BSDF at grazing angles --- intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h b/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h index 382686cde1c..3a06d82e66c 100644 --- a/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h +++ b/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h @@ -105,7 +105,7 @@ ccl_device int bsdf_ashikhmin_velvet_sample(ccl_private const ShaderClosure *sc, float cosHI = fabsf(dot(wi, H)); float cosNH = dot(N, H); - if (!(fabsf(cosNI) > 1e-5f && fabsf(cosNH) < 1.0f - 1e-5f && cosHI > 1e-5f)) { + if (!(cosNI > 1e-5f && fabsf(cosNH) < 1.0f - 1e-5f && cosHI > 1e-5f)) { *pdf = 0.0f; *eval = zero_spectrum(); return LABEL_NONE;