19#ifndef _RAYTRACING_ENGINE_H
20#define _RAYTRACING_ENGINE_H
31 enum RayTracingStageProgressType {
33 PROGRESS_TYPE_TRANSFER,
34 PROGRESS_TYPE_KIRCHHOFF,
40 virtual void stageProgress(
41 RayTracingStageProgressType,
45 virtual void rayProgress(uint64_t num, uint64_t total);
47 virtual uint64_t rayNotifyInterval()
const;
48 virtual bool cancelled()
const;
52 std::list<Ray> m_rays;
53 bool m_raysDirty =
false;
56 bool m_beamDirty =
true;
57 bool m_notificationPendig =
false;
59 std::string m_stageName;
60 size_t m_currStage = 0;
61 size_t m_numStages = 0;
64 void toRays(
bool keepPruned =
false);
68 struct timeval m_start;
74 void rayProgress(uint64_t num, uint64_t total);
84 setCurrentStage(std::string
const &name,
size_t current,
size_t num)
87 m_currStage = current;
91 virtual RayBeam *makeBeam(
bool nonSeq =
false);
110 Vec3 const &direction,
113 void pushRays(std::list<Ray>
const &);
121 void updateOrigins();
125 void transmitThroughIntercepted();
129 std::list<Ray>
const &getRays(
bool keepPruned =
false);
135 void setStartTime(
struct timeval
const &tv);
136 struct timeval lastTick() const;
138 uint64_t tack()
const;
141 bool notificationPending()
const;
142 void clearPendingNotifications();
143 bool cancelled()
const;
146 RayTracingStageProgressType,
Definition: RayTracingEngine.h:51
Definition: RayTracingEngine.h:38
Definition: OpticalElement.h:33