Add lights to the scene
This commit is contained in:
parent
14b246b6e9
commit
6bb7689ac0
2 changed files with 26 additions and 1 deletions
24
src/scene.cc
24
src/scene.cc
|
@ -115,6 +115,11 @@ Scene::render()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Scene::add_shape --
|
||||||
|
*
|
||||||
|
* Add a shape to the scene.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
Scene::add_shape(Shape *shape)
|
Scene::add_shape(Shape *shape)
|
||||||
{
|
{
|
||||||
|
@ -122,6 +127,23 @@ Scene::add_shape(Shape *shape)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Scene::add_light --
|
||||||
|
*
|
||||||
|
* Add a light to the scene.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
Scene::add_light(Light *light)
|
||||||
|
{
|
||||||
|
lights.push_back(light);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Scene::trace_ray --
|
||||||
|
*
|
||||||
|
* Trace the given ray through the scene, recursing until depth has been reached.
|
||||||
|
*/
|
||||||
Color
|
Color
|
||||||
Scene::trace_ray(const Ray &ray, const int depth)
|
Scene::trace_ray(const Ray &ray, const int depth)
|
||||||
{
|
{
|
||||||
|
@ -144,7 +166,7 @@ Scene::trace_ray(const Ray &ray, const int depth)
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there was no intersection, return black.
|
// If there was no intersection, return black.
|
||||||
if (intersected_shape == NULL) {
|
if (intersected_shape != NULL) {
|
||||||
return Color::Black;
|
return Color::Black;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "basics.h"
|
#include "basics.h"
|
||||||
|
|
||||||
|
|
||||||
|
class Light;
|
||||||
class Shape;
|
class Shape;
|
||||||
class Writer;
|
class Writer;
|
||||||
|
|
||||||
|
@ -36,12 +37,14 @@ public:
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
void add_shape(Shape *obj);
|
void add_shape(Shape *obj);
|
||||||
|
void add_light(Light *light);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Color trace_ray(const Ray &ray, const int depth);
|
Color trace_ray(const Ray &ray, const int depth);
|
||||||
|
|
||||||
int width, height;
|
int width, height;
|
||||||
std::list<Shape *> shapes;
|
std::list<Shape *> shapes;
|
||||||
|
std::list<Light *> lights;
|
||||||
|
|
||||||
bool _is_rendered;
|
bool _is_rendered;
|
||||||
Color *pixels;
|
Color *pixels;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue