Files
UnrealEngineUWP/Engine/Shaders/Shared/VirtualShadowMapDefinitions.h
ola olsson 4adb667865 Moved VSM stats to shared header and implement piping all of the them through to csv (if the stat category is enabled).
#rb andrew.lauritzen

[CL 33823518 by ola olsson in ue5-main branch]
2024-05-22 06:06:43 -04:00

97 lines
3.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
/*================================================================================================
VirtualShadowMapDefinitions.h: used in virtual shadow map shaders and C++ code to define common constants
!!! Changing this file requires recompilation of the engine !!!
=================================================================================================*/
#pragma once
#define VIRTUAL_SHADOW_MAP_VISUALIZE_NONE 0
#define VIRTUAL_SHADOW_MAP_VISUALIZE_SHADOW_FACTOR (1 << 0)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_CLIPMAP_OR_MIP (1 << 1)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_VIRTUAL_PAGE (1 << 2)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_CACHED_PAGE (1 << 3)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_SMRT_RAY_COUNT (1 << 4)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_CLIPMAP_VIRTUAL_SPACE (1 << 5)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_GENERAL_DEBUG (1 << 6)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_DIRTY_PAGE (1 << 7)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_GPU_INVALIDATED_PAGE (1 << 8)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_MERGED_PAGE (1 << 9)
#define VIRTUAL_SHADOW_MAP_VISUALIZE_NANITE_OVERDRAW (1 << 10)
#define VSM_PROJ_FLAG_CURRENT_DISTANT_LIGHT (1U << 0)
#define VSM_PROJ_FLAG_UNCACHED (1U << 1) // Used to indicate that the light is uncached and should only render to dynamic pages
#define VSM_PROJ_FLAG_UNREFERENCED (1U << 2) // Used to indicate that the light is not referenced/rendered to this render
// Hard limit for max distant lights supported 8k for now - we may revise later. We need to keep them in a fixed range for now to make allocation easy and minimize overhead for indexing.
#define VSM_MAX_SINGLE_PAGE_SHADOW_MAPS (1024U * 8U)
#define VSM_INVALIDATION_PAYLOAD_FLAG_NONE 0
#define VSM_INVALIDATION_PAYLOAD_FLAG_FORCE_STATIC (1 << 0)
// 8 bit flags, 24 bit VSM ID
#define VSM_INVALIDATION_PAYLOAD_FLAG_BITS 8
#define VSM_STAT_REQUESTED_THIS_FRAME_PAGES 0
#define VSM_STAT_STATIC_CACHED_PAGES 1
#define VSM_STAT_STATIC_INVALIDATED_PAGES 2
#define VSM_STAT_DYNAMIC_CACHED_PAGES 3
#define VSM_STAT_DYNAMIC_INVALIDATED_PAGES 4
#define VSM_STAT_EMPTY_PAGES 5
#define VSM_STAT_NON_NANITE_INSTANCES_TOTAL 6
#define VSM_STAT_NON_NANITE_INSTANCES_DRAWN 7
#define VSM_STAT_NON_NANITE_INSTANCES_HZB_CULLED 8
#define VSM_STAT_NON_NANITE_INSTANCES_PAGE_MASK_CULLED 9
#define VSM_STAT_NON_NANITE_INSTANCES_EMPTY_RECT_CULLED 10
#define VSM_STAT_NON_NANITE_INSTANCES_FRUSTUM_CULLED 11
#define VSM_STAT_NUM_PAGES_TO_MERGE 12
#define VSM_STAT_NUM_PAGES_TO_CLEAR 13
#define VSM_STAT_NUM_HZB_PAGES_BUILT 14
#define VSM_STAT_ALLOCATED_NEW 15
#define VSM_STAT_NANITE_TRIANGLES 16
#define VSM_STAT_NANITE_INSTANCES_MAIN 17
#define VSM_STAT_NANITE_INSTANCES_POST 18
#define VSM_STAT_WPO_CONSIDERED_PAGES 19
#define VSM_STAT_TMP_1 20
#define VSM_STAT_TMP_2 21
#define VSM_STAT_TMP_3 22
#define VSM_STAT_NUM 23
#ifdef __cplusplus
#include "HLSLTypeAliases.h"
namespace UE::HLSL
{
#endif
struct FVSMVisibleInstanceCmd
{
uint PackedPageInfo;
uint InstanceIdAndFlags;
uint IndirectArgIndex;
};
struct FVSMCullingBatchInfo
{
uint FirstPrimaryView;
uint NumPrimaryViews;
uint PrimitiveRevealedOffset;
uint PrimitiveRevealedNum;
};
struct FNextVirtualShadowMapData
{
int NextVirtualShadowMapId;
int2 PageAddressOffset;
int _Padding;
};
#ifdef __cplusplus
} // namespace UE::HLSL
using FVSMVisibleInstanceCmd = UE::HLSL::FVSMVisibleInstanceCmd;
using FVSMCullingBatchInfo = UE::HLSL::FVSMCullingBatchInfo;
using FNextVirtualShadowMapData = UE::HLSL::FNextVirtualShadowMapData;
#endif