2016-12-26 15:41:29 -04:00
|
|
|
#pragma once
|
|
|
|
|
#ifndef TRACER_HPP
|
|
|
|
|
#define TRACER_HPP
|
|
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
#include <glm/glm.hpp>
|
|
|
|
|
|
|
|
|
|
#include "figure.hpp"
|
|
|
|
|
#include "light.hpp"
|
|
|
|
|
#include "ray.hpp"
|
|
|
|
|
|
|
|
|
|
using std::vector;
|
|
|
|
|
using glm::vec3;
|
|
|
|
|
using glm::vec2;
|
|
|
|
|
|
|
|
|
|
class Tracer {
|
|
|
|
|
public:
|
|
|
|
|
int m_h;
|
|
|
|
|
int m_w;
|
|
|
|
|
float m_fov;
|
|
|
|
|
float m_a_ratio;
|
|
|
|
|
|
|
|
|
|
Tracer();
|
2016-12-27 15:26:49 -04:00
|
|
|
|
|
|
|
|
Tracer(int h, int w, float fov);
|
2016-12-26 15:41:29 -04:00
|
|
|
|
|
|
|
|
vec2 sample_pixel(int i, int j) const;
|
|
|
|
|
vec3 trace_ray(Ray & r, vector<Figure *> & f, vector<Light *> & l, unsigned int rec_level) const;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|