@@ -563,7 +563,7 @@ struct iridescent_helper
563563
564564 if (hlsl::any (notTIR))
565565 {
566- Dielectric<vector_type>::__polarized (eta12, hlsl::promote<vector_type>(cosTheta_1), R12p, R12s);
566+ Dielectric<vector_type>::__polarized (eta12 * eta12 , hlsl::promote<vector_type>(cosTheta_1), R12p, R12s);
567567
568568 // Reflected part by the base
569569 // if kappa==0, base material is dielectric
@@ -741,7 +741,6 @@ struct Iridescent<T, true, Colorspace NBL_PARTIAL_REQ_BOT(concepts::FloatingPoin
741741 retval.ior1 = params.ior1;
742742 retval.ior2 = params.ior2;
743743 retval.ior3 = params.ior3;
744- retval.iork3 = params.iork3;
745744 retval.eta12 = params.ior2/params.ior1;
746745 retval.eta23 = params.ior3/params.ior2;
747746 return retval;
@@ -753,11 +752,11 @@ struct Iridescent<T, true, Colorspace NBL_PARTIAL_REQ_BOT(concepts::FloatingPoin
753752 base_type::eta12, base_type::eta23, getEtak23 (), clampedCosTheta);
754753 }
755754
756- scalar_type getRefractionOrientedEta () NBL_CONST_MEMBER_FUNC { return base_type::eta23 [0 ]; }
755+ scalar_type getRefractionOrientedEta () NBL_CONST_MEMBER_FUNC { return base_type::ior1[ 0 ] / base_type::ior3 [0 ]; }
757756 OrientedEtaRcps<eta_type> getOrientedEtaRcps () NBL_CONST_MEMBER_FUNC
758757 {
759758 OrientedEtaRcps<eta_type> rcpEta;
760- rcpEta.value = hlsl::promote<eta_type>( 1.0 ) / base_type::eta23 [0 ];
759+ rcpEta.value = base_type::ior1[ 0 ] / base_type::ior3 [0 ];
761760 rcpEta.value2 = rcpEta.value * rcpEta.value;
762761 return rcpEta;
763762 }
@@ -767,9 +766,9 @@ struct Iridescent<T, true, Colorspace NBL_PARTIAL_REQ_BOT(concepts::FloatingPoin
767766 const bool flip = NdotI < scalar_type (0.0 );
768767 this_t orientedFresnel;
769768 orientedFresnel.D = base_type::D;
770- orientedFresnel.ior1 = base_type::ior3;
769+ orientedFresnel.ior1 = hlsl:: mix ( base_type::ior1, base_type:: ior3, flip) ;
771770 orientedFresnel.ior2 = base_type::ior2;
772- orientedFresnel.ior3 = base_type::ior1;
771+ orientedFresnel.ior3 = hlsl:: mix ( base_type::ior3, base_type:: ior1, flip) ;
773772 orientedFresnel.eta12 = hlsl::mix (base_type::eta12, hlsl::promote<vector_type>(1.0 )/base_type::eta23, flip);
774773 orientedFresnel.eta23 = hlsl::mix (base_type::eta23, hlsl::promote<vector_type>(1.0 )/base_type::eta12, flip);
775774 return orientedFresnel;
0 commit comments