From b04705c59441a3cab73c981ae018a198939a5e90 Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Wed, 18 Oct 2023 13:06:14 +0200 Subject: [PATCH] Changed _currentRender back to RGBA16F --- neo/renderer/Framebuffer.h | 3 +-- neo/renderer/Image.h | 3 +-- neo/renderer/Image_intrinsic.cpp | 4 ++-- neo/renderer/NVRHI/Framebuffer_NVRHI.cpp | 5 ----- neo/renderer/RenderBackend.cpp | 22 +++++++--------------- 5 files changed, 11 insertions(+), 26 deletions(-) diff --git a/neo/renderer/Framebuffer.h b/neo/renderer/Framebuffer.h index 44e8b673..560f0174 100644 --- a/neo/renderer/Framebuffer.h +++ b/neo/renderer/Framebuffer.h @@ -144,10 +144,9 @@ struct globalFramebuffers_t Framebuffer* shadowFBO[MAX_SHADOWMAP_RESOLUTIONS][6]; Framebuffer* hdrFBO; Framebuffer* ldrFBO; - Framebuffer* postProcFBO; // HDR16 + Framebuffer* postProcFBO; // HDR16 used by 3D effects like heatHaze Framebuffer* taaMotionVectorsFBO; Framebuffer* taaResolvedFBO; - Framebuffer* hdr64FBO; // TODO remove, not needed with new NVRHI tonemapping anymore Framebuffer* envprobeFBO; Framebuffer* bloomRenderFBO[MAX_BLOOM_BUFFERS]; Framebuffer* glowFBO[MAX_GLOW_BUFFERS]; // unused diff --git a/neo/renderer/Image.h b/neo/renderer/Image.h index 03fa3449..1f1fba15 100644 --- a/neo/renderer/Image.h +++ b/neo/renderer/Image.h @@ -627,7 +627,6 @@ public: idImage* randomImage256; idImage* blueNoiseImage256; idImage* currentRenderHDRImage; - idImage* currentRenderHDRImage64; idImage* ldrImage; // tonemapped result which can be used for further post processing idImage* taaMotionVectorsImage; // motion vectors for TAA projection idImage* taaResolvedImage; @@ -661,7 +660,7 @@ public: idImage* scratchImage; idImage* scratchImage2; idImage* accumImage; - idImage* currentRenderImage; // for SS_POST_PROCESS shaders, Doom 3 legacy but in HDR now + idImage* currentRenderImage; // for 3D scene SS_POST_PROCESS shaders for effects like heatHaze, in HDR now idImage* currentDepthImage; // for motion blur, SSAO and everything that requires depth to world pos reconstruction idImage* originalCurrentRenderImage; // currentRenderImage before any changes for stereo rendering idImage* loadingIconImage; // loading icon must exist always diff --git a/neo/renderer/Image_intrinsic.cpp b/neo/renderer/Image_intrinsic.cpp index 00554616..7ce5f4d8 100644 --- a/neo/renderer/Image_intrinsic.cpp +++ b/neo/renderer/Image_intrinsic.cpp @@ -1069,7 +1069,6 @@ void idImageManager::CreateIntrinsicImages() blueNoiseImage256 = globalImages->ImageFromFunction( "_blueNoise256", R_CreateBlueNoise256Image ); currentRenderHDRImage = globalImages->ImageFromFunction( "_currentRenderHDR", R_HDR_RGBA16FImage_ResNative_MSAAOpt ); - currentRenderHDRImage64 = globalImages->ImageFromFunction( "_currentRenderHDR64", R_HDR_RGBA16FImage_Res64 ); ldrImage = globalImages->ImageFromFunction( "_currentRenderLDR", R_LdrNativeImage ); taaMotionVectorsImage = ImageFromFunction( "_taaMotionVectors", R_HDR_RG16FImage_ResNative ); // RB: could be shared with _currentNormals.zw @@ -1122,7 +1121,8 @@ void idImageManager::CreateIntrinsicImages() scratchImage = ImageFromFunction( "_scratch", R_RGBA8Image ); scratchImage2 = ImageFromFunction( "_scratch2", R_RGBA8Image ); accumImage = ImageFromFunction( "_accum", R_RGBA8Image_RT ); - currentRenderImage = globalImages->ImageFromFunction( "_currentRender", R_LdrNativeImage );; + currentRenderImage = globalImages->ImageFromFunction( "_currentRender", R_HDR_RGBA16FImage_ResNative ); + //currentRenderImage = globalImages->ImageFromFunction( "_currentRender", R_LdrNativeImage ); currentDepthImage = ImageFromFunction( "_currentDepth", R_DepthImage ); // save a copy of this for material comparison, because currentRenderImage may get diff --git a/neo/renderer/NVRHI/Framebuffer_NVRHI.cpp b/neo/renderer/NVRHI/Framebuffer_NVRHI.cpp index 444a0dbe..1db2663b 100644 --- a/neo/renderer/NVRHI/Framebuffer_NVRHI.cpp +++ b/neo/renderer/NVRHI/Framebuffer_NVRHI.cpp @@ -164,10 +164,6 @@ void Framebuffer::ResizeFramebuffers( bool reloadImages ) .addColorAttachment( globalImages->envprobeHDRImage->texture ) .setDepthAttachment( globalImages->envprobeDepthImage->texture ) ); - globalFramebuffers.hdr64FBO = new Framebuffer( "_hdr64", - nvrhi::FramebufferDesc() - .addColorAttachment( globalImages->currentRenderHDRImage64->texture ) ); - for( int i = 0; i < MAX_SSAO_BUFFERS; i++ ) { globalFramebuffers.ambientOcclusionFBO[i] = new Framebuffer( va( "_aoRender%i", i ), @@ -224,7 +220,6 @@ void Framebuffer::ReloadImages() globalImages->currentRenderImage->Reload( false, tr.backend.commandList ); globalImages->currentDepthImage->Reload( false, tr.backend.commandList ); globalImages->currentRenderHDRImage->Reload( false, tr.backend.commandList ); - globalImages->currentRenderHDRImage64->Reload( false, tr.backend.commandList ); for( int i = 0; i < MAX_SSAO_BUFFERS; i++ ) { globalImages->ambientOcclusionImage[i]->Reload( false, tr.backend.commandList ); diff --git a/neo/renderer/RenderBackend.cpp b/neo/renderer/RenderBackend.cpp index 3343fc67..3558706b 100644 --- a/neo/renderer/RenderBackend.cpp +++ b/neo/renderer/RenderBackend.cpp @@ -6094,7 +6094,6 @@ void idRenderBackend::PostProcess( const void* data ) if( r_useFilmicPostProcessing.GetBool() ) { -#if defined( USE_NVRHI ) BlitParameters blitParms; blitParms.sourceTexture = ( nvrhi::ITexture* )globalImages->ldrImage->GetTextureID(); blitParms.targetFramebuffer = globalFramebuffers.smaaBlendFBO->GetApiObject(); @@ -6104,13 +6103,6 @@ void idRenderBackend::PostProcess( const void* data ) GL_SelectTexture( 0 ); globalImages->smaaBlendImage->Bind(); -#else - globalImages->currentRenderImage->CopyFramebuffer( viewport.x1, viewport.y1, viewport.GetWidth(), viewport.GetHeight() ); - - GL_SelectTexture( 0 ); - globalImages->currentRenderImage->Bind(); -#endif - globalFramebuffers.ldrFBO->Bind(); @@ -6143,21 +6135,21 @@ void idRenderBackend::PostProcess( const void* data ) GL_SelectTexture( 0 ); renderProgManager.Unbind(); -#if defined( USE_NVRHI ) + // copy LDR result to DX12 / Vulkan swapchain image BlitParameters blitParms; blitParms.sourceTexture = ( nvrhi::ITexture* )globalImages->ldrImage->GetTextureID(); + blitParms.targetFramebuffer = deviceManager->GetCurrentFramebuffer(); + blitParms.targetViewport = nvrhi::Viewport( renderSystem->GetWidth(), renderSystem->GetHeight() ); + commonPasses.BlitTexture( commandList, blitParms, &bindingCache ); + + // copy LDR result to postProcFBO which is HDR but also used by postFX + blitParms.sourceTexture = ( nvrhi::ITexture* )globalImages->ldrImage->GetTextureID(); blitParms.targetFramebuffer = globalFramebuffers.postProcFBO->GetApiObject(); blitParms.targetViewport = nvrhi::Viewport( viewport.x1, viewport.x2, viewport.y1, viewport.y2, viewport.zmin, viewport.zmax ); commonPasses.BlitTexture( commandList, blitParms, &bindingCache ); GL_SelectTexture( 0 ); globalImages->currentRenderImage->Bind(); -#else - globalImages->currentRenderImage->CopyFramebuffer( viewport.x1, viewport.y1, viewport.GetWidth(), viewport.GetHeight() ); - - GL_SelectTexture( 0 ); - globalImages->currentRenderImage->Bind(); -#endif renderLog.CloseBlock(); renderLog.CloseMainBlock();