dungeon_crawler

annotate prototype/src/renderer_deferred.h @ 65:fc2b3d06d07c

made the deferred renderer draw into a texture, so that I can reuse the depth buffer for geometric post effects (particles), and implement other per-pixel post effects eventually
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 02 Oct 2012 13:42:18 +0300
parents aa86119e3295
children a27528035e20
rev   line source
nuclear@41 1 #ifndef RENDERER_DEFERRED_H_
nuclear@41 2 #define RENDERER_DEFERRED_H_
nuclear@41 3
nuclear@41 4 #include "renderer.h"
nuclear@41 5
nuclear@41 6 #define MRT_COUNT 3
nuclear@41 7
nuclear@41 8 class DeferredRenderer : public Renderer {
nuclear@60 9 protected:
nuclear@65 10 // render targets
nuclear@65 11 unsigned int fbo, rend_tex, rbuf_depth;
nuclear@41 12 unsigned int mrt_tex[MRT_COUNT];
nuclear@41 13 int tex_xsz, tex_ysz;
nuclear@41 14
nuclear@65 15 // shaders
nuclear@41 16 unsigned int mrt_prog;
nuclear@41 17 unsigned int deferred_omni, deferred_debug;
nuclear@65 18 unsigned int post_sdr;
nuclear@41 19
nuclear@41 20 mutable unsigned int curr_prog;
nuclear@41 21
nuclear@60 22 int num_draw_bufs;
nuclear@60 23
nuclear@60 24 virtual bool create_fbo();
nuclear@41 25
nuclear@41 26 public:
nuclear@41 27 DeferredRenderer();
nuclear@60 28 virtual ~DeferredRenderer();
nuclear@41 29
nuclear@60 30 virtual bool init(int xsz, int ysz);
nuclear@41 31
nuclear@60 32 virtual int get_tangent_location() const;
nuclear@60 33 virtual unsigned int get_current_program() const;
nuclear@41 34
nuclear@60 35 virtual void resize(int xsz, int ysz);
nuclear@41 36
nuclear@60 37 virtual void render(const Level *level) const;
nuclear@60 38
nuclear@60 39 virtual void light_pass(const Level *level) const;
nuclear@41 40 };
nuclear@41 41
nuclear@41 42 #endif // RENDERER_DEFERRED_H_