mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2025-03-15 07:00:58 +00:00
Fixed rendering of mirrors
This commit is contained in:
parent
fb618feeca
commit
c158a16a93
4 changed files with 65 additions and 23 deletions
|
@ -175,6 +175,14 @@ void Framebuffer::Init()
|
|||
globalFramebuffers.csDepthFBO[i]->Check();
|
||||
}
|
||||
|
||||
// GEOMETRY BUFFER
|
||||
|
||||
//globalFramebuffers.geometryBufferFBO = new Framebuffer( "_gbuffer", glConfig.nativeScreenWidth, glConfig.nativeScreenHeight );
|
||||
//globalFramebuffers.geometryBufferFBO->Bind();
|
||||
//globalFramebuffers.geometryBufferFBO->AddColorBuffer( GL_RGBA8, 0 );
|
||||
//globalFramebuffers.geometryBufferFBO->AttachImage2D( GL_TEXTURE_2D, globalImages->currentNormalsImage, 0 );
|
||||
//globalFramebuffers.geometryBufferFBO->Check();
|
||||
|
||||
// SMAA
|
||||
|
||||
globalFramebuffers.smaaEdgesFBO = new Framebuffer( "_smaaEdges", glConfig.nativeScreenWidth, glConfig.nativeScreenHeight );
|
||||
|
@ -278,12 +286,23 @@ void Framebuffer::CheckFramebuffers()
|
|||
globalFramebuffers.csDepthFBO[i]->Check();
|
||||
}
|
||||
|
||||
// GEOMETRY BUFFER
|
||||
|
||||
//globalImages->currentNormalsImage->Resize( glConfig.nativeScreenWidth, glConfig.nativeScreenHeight );
|
||||
|
||||
//globalFramebuffers.geometryBufferFBO->width = glConfig.nativeScreenWidth;
|
||||
//globalFramebuffers.geometryBufferFBO->height = glConfig.nativeScreenHeight;
|
||||
|
||||
//globalFramebuffers.geometryBufferFBO->Bind();
|
||||
//globalFramebuffers.geometryBufferFBO->AttachImage2D( GL_TEXTURE_2D, globalImages->currentNormalsImage, 0 );
|
||||
//globalFramebuffers.geometryBufferFBO->Check();
|
||||
|
||||
// SMAA
|
||||
|
||||
globalImages->smaaEdgesImage->Resize( glConfig.nativeScreenWidth, glConfig.nativeScreenHeight );
|
||||
|
||||
globalFramebuffers.smaaEdgesFBO->width = glConfig.nativeScreenWidth / 4;
|
||||
globalFramebuffers.smaaEdgesFBO->height = glConfig.nativeScreenHeight / 4;
|
||||
globalFramebuffers.smaaEdgesFBO->width = glConfig.nativeScreenWidth;
|
||||
globalFramebuffers.smaaEdgesFBO->height = glConfig.nativeScreenHeight;
|
||||
|
||||
globalFramebuffers.smaaEdgesFBO->Bind();
|
||||
globalFramebuffers.smaaEdgesFBO->AttachImage2D( GL_TEXTURE_2D, globalImages->smaaEdgesImage, 0 );
|
||||
|
@ -291,8 +310,8 @@ void Framebuffer::CheckFramebuffers()
|
|||
|
||||
globalImages->smaaBlendImage->Resize( glConfig.nativeScreenWidth, glConfig.nativeScreenHeight );
|
||||
|
||||
globalFramebuffers.smaaBlendFBO->width = glConfig.nativeScreenWidth / 4;
|
||||
globalFramebuffers.smaaBlendFBO->height = glConfig.nativeScreenHeight / 4;
|
||||
globalFramebuffers.smaaBlendFBO->width = glConfig.nativeScreenWidth;
|
||||
globalFramebuffers.smaaBlendFBO->height = glConfig.nativeScreenHeight;
|
||||
|
||||
globalFramebuffers.smaaBlendFBO->Bind();
|
||||
globalFramebuffers.smaaBlendFBO->AttachImage2D( GL_TEXTURE_2D, globalImages->smaaBlendImage, 0 );
|
||||
|
|
|
@ -131,6 +131,7 @@ struct globalFramebuffers_t
|
|||
Framebuffer* bloomRenderFBO[MAX_BLOOM_BUFFERS];
|
||||
Framebuffer* ambientOcclusionFBO[MAX_SSAO_BUFFERS];
|
||||
Framebuffer* csDepthFBO[MAX_HIERARCHICAL_ZBUFFERS];
|
||||
// Framebuffer* geometryBufferFBO;
|
||||
Framebuffer* smaaEdgesFBO;
|
||||
Framebuffer* smaaBlendFBO;
|
||||
};
|
||||
|
|
|
@ -868,7 +868,8 @@ void idImageManager::CreateIntrinsicImages()
|
|||
smaaEdgesImage = globalImages->ImageFromFunction( "_smaaEdges", R_SMAAImage_ResNative );
|
||||
smaaBlendImage = globalImages->ImageFromFunction( "_smaaBlend", R_SMAAImage_ResNative );
|
||||
|
||||
currentNormalsImage = ImageFromFunction( "_currentNormals", R_RGBA8Image );
|
||||
currentNormalsImage = ImageFromFunction( "_currentNormals", R_SMAAImage_ResNative );
|
||||
|
||||
ambientOcclusionImage[0] = ImageFromFunction( "_ao0", R_SMAAImage_ResNative );
|
||||
ambientOcclusionImage[1] = ImageFromFunction( "_ao1", R_SMAAImage_ResNative );
|
||||
|
||||
|
|
|
@ -1793,10 +1793,15 @@ static void RB_AmbientPass( const drawSurf_t* const* drawSurfs, int numDrawSurfs
|
|||
|
||||
const bool hdrIsActive = ( r_useHDR.GetBool() && globalFramebuffers.hdrFBO != NULL && globalFramebuffers.hdrFBO->IsBound() );
|
||||
|
||||
//if( hdrIsActive && r_useSSLR.GetBool() )
|
||||
//{
|
||||
// Framebuffer::Unbind();
|
||||
//}
|
||||
/*
|
||||
if( fillGbuffer )
|
||||
{
|
||||
globalFramebuffers.geometryBufferFBO->Bind();
|
||||
|
||||
glClearColor( 0, 0, 0, 0 );
|
||||
glClear( GL_COLOR_BUFFER_BIT );
|
||||
}
|
||||
*/
|
||||
|
||||
renderLog.OpenMainBlock( MRB_AMBIENT_PASS );
|
||||
renderLog.OpenBlock( "RB_AmbientPass" );
|
||||
|
@ -1810,7 +1815,15 @@ static void RB_AmbientPass( const drawSurf_t* const* drawSurfs, int numDrawSurfs
|
|||
// draw all the subview surfaces, which will already be at the start of the sorted list,
|
||||
// with the general purpose path
|
||||
//GL_State( GLS_DEFAULT );
|
||||
GL_State( GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE | GLS_DEPTHMASK | GLS_DEPTHFUNC_EQUAL );
|
||||
|
||||
//if( fillGbuffer )
|
||||
{
|
||||
GL_State( GLS_SRCBLEND_ONE | GLS_DSTBLEND_ZERO | GLS_DEPTHMASK | GLS_DEPTHFUNC_EQUAL );
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// GL_State( GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE | GLS_DEPTHMASK | GLS_DEPTHFUNC_EQUAL );
|
||||
//}
|
||||
|
||||
GL_Color( colorWhite );
|
||||
|
||||
|
@ -1874,7 +1887,7 @@ static void RB_AmbientPass( const drawSurf_t* const* drawSurfs, int numDrawSurfs
|
|||
//else
|
||||
{
|
||||
#if 1
|
||||
if( ( r_useSSAO.GetBool() || r_useSSGI.GetBool() ) && fillGbuffer )
|
||||
if( fillGbuffer )
|
||||
{
|
||||
// fill geometry buffer with normal/roughness information
|
||||
if( drawSurf->jointCache )
|
||||
|
@ -2126,29 +2139,37 @@ static void RB_AmbientPass( const drawSurf_t* const* drawSurfs, int numDrawSurfs
|
|||
renderLog.CloseBlock();
|
||||
renderLog.CloseMainBlock();
|
||||
|
||||
if( ( r_useSSAO.GetBool() || r_useSSGI.GetBool() ) && fillGbuffer )
|
||||
if( fillGbuffer )
|
||||
{
|
||||
GL_SelectTexture( 0 );
|
||||
globalImages->currentNormalsImage->Bind();
|
||||
|
||||
// FIXME: this copies RGBA16F into _currentNormals if HDR is enabled
|
||||
const idScreenRect& viewport = backEnd.viewDef->viewport;
|
||||
globalImages->currentNormalsImage->CopyFramebuffer( viewport.x1, viewport.y1, viewport.GetWidth(), viewport.GetHeight() );
|
||||
|
||||
//if( r_ssgiDebug.GetInteger() != 1 )
|
||||
//GL_Clear( true, false, false, STENCIL_SHADOW_TEST_VALUE, 0.0f, 0.0f, 0.0f, 1.0f, false );
|
||||
|
||||
|
||||
/*
|
||||
if( hdrIsActive )
|
||||
{
|
||||
GL_Clear( true, false, false, STENCIL_SHADOW_TEST_VALUE, 0.0f, 0.0f, 0.0f, 1.0f, false );
|
||||
globalFramebuffers.hdrFBO->Bind();
|
||||
}
|
||||
|
||||
//if( hdrIsActive )
|
||||
//{
|
||||
// globalFramebuffers.hdrFBO->Bind();
|
||||
//}
|
||||
|
||||
renderProgManager.Unbind();
|
||||
|
||||
else
|
||||
{
|
||||
Framebuffer::Unbind();
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
// unbind texture units
|
||||
for( int i = 0; i < 7; i++ )
|
||||
{
|
||||
GL_SelectTexture( i );
|
||||
globalImages->BindNull();
|
||||
}
|
||||
|
||||
renderProgManager.Unbind();
|
||||
}
|
||||
|
||||
// RB end
|
||||
|
|
Loading…
Reference in a new issue