TexturePtr PostProcBlur::Render(QuadPtr fullScreenQuad, TexturePtr in) { fbo->Set(); glClearColor(0.f, 0.f, 0.f, 1.f); loopi(effectPower) { fbo->EnableSingleBuffer(0); if (i == 0) { in->Set(0); } else { vBlurTex->Set(0); } SetBindingSafe(hBlurShader, "screen", 0); SetBindingSafe(hBlurShader, "screenWidth", (float)effectWidth); SetBindingSafe(hBlurShader, "screenHeight", (float)effectHeight); hBlurShader->Set(); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); fullScreenQuad->Render(); fbo->EnableSingleBuffer(1); hBlurTex->Set(0); SetBindingSafe(vBlurShader, "screen", 0); SetBindingSafe(vBlurShader, "screenWidth", (float)effectWidth); SetBindingSafe(vBlurShader, "screenHeight", (float)effectHeight); vBlurShader->Set(); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); fullScreenQuad->Render(); } fbo->Unset(); return vBlurTex; }
TexturePtr PostProcEdge::Render(QuadPtr fullScreenQuad, TexturePtr in) { m_fbo->Set(); glClearColor(0.f, 0.f, 0.f, 1.f); m_fbo->EnableSingleBuffer(0); in->Set(0); SetBindingSafe(m_shader, "screen", 0); SetBindingSafe(m_shader, "screenWidth", (float)effectWidth); SetBindingSafe(m_shader, "screenHeight", (float)effectHeight); m_shader->Set(); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); fullScreenQuad->Render(); m_fbo->Unset(); return m_tex; }