// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Containers/ArrayView.h" #include "GlobalShader.h" #include "HAL/Platform.h" #include "RHIDefinitions.h" #include "RenderGraph.h" #include "RenderGraphDefinitions.h" #include "ShaderParameterMacros.h" #include "RenderGraphFwd.h" struct FSubstrateSceneData; class FScene; class FGlobalShaderMap; class FRDGBuilder; class FRHICommandListImmediate; class FScene; struct IPooledRenderTarget; template class TRefCountPtr; class FRenderTargetWriteMask { public: static RENDERER_API void Decode( FRHICommandListImmediate& RHICmdList, FGlobalShaderMap* ShaderMap, TArrayView InRenderTargets, TRefCountPtr& OutRTWriteMask, ETextureCreateFlags RTWriteMaskFastVRamConfig, const TCHAR* RTWriteMaskDebugName); static RENDERER_API void Decode( FRDGBuilder& GraphBuilder, FGlobalShaderMap* ShaderMap, TArrayView InRenderTargets, FRDGTextureRef& OutRTWriteMask, ETextureCreateFlags RTWriteMaskFastVRamConfig, const TCHAR* RTWriteMaskDebugName); }; class FDepthBounds { public: struct FDepthBoundsValues { float MinDepth; float MaxDepth; }; static RENDERER_API FDepthBoundsValues CalculateNearFarDepthExcludingSky(); }; // A minimal uniform struct providing necessary access for external systems to Substrate parameters. DECLARE_UNIFORM_BUFFER_STRUCT(FSubstratePublicGlobalUniformParameters, RENDERER_API) namespace Substrate { void PreInitViews(FScene& Scene); void PostRender(FScene& Scene); RENDERER_API TRDGUniformBufferRef GetPublicGlobalUniformBuffer(FRDGBuilder& GraphBuilder, FScene& Scene); } // A minimal uniform struct providing necessary access for external systems to Nanite Ray Tracing parameters. DECLARE_UNIFORM_BUFFER_STRUCT(FNaniteRayTracingUniformParameters, RENDERER_API) namespace Nanite { RENDERER_API TRDGUniformBufferRef GetPublicGlobalRayTracingUniformBuffer(); }