X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Frenderer.h;h=bfd7622cc22843bacf2f4885f1cbe7868d3e3a12;hb=HEAD;hp=b3d24241a3983819f17191c547526a1c0a6d2888;hpb=fcd6773bc770425ede4b47a84eef7cc78342542c;p=demo diff --git a/src/renderer.h b/src/renderer.h index b3d2424..bfd7622 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -1,25 +1,75 @@ #ifndef RENDERER_H_ #define RENDERER_H_ -class Camera; +#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_MATRIX_UNIFORMS = 3, + MORPHING_SHADING_UNIFORMS = 4, +}; + +struct BaseMatrixUniforms { + Mat4 mview; + Mat4 mmviewproj; + Mat4 mmod; +}; + +struct BaseShadingUniforms { + Vec4 diffuse; + Vec4 specular; + float shininess; + float fog_density; +}; + +struct SkyMatrixUniforms { + Mat4 mviewproj; +}; class Renderer { protected: + BaseMatrixUniforms default_vs_uniforms; + UniformBuffer *default_vs_ub; + + BaseShadingUniforms default_fs_uniforms; + UniformBuffer *default_fs_ub; + + SkyMatrixUniforms sky_vs_uniforms; + UniformBuffer *sky_vs_ub; + ShaderProgram *sprog; - virtual void draw_object(Object *object) const; + + /* debug shader to draw normals */ + ShaderProgram *nprog; + + Texture *skytex, *dskytex; + + virtual void draw_object(Object *object); + virtual void draw_skybox(); public: + float fog_density; + Scene *scene; - Camera *camera; + OrbitCamera *camera; Renderer(); 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_