Skip to content

Commit b39c937

Browse files
committed
minor changes to dielectric fresnel
1 parent dab9eb5 commit b39c937

File tree

3 files changed

+10
-26
lines changed

3 files changed

+10
-26
lines changed

include/nbl/builtin/hlsl/bxdf/fresnel.hlsl

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ struct Schlick
332332

333333
T operator()(const scalar_type clampedCosTheta)
334334
{
335-
assert(clampedCosTheta > scalar_type(0.0));
335+
assert(clampedCosTheta >= scalar_type(0.0));
336336
assert(hlsl::all(hlsl::promote<T>(0.02) < F0 && F0 <= hlsl::promote<T>(1.0)));
337337
T x = 1.0 - clampedCosTheta;
338338
return F0 + (1.0 - F0) * x*x*x*x*x;
@@ -394,10 +394,11 @@ struct Dielectric
394394
using scalar_type = typename vector_traits<T>::scalar_type;
395395
using vector_type = T;
396396

397-
static Dielectric<T> create(NBL_CONST_REF_ARG(T) eta)
397+
static Dielectric<T> create(NBL_CONST_REF_ARG(OrientedEtas<T>) orientedEta)
398398
{
399399
Dielectric<T> retval;
400-
retval.orientedEta = OrientedEtas<T>::create(1.0, eta);
400+
retval.orientedEta = orientedEta;
401+
retval.orientedEta2 = orientedEta.value * orientedEta.value;
401402
return retval;
402403
}
403404

@@ -417,34 +418,13 @@ struct Dielectric
417418

418419
T operator()(const scalar_type clampedCosTheta)
419420
{
420-
return __call(orientedEta.value * orientedEta.value, clampedCosTheta);
421-
}
422-
423-
OrientedEtas<T> orientedEta;
424-
};
425-
426-
template<typename T NBL_PRIMARY_REQUIRES(concepts::FloatingPointLikeVectorial<T>)
427-
struct DielectricFrontFaceOnly
428-
{
429-
using scalar_type = typename vector_traits<T>::scalar_type;
430-
using vector_type = T;
431-
432-
static DielectricFrontFaceOnly<T> create(NBL_CONST_REF_ARG(T) eta)
433-
{
434-
Dielectric<T> retval;
435-
retval.orientedEta = OrientedEtas<T>::create(1.0, eta);
436-
return retval;
437-
}
438-
439-
T operator()(const scalar_type clampedCosTheta)
440-
{
441-
return Dielectric<T>::__call(orientedEta.value * orientedEta.value, clampedCosTheta);
421+
return __call(orientedEta2, clampedCosTheta);
442422
}
443423

444424
OrientedEtas<T> orientedEta;
425+
T orientedEta2;
445426
};
446427

447-
448428
// gets the sum of all R, T R T, T R^3 T, T R^5 T, ... paths
449429
template<typename T NBL_FUNC_REQUIRES(concepts::FloatingPointLikeScalar<T> || concepts::FloatingPointLikeVectorial<T>)
450430
T thinDielectricInfiniteScatter(const T singleInterfaceReflectance)

include/nbl/builtin/hlsl/bxdf/transmission/beckmann.hlsl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ struct SBeckmannDielectricIsotropic
7373
retval.__base.ndf.A = vector2_type(A, A);
7474
retval.__base.ndf.a2 = A*A;
7575
retval.__base.fresnel.orientedEta = orientedEta;
76+
retval.__base.fresnel.orientedEta2 = orientedEta.value * orientedEta.value;
7677
return retval;
7778
}
7879
static this_t create(NBL_CONST_REF_ARG(creation_type) params)
@@ -231,6 +232,7 @@ struct SBeckmannDielectricAnisotropic<Config NBL_PARTIAL_REQ_BOT(config_concepts
231232
retval.__base.ndf.ax2 = ax*ax;
232233
retval.__base.ndf.ay2 = ay*ay;
233234
retval.__base.fresnel.orientedEta = orientedEta;
235+
retval.__base.fresnel.orientedEta2 = orientedEta.value * orientedEta.value;
234236
return retval;
235237
}
236238
static this_t create(NBL_CONST_REF_ARG(creation_type) params)

include/nbl/builtin/hlsl/bxdf/transmission/ggx.hlsl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ struct SGGXDielectricIsotropic
7474
retval.__base.ndf.a2 = A*A;
7575
retval.__base.ndf.one_minus_a2 = scalar_type(1.0) - A*A;
7676
retval.__base.fresnel.orientedEta = orientedEta;
77+
retval.__base.fresnel.orientedEta2 = orientedEta.value * orientedEta.value;
7778
return retval;
7879
}
7980
static this_t create(NBL_CONST_REF_ARG(creation_type) params)
@@ -245,6 +246,7 @@ struct SGGXDielectricAnisotropic<Config NBL_PARTIAL_REQ_BOT(config_concepts::Mic
245246
retval.__base.ndf.ay2 = ay*ay;
246247
retval.__base.ndf.a2 = ax*ay;
247248
retval.__base.fresnel.orientedEta = orientedEta;
249+
retval.__base.fresnel.orientedEta2 = orientedEta.value * orientedEta.value;
248250
return retval;
249251
}
250252
static this_t create(NBL_CONST_REF_ARG(creation_type) params)

0 commit comments

Comments
 (0)