// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "ScreenPass.h" #include "TranslucentRendering.h" #include "SystemTextures.h" #include "ScenePrivate.h" class FSceneTextureParameters; class FVirtualShadowMapArray; namespace Nanite { struct FRasterResults; } // Returns whether the full post process pipeline is enabled. Otherwise, the minimal set of operations are performed. bool IsPostProcessingEnabled(const FViewInfo& View); // Returns whether the post process pipeline supports using compute passes. bool IsPostProcessingWithComputeEnabled(ERHIFeatureLevel::Type FeatureLevel); // Returns whether the post process pipeline supports propagating the alpha channel. bool IsPostProcessingWithAlphaChannelSupported(); using FPostProcessVS = FScreenPassVS; struct FPostProcessingInputs { TRDGUniformBufferRef SceneTextures = nullptr; FRDGTextureRef ViewFamilyTexture = nullptr; FRDGTextureRef CustomDepthTexture = nullptr; FTranslucencyViewResourcesMap TranslucencyViewResourcesMap; void Validate() const { check(SceneTextures); check(ViewFamilyTexture); check(TranslucencyViewResourcesMap.IsValid()); } }; void AddPostProcessingPasses( FRDGBuilder& GraphBuilder, const FViewInfo& View, int32 ViewIndex, bool bAnyLumenActive, const FPostProcessingInputs& Inputs, const Nanite::FRasterResults* NaniteRasterResults, FInstanceCullingManager& InstanceCullingManager, FVirtualShadowMapArray* VirtualShadowMapArray, struct FLumenSceneFrameTemporaries& LumenFrameTemporaries); void AddDebugViewPostProcessingPasses(FRDGBuilder& GraphBuilder, const FViewInfo& View, const FPostProcessingInputs& Inputs, const Nanite::FRasterResults* NaniteRasterResults); void AddVisualizeCalibrationMaterialPostProcessingPasses(FRDGBuilder& GraphBuilder, const FViewInfo& View, const FPostProcessingInputs& Inputs, const UMaterialInterface* InMaterialInterface); struct FMobilePostProcessingInputs { TRDGUniformBufferRef SceneTextures = nullptr; FRDGTextureRef ViewFamilyTexture = nullptr; void Validate() const { check(ViewFamilyTexture); check(SceneTextures); } }; void AddMobilePostProcessingPasses(FRDGBuilder& GraphBuilder, FScene* Scene, const FViewInfo& View, const FMobilePostProcessingInputs& Inputs, FInstanceCullingManager& InstanceCullingManager); void AddBasicPostProcessPasses(FRDGBuilder& GraphBuilder, const FViewInfo& View); FRDGTextureRef AddProcessPlanarReflectionPass(FRDGBuilder& GraphBuilder, const FViewInfo& View, FRDGTextureRef SceneColorTexture);