21 #ifndef LIB_LIGHTMETRICA_SCENE_H
22 #define LIB_LIGHTMETRICA_SCENE_H
24 #include "component.h"
25 #include "math.types.h"
30 #include <boost/signals2.hpp>
51 LM_COMPONENT_INTERFACE_DEF(
"scene");
55 LM_PUBLIC_API
Scene();
56 LM_PUBLIC_API
virtual ~Scene();
60 LM_DISABLE_COPY_AND_MOVE(Scene);
144 virtual bool Build() = 0;
189 std::unique_ptr<Primitives> primitives;
195 #endif // LIB_LIGHTMETRICA_SCENE_H
LM_PUBLIC_API bool PostConfigure()
Definition: scene.cpp:47
LM_PUBLIC_API const Light * SampleLightSelection(Math::Vec2 &lightSampleP, Math::PDFEval &selectionPdf) const
Definition: scene.cpp:79
Definition: component.h:45
virtual bool IntersectTriangles(Ray &ray, Intersection &isect) const =0
void StoreIntersectionFromBarycentricCoords(unsigned int primitiveIndex, unsigned int triangleIndex, const Ray &ray, const Math::Vec2 &b, Intersection &isect) const
Definition: scene.cpp:101
LM_PUBLIC_API bool Intersect(Ray &ray, Intersection &isect) const
Definition: scene.cpp:68
Definition: primitive.h:39
virtual boost::signals2::connection Connect_ReportBuildProgress(const std::function< void(double, bool)> &func)=0
LM_PUBLIC_API AABB GetAABB() const
Definition: scene.cpp:58
virtual bool Configure(const ConfigNode &node)=0
virtual AABB GetAABBTriangles() const =0
LM_PUBLIC_API void Load(Primitives *primitives)
Definition: scene.cpp:42
LM_PUBLIC_API const Camera * MainCamera() const
Definition: scene.cpp:74
Definition: intersection.h:39
LM_PUBLIC_API Math::PDFEval LightSelectionPdf() const
Definition: scene.cpp:96
Definition: confignode.h:37
Definition: primitives.h:43