void PostProcessor::_initBlur() { m_extractBloomProgram = _createShaderProgram(vertexShader, extractBloomShader); glUseProgram(m_extractBloomProgram); int loc = glGetUniformLocation(m_extractBloomProgram, "Sample0"); assert(loc >= 0); glUniform1i(loc, 0); loc = glGetUniformLocation(m_extractBloomProgram, "ThresholdLevel"); assert(loc >= 0); glUniform1i(loc, config.bloomFilter.thresholdLevel); m_seperableBlurProgram = _createShaderProgram(vertexShader, seperableBlurShader); glUseProgram(m_seperableBlurProgram); loc = glGetUniformLocation(m_seperableBlurProgram, "Sample0"); assert(loc >= 0); glUniform1i(loc, 0); loc = glGetUniformLocation(m_seperableBlurProgram, "TexelSize"); assert(loc >= 0); glUniform2f(loc, 1.0f / video().getWidth(), 1.0f / video().getHeight()); loc = glGetUniformLocation(m_seperableBlurProgram, "Orientation"); assert(loc >= 0); glUniform1i(loc, 0); loc = glGetUniformLocation(m_seperableBlurProgram, "BlurAmount"); assert(loc >= 0); glUniform1i(loc, config.bloomFilter.blurAmount); loc = glGetUniformLocation(m_seperableBlurProgram, "BlurScale"); assert(loc >= 0); glUniform1f(loc, 1.0f); loc = glGetUniformLocation(m_seperableBlurProgram, "BlurStrength"); assert(loc >= 0); glUniform1f(loc, config.bloomFilter.blurStrength/100.0f); m_glowProgram = _createShaderProgram(vertexShader, glowShader); glUseProgram(m_glowProgram); loc = glGetUniformLocation(m_glowProgram, "Sample0"); assert(loc >= 0); glUniform1i(loc, 0); loc = glGetUniformLocation(m_glowProgram, "Sample1"); assert(loc >= 0); glUniform1i(loc, 1); loc = glGetUniformLocation(m_glowProgram, "BlendMode"); assert(loc >= 0); glUniform1i(loc, config.bloomFilter.blendMode); m_pTextureGlowMap = _createTexture(); m_pTextureBlur = _createTexture(); m_FBO_glowMap = _createFBO(m_pTextureGlowMap); m_FBO_blur = _createFBO(m_pTextureBlur); glUseProgram(0); }
void PostProcessor::_initCommon() { m_pTextureOriginal = _createTexture(); m_FBO_original = _createFBO(m_pTextureOriginal); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); }
bool GLWindow::configInitFBO() { if( !_impl->glewContext || !GLEW_EXT_framebuffer_object ) { sendError( ERROR_FBO_UNSUPPORTED ); return false; } if( !_createFBO( _impl->fbo, 0 )) return false; const int samplesSize = getIAttribute(WindowSettings::IATTR_PLANES_SAMPLES); if( samplesSize <= 0 ) return true; return _createFBO( _impl->fboMultiSample, samplesSize ); }
void PostProcessor::_initCommon() { if (config.video.multisampling != 0) { m_pTextureResolved = _createTexture(); m_FBO_resolved = _createFBO(m_pTextureResolved); } m_pResultBuffer = new FrameBuffer(); _initTexture(m_pResultBuffer->m_pTexture); _initFBO(m_pResultBuffer->m_FBO, m_pResultBuffer->m_pTexture); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); }