|
@@ -111,9 +111,9 @@ ErrorCode GeometryBuffer::init()
|
|
|
Config::FramebfrVariables().gl_final_buffer_texture_format, Config::FramebfrVariables().gl_final_buffer_texture_type, NULL);
|
|
Config::FramebfrVariables().gl_final_buffer_texture_format, Config::FramebfrVariables().gl_final_buffer_texture_type, NULL);
|
|
|
// If eye adaption (HDR) is enabled, buffer should use a different min_filter (to support mipmapping)
|
|
// If eye adaption (HDR) is enabled, buffer should use a different min_filter (to support mipmapping)
|
|
|
if(Config::graphicsVar().eye_adaption)
|
|
if(Config::graphicsVar().eye_adaption)
|
|
|
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, Config::FramebfrVariables().gl_final_buffer_min_filter);
|
|
|
|
|
- else
|
|
|
|
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, Config::FramebfrVariables().gl_final_buffer_min_filter_HDR);
|
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, Config::FramebfrVariables().gl_final_buffer_min_filter_HDR);
|
|
|
|
|
+ else
|
|
|
|
|
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, Config::FramebfrVariables().gl_final_buffer_min_filter);
|
|
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, Config::FramebfrVariables().gl_final_buffer_mag_filter);
|
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, Config::FramebfrVariables().gl_final_buffer_mag_filter);
|
|
|
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + GBufferFinal, GL_TEXTURE_2D, m_finalBuffer, 0);
|
|
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + GBufferFinal, GL_TEXTURE_2D, m_finalBuffer, 0);
|
|
|
|
|
|
|
@@ -138,27 +138,28 @@ void GeometryBuffer::setBufferSize(unsigned int p_bufferWidth, unsigned int p_bu
|
|
|
|
|
|
|
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
|
|
|
|
|
|
|
- // Resize geometry textures
|
|
|
|
|
- for(GLuint i = GBufferPosition; i < GBufferNumTextures; i++)
|
|
|
|
|
|
|
+ // Create textures
|
|
|
|
|
+ for (GLuint i = 0; i < GBufferNumTextures; i++)
|
|
|
{
|
|
{
|
|
|
glBindTexture(GL_TEXTURE_2D, m_GBTextures[i]);
|
|
glBindTexture(GL_TEXTURE_2D, m_GBTextures[i]);
|
|
|
glTexImage2D(GL_TEXTURE_2D, 0, m_internalFormats[i], m_bufferWidth, m_bufferHeight, 0, m_textureFormats[i], m_textureTypes[i], NULL);
|
|
glTexImage2D(GL_TEXTURE_2D, 0, m_internalFormats[i], m_bufferWidth, m_bufferHeight, 0, m_textureFormats[i], m_textureTypes[i], NULL);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // Resize depth buffer
|
|
|
|
|
|
|
+ // Create depth buffer
|
|
|
glBindTexture(GL_TEXTURE_2D, m_depthBuffer);
|
|
glBindTexture(GL_TEXTURE_2D, m_depthBuffer);
|
|
|
- glTexImage2D(GL_TEXTURE_2D, 0, Config::FramebfrVariables().gl_depth_buffer_internal_format, m_bufferWidth, m_bufferHeight, 0,
|
|
|
|
|
- Config::FramebfrVariables().gl_depth_buffer_texture_format, Config::FramebfrVariables().gl_depth_buffer_texture_type, NULL);
|
|
|
|
|
|
|
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, m_bufferWidth, m_bufferHeight, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL);
|
|
|
|
|
+ glTexImage2D(GL_TEXTURE_2D, 0, Config::FramebfrVariables().gl_depth_buffer_internal_format, m_bufferWidth, m_bufferHeight, 0,
|
|
|
|
|
+ Config::FramebfrVariables().gl_depth_buffer_texture_format, Config::FramebfrVariables().gl_depth_buffer_texture_type, NULL);
|
|
|
|
|
|
|
|
- // Resize the blur buffer
|
|
|
|
|
|
|
+ // Create the blur buffer, that acts as an intermediate buffer between vertical and horizontal blur passes
|
|
|
glBindTexture(GL_TEXTURE_2D, m_blurBuffer);
|
|
glBindTexture(GL_TEXTURE_2D, m_blurBuffer);
|
|
|
- glTexImage2D(GL_TEXTURE_2D, 0, Config::FramebfrVariables().gl_blur_buffer_internal_format, m_bufferWidth, m_bufferHeight, 0,
|
|
|
|
|
- Config::FramebfrVariables().gl_blur_buffer_texture_format, Config::FramebfrVariables().gl_blur_buffer_texture_type, NULL);
|
|
|
|
|
|
|
+ glTexImage2D(GL_TEXTURE_2D, 0, Config::FramebfrVariables().gl_blur_buffer_internal_format, m_bufferWidth, m_bufferHeight, 0,
|
|
|
|
|
+ Config::FramebfrVariables().gl_blur_buffer_texture_format, Config::FramebfrVariables().gl_blur_buffer_texture_type, NULL);
|
|
|
|
|
|
|
|
- // Resize the final buffer
|
|
|
|
|
|
|
+ // Create the final buffer, that gets renderred to the screen
|
|
|
glBindTexture(GL_TEXTURE_2D, m_finalBuffer);
|
|
glBindTexture(GL_TEXTURE_2D, m_finalBuffer);
|
|
|
- glTexImage2D(GL_TEXTURE_2D, 0, Config::FramebfrVariables().gl_final_buffer_internal_format, m_bufferWidth, m_bufferHeight, 0,
|
|
|
|
|
- Config::FramebfrVariables().gl_final_buffer_texture_format, Config::FramebfrVariables().gl_final_buffer_texture_type, NULL);
|
|
|
|
|
|
|
+ glTexImage2D(GL_TEXTURE_2D, 0, Config::FramebfrVariables().gl_final_buffer_internal_format, m_bufferWidth, m_bufferHeight, 0,
|
|
|
|
|
+ Config::FramebfrVariables().gl_final_buffer_texture_format, Config::FramebfrVariables().gl_final_buffer_texture_type, NULL);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
void GeometryBuffer::setBufferSize(GLuint p_buffer, unsigned int p_bufferWidth, unsigned int p_bufferHeight)
|
|
void GeometryBuffer::setBufferSize(GLuint p_buffer, unsigned int p_bufferWidth, unsigned int p_bufferHeight)
|