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_ |