diff --git a/src/RayTracer.cc b/src/RayTracer.cc index e9c93a1..7994cf6 100644 --- a/src/RayTracer.cc +++ b/src/RayTracer.cc @@ -40,6 +40,13 @@ void RayTracer::render(Scene *scene) { Vector3f pxUpperLeft = vpUpperLeft + (du + dv) / 2.0; Buffer buffer(width * height * 3); + Vector3f bgc = scene->getBackgroundColor(); + for (int i = 0; i < width * height; ++i) { + buffer[i * 3] = bgc.x(); + buffer[i * 3 + 1] = bgc.y(); + buffer[i * 3 + 2] = bgc.z(); + } + for (int y = 0; y < height; ++y) for (int x = 0; x < width; ++x) { Ray ray = getRay(x, y, cameraPos, pxUpperLeft, du, dv); diff --git a/src/Scene.cc b/src/Scene.cc index 8533ff3..9c48128 100644 --- a/src/Scene.cc +++ b/src/Scene.cc @@ -14,6 +14,8 @@ Vector3f Scene::getUpVector() const { return up; } Vector3f Scene::getLookAt() const { return lookAt; } +Vector3f Scene::getBackgroundColor() const { return backgroundColor; } + void Scene::setRaysPerPixel(const Eigen::VectorXi &raysPerPixel) { this->raysPerPixel = raysPerPixel; } diff --git a/src/Scene.h b/src/Scene.h index 24a697e..8ac10e0 100644 --- a/src/Scene.h +++ b/src/Scene.h @@ -39,6 +39,7 @@ public: Vector3f getCenter() const; Vector3f getUpVector() const; Vector3f getLookAt() const; + Vector3f getBackgroundColor() const; void setRaysPerPixel(const Eigen::VectorXi &); void setAntialiasing(bool); void setTwoSideRender(bool);