|
|
@ -685,12 +685,9 @@ namespace UnityEngine.Rendering.PostProcessing |
|
|
aoRenderer.Get().RenderAfterOpaque(context); |
|
|
aoRenderer.Get().RenderAfterOpaque(context); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
bool fsrRequiresOpaque = context.IsSuperResolutionActive() && (superResolution.autoGenerateReactiveMask || superResolution.autoGenerateTransparencyAndComposition); |
|
|
|
|
|
|
|
|
|
|
|
bool isFogActive = fog.IsEnabledAndSupported(context); |
|
|
bool isFogActive = fog.IsEnabledAndSupported(context); |
|
|
bool hasCustomOpaqueOnlyEffects = HasOpaqueOnlyEffects(context); |
|
|
bool hasCustomOpaqueOnlyEffects = HasOpaqueOnlyEffects(context); |
|
|
int opaqueOnlyEffects = 0; |
|
|
int opaqueOnlyEffects = 0; |
|
|
opaqueOnlyEffects += fsrRequiresOpaque ? 1 : 0; |
|
|
|
|
|
opaqueOnlyEffects += isScreenSpaceReflectionsActive ? 1 : 0; |
|
|
opaqueOnlyEffects += isScreenSpaceReflectionsActive ? 1 : 0; |
|
|
opaqueOnlyEffects += isFogActive ? 1 : 0; |
|
|
opaqueOnlyEffects += isFogActive ? 1 : 0; |
|
|
opaqueOnlyEffects += hasCustomOpaqueOnlyEffects ? 1 : 0; |
|
|
opaqueOnlyEffects += hasCustomOpaqueOnlyEffects ? 1 : 0; |
|
|
@ -715,13 +712,6 @@ namespace UnityEngine.Rendering.PostProcessing |
|
|
UpdateSrcDstForOpaqueOnly(ref srcTarget, ref dstTarget, context, cameraTarget, opaqueOnlyEffects); |
|
|
UpdateSrcDstForOpaqueOnly(ref srcTarget, ref dstTarget, context, cameraTarget, opaqueOnlyEffects); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (fsrRequiresOpaque) |
|
|
|
|
|
{ |
|
|
|
|
|
m_opaqueOnly = context.GetScreenSpaceTemporaryRT(); |
|
|
|
|
|
cmd.BuiltinBlit(context.source, m_opaqueOnly); |
|
|
|
|
|
opaqueOnlyEffects--; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (isScreenSpaceReflectionsActive) |
|
|
if (isScreenSpaceReflectionsActive) |
|
|
{ |
|
|
{ |
|
|
ssrRenderer.RenderOrLog(context); |
|
|
ssrRenderer.RenderOrLog(context); |
|
|
@ -742,6 +732,13 @@ namespace UnityEngine.Rendering.PostProcessing |
|
|
cmd.ReleaseTemporaryRT(srcTarget); |
|
|
cmd.ReleaseTemporaryRT(srcTarget); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Create a copy of the opaque-only color buffer for auto-reactive mask generation
|
|
|
|
|
|
if (context.IsSuperResolutionActive() && (superResolution.autoGenerateReactiveMask || superResolution.autoGenerateTransparencyAndComposition)) |
|
|
|
|
|
{ |
|
|
|
|
|
m_opaqueOnly = context.GetScreenSpaceTemporaryRT(colorFormat: sourceFormat); |
|
|
|
|
|
m_LegacyCmdBufferOpaque.BuiltinBlit(cameraTarget, m_opaqueOnly); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// Post-transparency stack
|
|
|
// Post-transparency stack
|
|
|
int tempRt = -1; |
|
|
int tempRt = -1; |
|
|
bool forceNanKillPass = (!m_NaNKilled && stopNaNPropagation && RuntimeUtilities.isFloatingPointFormat(sourceFormat)); |
|
|
bool forceNanKillPass = (!m_NaNKilled && stopNaNPropagation && RuntimeUtilities.isFloatingPointFormat(sourceFormat)); |
|
|
|