@@ -48,10 +48,10 @@ struct DualMeasureQuantQuery
4848 // note in pbrt it's `abs(VdotH)*abs(LdotH)`
4949 // we leverage the fact that under transmission the sign must always be negative and rest of the code already accounts for that
5050 scalar_type getVdotHLdotH () NBL_CONST_MEMBER_FUNC { return VdotHLdotH; }
51- scalar_type getNeg_rcp2_VdotH_etaLdotH () NBL_CONST_MEMBER_FUNC { return neg_rcp2_VdotH_etaLdotH ; }
51+ scalar_type getNeg_rcp2_refractionDenom () NBL_CONST_MEMBER_FUNC { return neg_rcp2_refractionDenom ; }
5252
5353 scalar_type VdotHLdotH;
54- scalar_type neg_rcp2_VdotH_etaLdotH ;
54+ scalar_type neg_rcp2_refractionDenom ;
5555};
5656
5757
@@ -71,14 +71,14 @@ struct createDualMeasureQuantity_helper
7171{
7272 using scalar_type = typename vector_traits<T>::scalar_type;
7373
74- static SDualMeasureQuant<T> __call (const T microfacetMeasure, scalar_type clampedNdotV, scalar_type clampedNdotL, scalar_type VdotHLdotH, scalar_type neg_rcp2_VdotH_etaLdotH )
74+ static SDualMeasureQuant<T> __call (const T microfacetMeasure, scalar_type clampedNdotV, scalar_type clampedNdotL, scalar_type VdotHLdotH, scalar_type neg_rcp2_refractionDenom )
7575 {
7676 assert (clampedNdotV >= scalar_type (0.0 ) && clampedNdotL >= scalar_type (0.0 ));
7777 SDualMeasureQuant<T> retval;
7878 retval.microfacetMeasure = microfacetMeasure;
7979 // do constexpr booleans first so optimizer picks up this and short circuits
8080 const bool transmitted = reflect_refract==MTT_REFRACT || (reflect_refract!=MTT_REFLECT && VdotHLdotH < scalar_type (0.0 ));
81- retval.projectedLightMeasure = microfacetMeasure * hlsl::mix (scalar_type (0.25 ),VdotHLdotH*neg_rcp2_VdotH_etaLdotH ,transmitted)/clampedNdotV;
81+ retval.projectedLightMeasure = microfacetMeasure * hlsl::mix (scalar_type (0.25 ),VdotHLdotH*neg_rcp2_refractionDenom ,transmitted)/clampedNdotV;
8282 // VdotHLdotH is negative under transmission, so thats denominator is negative
8383 return retval;
8484 }
@@ -93,14 +93,14 @@ SDualMeasureQuant<T> createDualMeasureQuantity(const T specialMeasure, typename
9393 return impl::createDualMeasureQuantity_helper<T,MTT_REFLECT>::__call (specialMeasure,clampedNdotV,clampedNdotL,dummy,dummy);
9494}
9595template<typename T, MicrofacetTransformTypes reflect_refract>
96- SDualMeasureQuant<T> createDualMeasureQuantity (const T specialMeasure, typename vector_traits<T>::scalar_type clampedNdotV, typename vector_traits<T>::scalar_type clampedNdotL, typename vector_traits<T>::scalar_type VdotHLdotH, typename vector_traits<T>::scalar_type neg_rcp2_VdotH_etaLdotH )
96+ SDualMeasureQuant<T> createDualMeasureQuantity (const T specialMeasure, typename vector_traits<T>::scalar_type clampedNdotV, typename vector_traits<T>::scalar_type clampedNdotL, typename vector_traits<T>::scalar_type VdotHLdotH, typename vector_traits<T>::scalar_type neg_rcp2_refractionDenom )
9797{
98- return impl::createDualMeasureQuantity_helper<T,reflect_refract>::__call (specialMeasure,clampedNdotV,clampedNdotL,VdotHLdotH,neg_rcp2_VdotH_etaLdotH );
98+ return impl::createDualMeasureQuantity_helper<T,reflect_refract>::__call (specialMeasure,clampedNdotV,clampedNdotL,VdotHLdotH,neg_rcp2_refractionDenom );
9999}
100100template<typename T, MicrofacetTransformTypes reflect_refract, class Query>
101101SDualMeasureQuant<T> createDualMeasureQuantity (const T specialMeasure, typename vector_traits<T>::scalar_type clampedNdotV, typename vector_traits<T>::scalar_type clampedNdotL, NBL_CONST_REF_ARG (Query) query)
102102{
103- return impl::createDualMeasureQuantity_helper<T,reflect_refract>::__call (specialMeasure,clampedNdotV,clampedNdotL,query.getVdotHLdotH (),query.getNeg_rcp2_VdotH_etaLdotH ());
103+ return impl::createDualMeasureQuantity_helper<T,reflect_refract>::__call (specialMeasure,clampedNdotV,clampedNdotL,query.getVdotHLdotH (),query.getNeg_rcp2_refractionDenom ());
104104}
105105
106106}
0 commit comments