#pragma once #include "utils/scenedata.h" #include "utils/sceneparser.h" #include "camera/camera.h" #include "accelerate/kdtree.h" #include "accelerate/bvh.h" // A class representing a scene to be ray-traced // Feel free to make your own design choices for RayTraceScene, the functions below are all optional / for your convenience. // You can either implement and use these getters, or make your own design. // If you decide to make your own design, feel free to delete these as TAs won't rely on them to grade your assignments. class RayTraceScene { public: RayTraceScene(int width, int height, const RenderData &metaData, int depth=500); // The getter of the width of the scene const int& width() const; // The getter of the height of the scene const int& height() const; // The getter of the global data of the scene const SceneGlobalData& getGlobalData() const; const std::vector getShapes() const; const std::vector getLights() const; // The getter of the shared pointer to the camera instance of the scene const Camera getCamera() const; KdTree *m_kdTree; bvh *m_bvh; const int &depth() const; Camera& m_camera; private: int m_width; int m_height; SceneGlobalData m_sceneGlobalData; std::vectorm_shapes; std::vectorm_lights; int m_depth; };