aboutsummaryrefslogtreecommitdiff
path: root/src/raytracer/raytracescene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/raytracer/raytracescene.cpp')
-rw-r--r--src/raytracer/raytracescene.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/raytracer/raytracescene.cpp b/src/raytracer/raytracescene.cpp
new file mode 100644
index 0000000..f70aa83
--- /dev/null
+++ b/src/raytracer/raytracescene.cpp
@@ -0,0 +1,56 @@
+#include <stdexcept>
+#include "raytracescene.h"
+#include "utils/sceneparser.h"
+#include "raytracer.h"
+#include <iostream>
+
+RayTraceScene::RayTraceScene(int width, int height, const RenderData &metaData) :
+ m_camera(* new Camera(metaData.cameraData))
+{
+ // Optional TODO: implement this. Store whatever you feel is necessary.
+ m_width = width;
+ m_height = height;
+ m_sceneGlobalData = metaData.globalData;
+ m_shapes = metaData.shapes;
+ m_lights = metaData.lights;
+
+ // populate the kd tree
+ m_kdTree = nullptr;
+ std::vector<KdShape> shapes;
+ for (const auto& shape : metaData.shapes) {
+ KdShape s{
+ shape,
+ KdTree::transformBoundingRegion(OBJECT_BOUNDS, shape.ctm)
+ };
+ shapes.push_back(s);
+ }
+ m_bvh = new bvh(shapes, 0);
+}
+
+const int& RayTraceScene::width() const {
+ // Optional TODO: implement the getter or make your own design
+ return m_width;
+}
+
+const int& RayTraceScene::height() const {
+ // Optional TODO: implement the getter or make your own design
+ return m_height;
+}
+
+const SceneGlobalData& RayTraceScene::getGlobalData() const {
+ // Optional TODO: implement the getter or make your own design
+ return m_sceneGlobalData;
+}
+
+const std::vector<RenderShapeData> RayTraceScene::getShapes() const {
+ return m_shapes;
+}
+
+const std::vector<SceneLightData> RayTraceScene::getLights() const {
+ return m_lights;
+}
+
+const Camera& RayTraceScene::getCamera() const {
+ // Optional TODO: implement the getter or make your own design
+ return m_camera;
+}