6#include <Common/assertion.h>
121 return Ng.
dot(vec) * Ns.
dot(vec) > 0.0_r;
125 PH_ASSERT_UNREACHABLE_SECTION();
148 return Ng.
dot(vec) > 0.0_r;
155 return Ns.
dot(vec) > 0.0_r;
168 PH_ASSERT_UNREACHABLE_SECTION();
184 return Ng.
dot(vec) < 0.0_r;
191 return Ns.
dot(vec) < 0.0_r;
204 PH_ASSERT_UNREACHABLE_SECTION();
221 return Ng.
dot(vecA) * Ng.
dot(vecB) > 0.0_r;
228 return Ns.
dot(vecA) * Ns.
dot(vecB) > 0.0_r;
237 vecA.
dot(N) * vecB.
dot(N) > 0.0_r;
242 PH_ASSERT_UNREACHABLE_SECTION();
259 return Ng.
dot(vecA) * Ng.
dot(vecB) < 0.0_r;
266 return Ns.
dot(vecA) * Ns.
dot(vecB) < 0.0_r;
275 vecA.
dot(N) * vecB.
dot(N) < 0.0_r;
280 PH_ASSERT_UNREACHABLE_SECTION();
General information about a ray-surface intersection event.
Definition SurfaceHit.h:59
math::Vector3R getGeometryNormal() const
Definition SurfaceHit.h:196
math::Vector3R getShadingNormal() const
Definition SurfaceHit.h:191
Definition SidednessAgreement.h:32
void adjustForSidednessAgreement(SurfaceHit &X) const
Definition SidednessAgreement.h:285
bool isOppositeHemisphere(const SurfaceHit &X, const math::Vector3R &vecA, const math::Vector3R &vecB) const
Definition SidednessAgreement.h:247
bool isSidednessAgreed(const math::Vector3R &Ng, const math::Vector3R &Ns, const math::Vector3R &vec) const
Definition SidednessAgreement.h:104
bool isBackHemisphere(const SurfaceHit &X, const math::Vector3R &vec) const
Definition SidednessAgreement.h:173
SidednessAgreement()
Definition SidednessAgreement.h:96
bool isSameHemisphere(const SurfaceHit &X, const math::Vector3R &vecA, const math::Vector3R &vecB) const
Definition SidednessAgreement.h:209
bool isFrontHemisphere(const SurfaceHit &X, const math::Vector3R &vec) const
Definition SidednessAgreement.h:137
T dot(const Derived &rhs) const
Definition TVectorNBase.ipp:14
Light transport algorithms.
Definition enums.h:6
ESidednessPolicy
Definition SidednessAgreement.h:17