9#include <Common/assertion.h>
10#include <Common/primitive_type.h>
135 , m_recordedProbe{probe}
149 , m_recordedProbe{probe}
#define PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS(EnumType)
Defines operator | and operator & for EnumType.
Definition TBitFlags.h:146
An electromagnetic energy emitting source. The emitted energy can be captured by a Receiver.
Definition Emitter.h:68
Detailed information regarding a ray-primitive intersection.
Definition HitDetail.h:26
math::Vector3R getShadingNormal(ECoordSys coordSys=ECoordSys::World) const
Definition HitDetail.h:108
math::Vector3R getPos(ECoordSys coordSys=ECoordSys::World) const
Definition HitDetail.h:103
math::Vector3R getGeometryNormal(ECoordSys coordSys=ECoordSys::World) const
Definition HitDetail.h:113
Lightweight ray intersection testing and reporting object. If an intersection is found,...
Definition HitProbe.h:27
bool reintersect(const Ray &ray, HitProbe &probe, const Ray &srcRay) const
Intersect the intersected object again with a different ray. The operation is done using a copy of th...
Definition HitProbe.cpp:34
void calcFullHitDetail(const Ray &ray, HitDetail *out_detail) const
Calculates full hit information using this probe. The information is calculated using a copy of the c...
Definition HitProbe.cpp:26
Represents a ray in space.
Definition Ray.h:21
const Time & getTime() const
Get the associated time of this ray.
Definition Ray.h:204
General information about a ray-surface intersection event.
Definition SurfaceHit.h:59
math::Vector3R getGeometryNormal() const
Definition SurfaceHit.h:196
bool reintersect(const Ray &ray, HitProbe &probe) const
Intersect the intersected object again with a different ray.
Definition SurfaceHit.h:154
math::Vector3R getShadingNormal() const
Definition SurfaceHit.h:191
const VolumeOptics * getExteriorOptics() const
Definition SurfaceHit.cpp:79
const Ray & getRay() const
Definition SurfaceHit.h:169
bool hasInteriorOptics() const
Definition SurfaceHit.cpp:49
bool hasSurfaceOptics() const
Definition SurfaceHit.cpp:43
const Ray & getIncidentRay() const
Convenient method for getRay() where getReason() contains ESurfaceHitReason::IncidentRay.
Definition SurfaceHit.h:175
const Emitter * getSurfaceEmitter() const
Definition SurfaceHit.cpp:61
SurfaceHit()
Definition SurfaceHit.h:122
const SurfaceOptics * getSurfaceOptics() const
Definition SurfaceHit.cpp:67
const HitDetail & getDetail() const
Definition SurfaceHit.h:159
SurfaceHit switchChannel(uint32 newChannel) const
Definition SurfaceHit.cpp:28
const VolumeOptics * getInteriorOptics() const
Definition SurfaceHit.cpp:73
math::Vector3R getPos() const
Definition SurfaceHit.h:186
const Time & getTime() const
Definition SurfaceHit.h:181
SurfaceHitReason getReason() const
Definition SurfaceHit.h:164
bool hasExteriorOptics() const
Definition SurfaceHit.cpp:55
Describes how light interacts with a surface.
Definition SurfaceOptics.h:17
Manipulate a value type where each bit is a binary flag.
Definition TBitFlags.h:17
constexpr bool hasExactly(const FlagsSet &flagsSet) const
Checks whether this instance contains exactly the specified flags. No more, no less.
Definition TBitFlags.ipp:99
constexpr bool has(Input singleFlag) const
Checks whether this single flag is fully contained.
Definition TBitFlags.ipp:133
Definition VolumeOptics.h:20
Miscellaneous math utilities.
constexpr auto shr_sampled_pos_bits
Definition SurfaceHit.h:26
constexpr auto shr_incident_ray_bits
Definition SurfaceHit.h:25
uint8 SurfaceHitReasonIntType
Definition SurfaceHit.h:22
constexpr auto shr_sampled_dir_bits
Definition SurfaceHit.h:27
constexpr auto shr_unknown_bits
Definition SurfaceHit.h:24
consteval UIntType flag_bit()
Definition math.h:537
The root for all renderer implementations.
Definition EEngineProject.h:6
ESurfaceHitReason
Definition SurfaceHit.h:32