Files
UnrealEngineUWP/Engine/Source/Runtime/Renderer/Private/VirtualShadowMaps/VirtualShadowMapProjection.h

90 lines
2.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
VirtualShadowMapProjection.h
=============================================================================*/
#pragma once
#include "CoreMinimal.h"
#include "RenderGraphResources.h"
#include "ScreenSpaceDenoise.h"
class FVirtualShadowMapClipmap;
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,
GBufferAndSingleLayerWaterDepth = 2
};
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);
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,
const FIntRect ScissorRect,
FVirtualShadowMapArray& VirtualShadowMapArray,
EVirtualShadowMapProjectionInputType InputType,
int32 VirtualShadowMapId,
FRDGTextureRef ShadowMaskBits,
FRDGTextureRef OutputShadowMaskTexture);