C++ / OpenCL Raytracer
ray_tracer.h
1 #ifndef RAY_TRACER_H
2 #define RAY_TRACER_H
3 
4 #include <string>
5 #include <algorithm>
6 #include <fstream>
7 #include <windows.h>
8 #include "camera.h"
9 #include "lambertian.h"
10 #include "metal.h"
11 #include "dielectric.h"
12 #include "sphere.h"
13 #include "box.h"
14 #include "omp.h" // OpenMP used for performance tracking only
15 
24 class RayTracer {
25 public:
26 
33  RayTracer();
40  RayTracer(const SDim &dims, const int iRaysPerPixel = 100) : m_dims(dims), m_iRaysPerPixel(iRaysPerPixel) {}
47  RayTracer(const SDim &dims, const int iRaysPerPixel, Camera &cam) : m_dims(dims), m_iRaysPerPixel(iRaysPerPixel), m_camera(cam) {}
48 
49  virtual void SetCamera(Vector3D lookFrom, Vector3D lookAt = Vector3D(0), Vector3D viewUp = Vector3D(0, 1, 0), double aperture = .1, double Fov = 40);
50  virtual void AddItem(Object *object);
51  virtual void RandomScene();
52  virtual void ShowPerformance();
53  virtual void OpenImage();
54  virtual Vector3D Color(const Ray &r, int iDepth);
55  virtual void Render(const std::string &strFileName);
56  virtual int clRender(const std::string &strFileName);
57  virtual void ClearItems();
58  ~RayTracer() { ClearItems(); };
59 
60  vList m_list;
61  const SDim m_dims;
64 
65 };
66 #endif // RAY_TRACER_H
virtual void OpenImage()
Definition: ray_tracer.cpp:106
Definition: camera.h:16
RayTracer(const SDim &dims, const int iRaysPerPixel=100)
Definition: ray_tracer.h:40
virtual void RandomScene()
Definition: ray_tracer.cpp:37
const SDim m_dims
Struct containing the dimensions of the desired output image {x, y} (in pixels)
Definition: ray_tracer.h:61
Camera m_camera
Camera object specifying the desired perspective of the output image.
Definition: ray_tracer.h:63
virtual Vector3D Color(const Ray &r, int iDepth)
Definition: ray_tracer.cpp:115
vList m_list
Vector list of objects to be rendered.
Definition: ray_tracer.h:58
RayTracer(const SDim &dims, const int iRaysPerPixel, Camera &cam)
Definition: ray_tracer.h:47
Definition: ray_tracer.h:24
virtual void ClearItems()
Definition: ray_tracer.cpp:82
Definition: vector.h:16
virtual void ShowPerformance()
Definition: ray_tracer.cpp:95
virtual void SetCamera(Vector3D lookFrom, Vector3D lookAt=Vector3D(0), Vector3D viewUp=Vector3D(0, 1, 0), double aperture=.1, double Fov=40)
Definition: ray_tracer.cpp:19
virtual void Render(const std::string &strFileName)
Definition: ray_tracer.cpp:150
int m_iRaysPerPixel
Number of anti-aliasing samples to take per pixel.
Definition: ray_tracer.h:62
Definition: object.h:27
virtual void AddItem(Object *object)
Definition: ray_tracer.cpp:28
virtual int clRender(const std::string &strFileName)
Definition: ray_tracer.cpp:185
Definition: camera.h:10
Definition: ray.h:7