X-Git-Url: https://eleni.mutantstargoat.com/git/?p=demo;a=blobdiff_plain;f=src%2Frenderer.h;fp=src%2Frenderer.h;h=9605aa3952057bcb8fe39be00ac1b0045b49f4d7;hp=23471f51f91bfcdf6c463bccb3f9eab320f38e2b;hb=05d269a194496bcef85da78652b947f5bf1c9bcf;hpb=6cecb8f16f1863496884ca86790375dbb27138ba diff --git a/src/renderer.h b/src/renderer.h index 23471f5..9605aa3 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -1,23 +1,50 @@ #ifndef RENDERER_H_ #define RENDERER_H_ +#include + class OrbitCamera; class Object; class Scene; class ShaderProgram; class Texture; +class UniformBuffer; + +enum { + MATRIX_UNIFORMS = 0, + SHADING_UNIFORMS = 1, + SKY_MATRIX_UNIFORMS = 2, + MORPHING_UNIFORMS = 3, + MORPHING_SHADING_UNIFORMS = 4, +}; + +struct BaseVertUniforms { + Mat4 mview; + Mat4 mmviewproj; + Mat4 mmod; +}; + +struct BaseFragUniforms { + Vec4 diffuse; + Vec4 specular; + float shininess; + float fog_density; +}; + +struct SkyVertUniforms { + Mat4 mviewproj; +}; class Renderer { protected: - int diff_loc; - int spec_loc; - int shin_loc; - int mmviewproj_loc; - int mview_loc; - int mmod_loc; - int fog_loc; - int dstex_loc; - int stex_loc; + BaseVertUniforms vu; + UniformBuffer *vbuf; + + BaseFragUniforms fu; + UniformBuffer *fbuf; + + SkyVertUniforms svu; + UniformBuffer *svbuf; ShaderProgram *sprog; @@ -26,8 +53,8 @@ protected: Texture *skytex, *dskytex; - virtual void draw_object(Object *object) const; - virtual void draw_skybox() const; + virtual void draw_object(Object *object); + virtual void draw_skybox(); public: float fog_density; @@ -39,10 +66,10 @@ public: virtual ~Renderer(); virtual bool create(); - virtual void draw() const; + virtual void draw(); virtual void set_sky_tex(Texture *stex); virtual void set_diffuse_sky_tex(Texture *dstex); }; -#endif // RENDERER_H_ \ No newline at end of file +#endif // RENDERER_H_