@@ -83,7 +83,9 @@ void RecordRenderGraph(RenderRequest renderRequest,
8383
8484 UpdateParentExposure ( m_RenderGraph , hdCamera ) ;
8585
86- TextureHandle backBuffer = m_RenderGraph . ImportBackbuffer ( target . id ) ;
86+ TextureHandle colorBackBuffer = ImportColorBackBuffer ( m_RenderGraph , target . colorId ) ;
87+ TextureHandle depthBackBuffer = ImportDepthBackBuffer ( m_RenderGraph , target . depthId ) ;
88+
8789 TextureHandle colorBuffer = CreateColorBuffer ( m_RenderGraph , hdCamera , msaa , true ) ;
8890 m_NonMSAAColorBuffer = CreateColorBuffer ( m_RenderGraph , hdCamera , false ) ;
8991 TextureHandle currentColorPyramid = m_RenderGraph . ImportTexture ( hdCamera . GetCurrentFrameRT ( ( int ) HDCameraFrameHistoryType . ColorBufferMipChain ) ) ;
@@ -348,7 +350,7 @@ void RecordRenderGraph(RenderRequest renderRequest,
348350 bool postProcessIsFinalPass = HDUtils . PostProcessIsFinalPass ( hdCamera , aovRequest ) ;
349351 TextureHandle afterPostProcessBuffer = RenderAfterPostProcessObjects ( m_RenderGraph , hdCamera , pathTracing , cullingResults , prepassOutput ) ;
350352 var postProcessTargetFace = postProcessIsFinalPass ? target . face : CubemapFace . Unknown ;
351- TextureHandle postProcessDest = RenderPostProcess ( m_RenderGraph , prepassOutput , colorBuffer , backBuffer , uiBuffer , afterPostProcessBuffer , opticalFogTransmittance , cullingResults , hdCamera , postProcessTargetFace , postProcessIsFinalPass ) ;
353+ TextureHandle postProcessDest = RenderPostProcess ( m_RenderGraph , prepassOutput , colorBuffer , colorBackBuffer , uiBuffer , afterPostProcessBuffer , opticalFogTransmittance , cullingResults , hdCamera , postProcessTargetFace , postProcessIsFinalPass ) ;
352354
353355 var xyMapping = GenerateDebugHDRxyMapping ( m_RenderGraph , hdCamera , postProcessDest ) ;
354356 GenerateDebugImageHistogram ( m_RenderGraph , hdCamera , postProcessDest ) ;
@@ -370,8 +372,8 @@ void RecordRenderGraph(RenderRequest renderRequest,
370372 RenderCustomPass ( m_RenderGraph , hdCamera , postProcessDest , prepassOutput , customPassCullingResults , cullingResults , CustomPassInjectionPoint . AfterPostProcess , aovRequest , aovCustomPassBuffers ) ;
371373
372374 // Copy and rescale depth buffer for XR devices
373- if ( hdCamera . xr . enabled && hdCamera . xr . copyDepth )
374- CopyDepth ( m_RenderGraph , hdCamera , prepassOutput . resolvedDepthBuffer , backBuffer , true ) ;
375+ if ( hdCamera . xr . enabled && hdCamera . xr . copyDepth && depthBackBuffer . IsValid ( ) )
376+ CopyDepth ( m_RenderGraph , hdCamera , prepassOutput . resolvedDepthBuffer , depthBackBuffer , true ) ;
375377
376378 if ( m_CurrentDebugDisplaySettings . data . historyBuffersView != - 1 )
377379 {
@@ -408,7 +410,7 @@ void RecordRenderGraph(RenderRequest renderRequest,
408410
409411 for ( int viewIndex = 0 ; viewIndex < hdCamera . viewCount ; ++ viewIndex )
410412 {
411- BlitFinalCameraTexture ( m_RenderGraph , hdCamera , postProcessDest , backBuffer , uiBuffer , afterPostProcessBuffer , viewIndex , HDROutputActiveForCameraType ( hdCamera ) , target . face ) ;
413+ BlitFinalCameraTexture ( m_RenderGraph , hdCamera , postProcessDest , colorBackBuffer , uiBuffer , afterPostProcessBuffer , viewIndex , HDROutputActiveForCameraType ( hdCamera ) , target . face ) ;
412414 }
413415
414416 if ( aovRequest . isValid )
@@ -419,25 +421,25 @@ void RecordRenderGraph(RenderRequest renderRequest,
419421 // we need to do this separately.
420422 for ( int viewIndex = 0 ; viewIndex < hdCamera . viewCount ; ++ viewIndex )
421423 {
422- if ( target . targetDepth != null )
424+ if ( target . isProbe && depthBackBuffer . IsValid ( ) )
423425 {
424- BlitFinalCameraTexture ( m_RenderGraph , hdCamera , prepassOutput . resolvedDepthBuffer , m_RenderGraph . ImportTexture ( target . targetDepth ) , uiBuffer , afterPostProcessBuffer , viewIndex , outputsToHDR : false , cubemapFace : target . face ) ;
426+ BlitFinalCameraTexture ( m_RenderGraph , hdCamera , prepassOutput . resolvedDepthBuffer , depthBackBuffer , uiBuffer , afterPostProcessBuffer , viewIndex , outputsToHDR : false , cubemapFace : target . face ) ;
425427 }
426428 }
427429
428430 SendColorGraphicsBuffer ( m_RenderGraph , hdCamera ) ;
429431
430- SetFinalTarget ( m_RenderGraph , hdCamera , prepassOutput . resolvedDepthBuffer , backBuffer , target . face ) ;
432+ SetFinalTarget ( m_RenderGraph , hdCamera , prepassOutput . resolvedDepthBuffer , colorBackBuffer , target . face ) ;
431433
432- RenderWireOverlay ( m_RenderGraph , hdCamera , backBuffer ) ;
434+ RenderWireOverlay ( m_RenderGraph , hdCamera , colorBackBuffer ) ;
433435
434436 RenderGizmos ( m_RenderGraph , hdCamera , GizmoSubset . PostImageEffects ) ;
435437
436438 // Stop XR single pass before rendering screenspace UI
437439 StopXRSinglePass ( m_RenderGraph , hdCamera ) ;
438440
439441 if ( renderRequest . isLast )
440- RenderScreenSpaceOverlayUI ( m_RenderGraph , hdCamera , backBuffer ) ;
442+ RenderScreenSpaceOverlayUI ( m_RenderGraph , hdCamera , colorBackBuffer ) ;
441443 }
442444 }
443445
@@ -2098,6 +2100,51 @@ void RenderDistortion(RenderGraph renderGraph,
20982100 }
20992101 }
21002102
2103+ TextureHandle ImportColorBackBuffer ( RenderGraph renderGraph , RenderTargetIdentifier colorBackBufferId )
2104+ {
2105+ if ( m_CurrentColorBackBuffer == null )
2106+ {
2107+ m_CurrentColorBackBuffer = RTHandles . Alloc ( colorBackBufferId , "Backbuffer color" ) ;
2108+ }
2109+ else
2110+ {
2111+ RTHandleStaticHelpers . SetRTHandleUserManagedWrapper ( ref m_CurrentColorBackBuffer , colorBackBufferId ) ;
2112+ }
2113+
2114+ // Importing the backbuffer, using dummy information as we used to do with ImportBackbuffer API
2115+ // TODO: Pass the right information using engine APIs and camera settings like in URP
2116+ RenderTargetInfo dummyImportInfo = new RenderTargetInfo ( ) ;
2117+ dummyImportInfo . width = dummyImportInfo . height = dummyImportInfo . volumeDepth = dummyImportInfo . msaaSamples = 1 ;
2118+ dummyImportInfo . format = GraphicsFormat . R8G8B8A8_SRGB ;
2119+
2120+ return m_RenderGraph . ImportTexture ( m_CurrentColorBackBuffer , dummyImportInfo ) ;
2121+ }
2122+
2123+ TextureHandle ImportDepthBackBuffer ( RenderGraph renderGraph , RenderTargetIdentifier depthBackBufferId )
2124+ {
2125+ if ( m_CurrentDepthBackBuffer == null )
2126+ {
2127+ m_CurrentDepthBackBuffer = RTHandles . Alloc ( depthBackBufferId , "Backbuffer depth" ) ;
2128+ }
2129+ else
2130+ {
2131+ RTHandleStaticHelpers . SetRTHandleUserManagedWrapper ( ref m_CurrentDepthBackBuffer , depthBackBufferId ) ;
2132+ }
2133+
2134+ // We might have requests without depth buffer
2135+ bool noDepthBackBuffer = depthBackBufferId == default ( RenderTargetIdentifier ) ;
2136+ if ( noDepthBackBuffer )
2137+ return TextureHandle . nullHandle ;
2138+
2139+ // Importing the backbuffer, using dummy information as we used to do with ImportBackbuffer API
2140+ // TODO: Pass the right information using engine APIs and camera settings like in URP
2141+ RenderTargetInfo dummyImportInfo = new RenderTargetInfo ( ) ;
2142+ dummyImportInfo . width = dummyImportInfo . height = dummyImportInfo . volumeDepth = dummyImportInfo . msaaSamples = 1 ;
2143+ dummyImportInfo . format = CoreUtils . GetDefaultDepthStencilFormat ( ) ;
2144+
2145+ return m_RenderGraph . ImportTexture ( m_CurrentDepthBackBuffer , dummyImportInfo ) ;
2146+ }
2147+
21012148 TextureHandle CreateColorBuffer ( RenderGraph renderGraph , HDCamera hdCamera , bool msaa , bool fallbackToBlack = false )
21022149 {
21032150#if UNITY_2020_2_OR_NEWER
0 commit comments