backup - missing some
[demo] / src / renderer.h
1 #ifndef RENDERER_H_
2 #define RENDERER_H_
3
4 #include <gmath/gmath.h>
5
6 class OrbitCamera;
7 class Object;
8 class Scene;
9 class ShaderProgram;
10 class Texture;
11 class UniformBuffer;
12
13 enum {
14         MATRIX_UNIFORMS = 0,
15         SHADING_UNIFORMS = 1,
16         SKY_MATRIX_UNIFORMS = 2,
17         MORPHING_MATRIX_UNIFORMS = 3,
18         MORPHING_SHADING_UNIFORMS = 4,
19 };
20
21 struct BaseMatrixUniforms {
22         Mat4 mview;
23         Mat4 mmviewproj;
24         Mat4 mmod;
25 };
26
27 struct BaseShadingUniforms {
28         Vec4 diffuse;
29         Vec4 specular;
30         float shininess;
31         float fog_density;
32 };
33
34 struct SkyMatrixUniforms {
35         Mat4 mviewproj;
36 };
37
38 class Renderer {
39 protected:
40         BaseMatrixUniforms default_vs_uniforms;
41         UniformBuffer *default_vs_ub;
42
43         BaseShadingUniforms default_fs_uniforms;
44         UniformBuffer *default_fs_ub;
45
46         SkyMatrixUniforms sky_vs_uniforms;
47         UniformBuffer *sky_vs_ub;
48
49         ShaderProgram *sprog;
50
51         /* debug shader to draw normals */
52         ShaderProgram *nprog;
53
54         Texture *skytex, *dskytex;
55
56         virtual void draw_object(Object *object);
57         virtual void draw_skybox();
58
59 public:
60         float fog_density;
61
62         Scene *scene;
63         OrbitCamera *camera;
64
65         Renderer();
66         virtual ~Renderer();
67
68         virtual bool create();
69         virtual void draw();
70
71         virtual void set_sky_tex(Texture *stex);
72         virtual void set_diffuse_sky_tex(Texture *dstex);
73 };
74
75 #endif // RENDERER_H_