Files
UnrealEngine/Engine/Source/Runtime/Renderer/Private/VirtualShadowMaps/VirtualShadowMapProjection.h
2025-05-18 13:04:45 +08:00

96 lines
2.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
VirtualShadowMapProjection.h
=============================================================================*/
#pragma once
#include "CoreTypes.h"
#include "Math/MathFwd.h"
#include "RenderGraphFwd.h"
#include "Templates/SharedPointerFwd.h"
#include "ShaderParameterMacros.h"
class FLightSceneInfo;
class FViewInfo;
class FVirtualShadowMapArray;
class FVirtualShadowMapClipmap;
struct FMinimalSceneTextures;
struct FTiledVSMProjection
{
FRDGBufferRef DrawIndirectParametersBuffer;
FRDGBufferRef DispatchIndirectParametersBuffer;
FRDGBufferSRVRef TileListDataBufferSRV;
uint32 TileSize;
};
// Note: Must match the definitions in VirtualShadowMapPageManagement.usf!
enum class EVirtualShadowMapProjectionInputType
{
GBuffer = 0,
HairStrands = 1
};
const TCHAR* ToString(EVirtualShadowMapProjectionInputType In);
void RenderVirtualShadowMapProjection(
FRDGBuilder& GraphBuilder,
const FMinimalSceneTextures& SceneTextures,
const FViewInfo& View, int32 ViewIndex,
FVirtualShadowMapArray& VirtualShadowMapArray,
const FIntRect ScissorRect,
EVirtualShadowMapProjectionInputType InputType,
const TSharedPtr<FVirtualShadowMapClipmap>& Clipmap,
bool bModulateRGB,
FTiledVSMProjection* TiledVSMProjection,
FRDGTextureRef OutputShadowMaskTexture,
const TSharedPtr<FVirtualShadowMapClipmap>& FirstPersonClipmap);
void RenderVirtualShadowMapProjection(
FRDGBuilder& GraphBuilder,
const FMinimalSceneTextures& SceneTextures,
const FViewInfo& View, int32 ViewIndex,
FVirtualShadowMapArray& VirtualShadowMapArray,
const FIntRect ScissorRect,
EVirtualShadowMapProjectionInputType InputType,
const FLightSceneInfo& LightSceneInfo,
int32 VirtualShadowMapId,
FRDGTextureRef OutputShadowMaskTexture);
FRDGTextureRef CreateVirtualShadowMapMaskBits(
FRDGBuilder& GraphBuilder,
const FMinimalSceneTextures& SceneTextures,
FVirtualShadowMapArray& VirtualShadowMapArray,
const TCHAR* Name);
void RenderVirtualShadowMapProjectionOnePass(
FRDGBuilder& GraphBuilder,
const FMinimalSceneTextures& SceneTextures,
const FViewInfo& View, int32 ViewIndex,
FVirtualShadowMapArray& VirtualShadowMapArray,
EVirtualShadowMapProjectionInputType InputType,
FRDGTextureRef ShadowMaskBits);
void CompositeVirtualShadowMapMask(
FRDGBuilder& GraphBuilder,
const FViewInfo& View,
const FIntRect ScissorRect,
const FRDGTextureRef Input,
bool bDirectionalLight,
bool bModulateRGB,
FTiledVSMProjection* TiledVSMProjection,
FRDGTextureRef OutputShadowMaskTexture);
void CompositeVirtualShadowMapFromMaskBits(
FRDGBuilder& GraphBuilder,
const FMinimalSceneTextures& SceneTextures,
const FViewInfo& View, int32 ViewIndex,
const FIntRect ScissorRect,
FVirtualShadowMapArray& VirtualShadowMapArray,
EVirtualShadowMapProjectionInputType InputType,
int32 VirtualShadowMapId,
FRDGTextureRef ShadowMaskBits,
FRDGTextureRef OutputShadowMaskTexture);