summaryrefslogtreecommitdiff
path: root/scene.cuh
blob: 31bb99f9cc3dd403cc0b77785d212b76a95f0ff2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef SCENE_H
#define SCENE_H

#include "common.cuh"
#include "sphere.cuh"
#include "render_object.cuh"
#include "include/helper_math.h"

template <class T> class camera;

//when we get animations with multiple scenes, we'll make this a virtual function
//with array of DE objects and cam
template <class T>
class scene {
  using T3 = typename vect_t3<T>::vect_t;
  public:
    //__device__ void render(uint8_t *image) { cam.render(); };
    __device__ render_object<T> **get_objs() { return objs; }
    __device__ render_object<T> **get_image() { return image; }
  private:
    camera<T> cam = camera<T>();
    sphere<T> sp1 = sphere<T>(vect_create<T3>(0,0.4,-5));
    sphere<T> sp2 = sphere<T>(vect_create<T3>(0,-0.4,-5));
  protected:
    //idk why I need to specify the size... why can't the compiler figure that out?
    render_object<T> *objs[3] = {&sp1, &sp2, NULL};
    uint8_t *image;
};

#include "camera.cuh"

#endif