aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/accelerate/myqtconcurrent.cpp1
-rw-r--r--src/raytracer/raytracer.cpp3
-rw-r--r--src/raytracer/raytracescene.cpp9
-rw-r--r--src/raytracer/raytracescene.h7
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;
};