# HG changeset patch # User John Tsiombikas # Date 1348545551 -10800 # Node ID f71381c9e245d0f05c7ed3072df316cf076bc5e8 # Parent 4472ef41a209943b24a87b1870296b756540ac9c gamo to xristo diff -r 4472ef41a209 -r f71381c9e245 prototype/src/renderer.cc --- a/prototype/src/renderer.cc Tue Sep 25 06:37:56 2012 +0300 +++ b/prototype/src/renderer.cc Tue Sep 25 06:59:11 2012 +0300 @@ -44,6 +44,20 @@ height = ysz; } +void Renderer::render_pre(const Level *level) const +{ + glEnable(GL_FOG); + glFogi(GL_FOG_MODE, GL_LINEAR); + glFogf(GL_FOG_START, 3.0f); + glFogf(GL_FOG_END, 6.0f); + // TODO level->draw_pre(); +} + +void Renderer::render_post(const Level *level) const +{ + level->draw_post(); +} + // ---- fallback forward renderer ---- FwdRenderer::FwdRenderer() @@ -86,17 +100,14 @@ { glPushAttrib(GL_ENABLE_BIT); glEnable(GL_LIGHTING); - glEnable(GL_FOG); - glFogi(GL_FOG_MODE, GL_LINEAR); - glFogf(GL_FOG_START, 3.0f); - glFogf(GL_FOG_END, 6.0f); + + render_pre(level); glUseProgram(sdrprog); + level->draw(); + glUseProgram(0); - level->draw(); - - glUseProgram(0); - level->draw_post(); + render_post(level); glPopAttrib(); } diff -r 4472ef41a209 -r f71381c9e245 prototype/src/renderer.h --- a/prototype/src/renderer.h Tue Sep 25 06:37:56 2012 +0300 +++ b/prototype/src/renderer.h Tue Sep 25 06:59:11 2012 +0300 @@ -18,7 +18,9 @@ virtual void resize(int xsz, int ysz); + virtual void render_pre(const Level *level) const; virtual void render(const Level *level) const = 0; + virtual void render_post(const Level *level) const; }; diff -r 4472ef41a209 -r f71381c9e245 prototype/src/renderer_deferred.cc --- a/prototype/src/renderer_deferred.cc Tue Sep 25 06:37:56 2012 +0300 +++ b/prototype/src/renderer_deferred.cc Tue Sep 25 06:59:11 2012 +0300 @@ -132,6 +132,8 @@ void DeferredRenderer::render(const Level *level) const { + render_pre(level); + // render into the MRT buffers glUseProgram(mrt_prog); curr_prog = mrt_prog; @@ -147,6 +149,8 @@ glUseProgram(0); curr_prog = 0; + + render_post(level); } void DeferredRenderer::light_pass(const Level *level) const @@ -218,13 +222,12 @@ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, tex_xsz, tex_ysz, 0, GL_RGBA, GL_FLOAT, 0); // attach to fbo - GLenum color_att = num_draw_bufs >= MRT_COUNT ? GL_COLOR_ATTACHMENT0 + i : GL_COLOR_ATTACHMENT0; - glFramebufferTexture2DEXT(GL_FRAMEBUFFER, color_att, GL_TEXTURE_2D, - mrt_tex[i], 0); + GLenum color_att = GL_COLOR_ATTACHMENT0 + (num_draw_bufs == MRT_COUNT ? i : 0); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER, color_att, GL_TEXTURE_2D, mrt_tex[i], 0); CHECKGLERR; } - if(num_draw_bufs >= MRT_COUNT) { + if(num_draw_bufs == MRT_COUNT) { static GLenum draw_bufs[] = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_COLOR_ATTACHMENT2_EXT, GL_COLOR_ATTACHMENT3_EXT, diff -r 4472ef41a209 -r f71381c9e245 prototype/src/renderer_multipass.cc --- a/prototype/src/renderer_multipass.cc Tue Sep 25 06:37:56 2012 +0300 +++ b/prototype/src/renderer_multipass.cc Tue Sep 25 06:59:11 2012 +0300 @@ -74,6 +74,8 @@ void MultipassRenderer::render(const Level *level) const { + render_pre(level); + // render into the MRT buffers glBindFramebufferEXT(GL_FRAMEBUFFER, fbo); @@ -94,6 +96,8 @@ glUseProgram(0); curr_prog = 0; + + render_post(level); } static unsigned int load_sdr(const char *vfname, const char *pfname)