diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/accelerate/myqtconcurrent.cpp | 1 | ||||
-rw-r--r-- | src/raytracer/raytracer.cpp | 3 | ||||
-rw-r--r-- | src/raytracer/raytracescene.cpp | 9 | ||||
-rw-r--r-- | src/raytracer/raytracescene.h | 7 |
4 files changed, 16 insertions, 4 deletions
diff --git a/src/accelerate/myqtconcurrent.cpp b/src/accelerate/myqtconcurrent.cpp index 211317b..686d28f 100644 --- a/src/accelerate/myqtconcurrent.cpp +++ b/src/accelerate/myqtconcurrent.cpp @@ -18,6 +18,7 @@ void RayTracer::renderParallel(RGBA *imageData, const RayTraceScene &scene) float cameraDepth = 1.f; float viewplaneHeight = 2.f*cameraDepth*std::tan(camera.getHeightAngle() / 2.f); float viewplaneWidth = cameraDepth*viewplaneHeight*((float)scene.width()/(float)scene.height()); + float viewplaneDepth = cameraDepth*viewplaneHeight * ((float)scene.depth() / (float)scene.height()); QList<pixelRoutineArgs> l{}; // for (int imageRow = 0; imageRow < scene.height(); imageRow++) { diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp index 0746225..11876ab 100644 --- a/src/raytracer/raytracer.cpp +++ b/src/raytracer/raytracer.cpp @@ -171,6 +171,7 @@ void RayTracer::sceneChanged(QLabel* imageLabel) { int width = 576; int height = 432; + int depth = 500; // render the scene QImage image = QImage(width, height, QImage::Format_RGBX8888); @@ -178,7 +179,7 @@ void RayTracer::sceneChanged(QLabel* imageLabel) { RGBA *data = reinterpret_cast<RGBA *>(image.bits()); - RayTraceScene rtScene{ width, height, m_metaData }; + RayTraceScene rtScene{ width, height,m_metaData, depth }; this->render(data, rtScene); QImage flippedImage = image.mirrored(false, false); diff --git a/src/raytracer/raytracescene.cpp b/src/raytracer/raytracescene.cpp index f70aa83..77541e3 100644 --- a/src/raytracer/raytracescene.cpp +++ b/src/raytracer/raytracescene.cpp @@ -4,12 +4,13 @@ #include "raytracer.h" #include <iostream> -RayTraceScene::RayTraceScene(int width, int height, const RenderData &metaData) : +RayTraceScene::RayTraceScene(int width, int height, const RenderData &metaData, int depth) : m_camera(* new Camera(metaData.cameraData)) { // Optional TODO: implement this. Store whatever you feel is necessary. m_width = width; m_height = height; + m_depth = depth; m_sceneGlobalData = metaData.globalData; m_shapes = metaData.shapes; m_lights = metaData.lights; @@ -37,6 +38,12 @@ const int& RayTraceScene::height() const { return m_height; } + +const int& RayTraceScene::depth() const { + // Optional TODO: implement the getter or make your own design + return m_depth; +} + const SceneGlobalData& RayTraceScene::getGlobalData() const { // Optional TODO: implement the getter or make your own design return m_sceneGlobalData; diff --git a/src/raytracer/raytracescene.h b/src/raytracer/raytracescene.h index b61bd2f..a380adc 100644 --- a/src/raytracer/raytracescene.h +++ b/src/raytracer/raytracescene.h @@ -14,9 +14,9 @@ class RayTraceScene { public: - RayTraceScene(int width, int height, const RenderData &metaData); + RayTraceScene(int width, int height, const RenderData &metaData, int depth=500); - // The getter of the width of the scene +// The getter of the width of the scene const int& width() const; // The getter of the height of the scene @@ -39,4 +39,7 @@ private: Camera& m_camera; std::vector<RenderShapeData>m_shapes; std::vector<SceneLightData>m_lights; + int m_depth; + + const int &depth() const; }; |