Add ray count and duration stats
This commit is contained in:
parent
a3bdc01d45
commit
cc126a153e
2 changed files with 15 additions and 0 deletions
12
src/scene.cc
12
src/scene.cc
|
@ -5,6 +5,7 @@
|
||||||
* Eryn Wells <eryn@erynwells.me>
|
* Eryn Wells <eryn@erynwells.me>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <chrono>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
|
@ -18,6 +19,7 @@
|
||||||
Scene::Scene()
|
Scene::Scene()
|
||||||
: width(640), height(480),
|
: width(640), height(480),
|
||||||
max_depth(5),
|
max_depth(5),
|
||||||
|
nrays(0),
|
||||||
pixels(NULL)
|
pixels(NULL)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
@ -93,6 +95,9 @@ Scene::write(Writer &writer, const std::string &filename)
|
||||||
void
|
void
|
||||||
Scene::render()
|
Scene::render()
|
||||||
{
|
{
|
||||||
|
std::chrono::time_point<std::chrono::system_clock> start, end;
|
||||||
|
start = std::chrono::system_clock::now();
|
||||||
|
|
||||||
pixels = new Color[width * height];
|
pixels = new Color[width * height];
|
||||||
|
|
||||||
Ray primary_ray;
|
Ray primary_ray;
|
||||||
|
@ -109,7 +114,11 @@ Scene::render()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end = std::chrono::system_clock::now();
|
||||||
|
std::chrono::duration<float> seconds = end - start;
|
||||||
|
|
||||||
_is_rendered = true;
|
_is_rendered = true;
|
||||||
|
printf("Scene rendered. %d rays traced in %f seconds.\n", nrays, seconds.count());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,6 +159,9 @@ Scene::trace_ray(const Ray &ray, const int depth)
|
||||||
float nearest_t = INFINITY;
|
float nearest_t = INFINITY;
|
||||||
int nints;
|
int nints;
|
||||||
|
|
||||||
|
// Keep stats.
|
||||||
|
nrays++;
|
||||||
|
|
||||||
// Find intersections of this ray with objects in the scene.
|
// Find intersections of this ray with objects in the scene.
|
||||||
for (Shape *s : shapes) {
|
for (Shape *s : shapes) {
|
||||||
nints = s->does_intersect(ray, &t);
|
nints = s->does_intersect(ray, &t);
|
||||||
|
|
|
@ -52,6 +52,9 @@ private:
|
||||||
std::list<Shape *> shapes;
|
std::list<Shape *> shapes;
|
||||||
std::list<Light *> lights;
|
std::list<Light *> lights;
|
||||||
|
|
||||||
|
// Rendering stats
|
||||||
|
unsigned int nrays;
|
||||||
|
|
||||||
// Rendering output.
|
// Rendering output.
|
||||||
bool _is_rendered;
|
bool _is_rendered;
|
||||||
Color *pixels;
|
Color *pixels;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue