void RenderPipe_depth_opengl::render( GLuint target ) { glDepthMask(GL_FALSE); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, target); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glUseProgram(m_pipeProgramID); GLuint reg = glGetUniformLocation(m_pipeProgramID, "u_image"); glUniform1i(reg, 0); reg = glGetUniformLocation(m_pipeProgramID, "u_blurredImage"); glUniform1i(reg, 1); reg = glGetUniformLocation(m_pipeProgramID, "u_zBuffer"); glUniform1i(reg, 2); CMatrix inverProjMat = GetProjectionMatrix(); inverProjMat.Invert(); m_zInv = inverProjMat.GetColumn(3); // only need to calculate z value, so only 4th column is needed. m_depthOfField = GetDepthOfFieldFactors(); reg = glGetUniformLocation(m_pipeProgramID, "u_depthOfField"); if (reg >= 0) glUniform4fv(reg, 1, (float *)&m_depthOfField); if (reg >= 0) reg = glGetUniformLocation(m_pipeProgramID, "u_zInv"); glUniform4fv(reg, 1, (float *)&m_zInv); glActiveTexture(GL_TEXTURE0_ARB); glEnable(GL_TEXTURE_2D); glActiveTexture(GL_TEXTURE0_ARB); glBindTexture(GL_TEXTURE_2D, m_image); glActiveTexture(GL_TEXTURE1_ARB); glBindTexture(GL_TEXTURE_2D, m_blurredImage); glActiveTexture(GL_TEXTURE2_ARB); glBindTexture(GL_TEXTURE_2D, m_depthTexture); glActiveTexture(GL_TEXTURE0_ARB); renderScreenQuad(); glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); glDepthMask(GL_TRUE); }
void RenderPipe_img_opengl::render( GLuint target ) { glDepthMask(GL_FALSE); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, target); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glUseProgram(m_pipeProgramID); glActiveTexture(GL_TEXTURE0_ARB); glClientActiveTexture(GL_TEXTURE0_ARB); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, m_texture); renderScreenQuad(); glUseProgram(0); glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); glDepthMask(GL_TRUE); }
void Z3DTextureBlendRenderer::render(Z3DEye eye) { if (!m_initialized) return; if (m_colorTexture1 == NULL || m_depthTexture1 == NULL || m_colorTexture2 == NULL || m_depthTexture2 == NULL) return; m_blendTextureShader.bind(); m_rendererBase->setGlobalShaderParameters(m_blendTextureShader, eye); m_blendTextureShader.bindTexture("color_texture_0", m_colorTexture1); m_blendTextureShader.bindTexture("depth_texture_0", m_depthTexture1); m_blendTextureShader.bindTexture("color_texture_1", m_colorTexture2); m_blendTextureShader.bindTexture("depth_texture_1", m_depthTexture2); renderScreenQuad(m_blendTextureShader); m_blendTextureShader.release(); }