109 lines
5.4 KiB
C
109 lines
5.4 KiB
C
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
/*================================================================================================
|
|
RayTracingDebugDefinitions.ush: used in ray tracing debug shaders and C++ code to define common constants
|
|
!!! Changing this file requires recompilation of the engine !!!
|
|
=================================================================================================*/
|
|
|
|
#pragma once
|
|
|
|
#define RAY_TRACING_DEBUG_VIZ_RADIANCE 0
|
|
#define RAY_TRACING_DEBUG_VIZ_WORLD_NORMAL 1
|
|
#define RAY_TRACING_DEBUG_VIZ_BASE_COLOR 2
|
|
#define RAY_TRACING_DEBUG_VIZ_DIFFUSE_COLOR 3
|
|
#define RAY_TRACING_DEBUG_VIZ_SPECULAR_COLOR 4
|
|
#define RAY_TRACING_DEBUG_VIZ_OPACITY 5
|
|
#define RAY_TRACING_DEBUG_VIZ_METALLIC 6
|
|
#define RAY_TRACING_DEBUG_VIZ_SPECULAR 7
|
|
#define RAY_TRACING_DEBUG_VIZ_ROUGHNESS 8
|
|
#define RAY_TRACING_DEBUG_VIZ_IOR 9
|
|
#define RAY_TRACING_DEBUG_VIZ_SHADING_MODEL 10
|
|
#define RAY_TRACING_DEBUG_VIZ_BLENDING_MODE 11
|
|
#define RAY_TRACING_DEBUG_VIZ_LIGHTING_CHANNEL_MASK 12
|
|
#define RAY_TRACING_DEBUG_VIZ_CUSTOM_DATA 13
|
|
#define RAY_TRACING_DEBUG_VIZ_GBUFFER_AO 14
|
|
#define RAY_TRACING_DEBUG_VIZ_INDIRECT_IRRADIANCE 15
|
|
#define RAY_TRACING_DEBUG_VIZ_WORLD_POSITION 16
|
|
#define RAY_TRACING_DEBUG_VIZ_HITKIND 17
|
|
#define RAY_TRACING_DEBUG_VIZ_BARYCENTRICS 18
|
|
#define RAY_TRACING_DEBUG_VIZ_PRIMARY_RAYS 19
|
|
#define RAY_TRACING_DEBUG_VIZ_WORLD_TANGENT 20
|
|
#define RAY_TRACING_DEBUG_VIZ_ANISOTROPY 21
|
|
#define RAY_TRACING_DEBUG_VIZ_INSTANCES 22
|
|
#define RAY_TRACING_DEBUG_VIZ_TIMING_TRAVERSAL 23
|
|
#define RAY_TRACING_DEBUG_VIZ_TIMING_ANY_HIT 24
|
|
#define RAY_TRACING_DEBUG_VIZ_TIMING_MATERIAL 25
|
|
#define RAY_TRACING_DEBUG_VIZ_TRIANGLES 26
|
|
#define RAY_TRACING_DEBUG_VIZ_FAR_FIELD 27
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_NODE 28
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_CLUSTER 29
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_TRIANGLE 30
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_ALL 31
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_STATISTICS 32
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_NODE 33
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_CLUSTER 34
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_TRIANGLE 35
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_ALL 36
|
|
#define RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_STATISTICS 37
|
|
#define RAY_TRACING_DEBUG_VIZ_DYNAMIC_INSTANCES 38
|
|
#define RAY_TRACING_DEBUG_VIZ_PROXY_TYPE 39
|
|
#define RAY_TRACING_DEBUG_VIZ_PICKER 40
|
|
#define RAY_TRACING_DEBUG_VIZ_INSTANCE_OVERLAP 41
|
|
#define RAY_TRACING_DEBUG_VIZ_TRIANGLE_HITCOUNT 42
|
|
#define RAY_TRACING_DEBUG_VIZ_HITCOUNT_PER_INSTANCE 43
|
|
#define RAY_TRACING_DEBUG_VIZ_LIGHT_GRID_COUNT 44
|
|
#define RAY_TRACING_DEBUG_VIZ_SUBSTRATE_DATA 45
|
|
|
|
#define RAY_TRACING_DEBUG_PICKER_DOMAIN_TRIANGLE 0
|
|
#define RAY_TRACING_DEBUG_PICKER_DOMAIN_INSTANCE 1
|
|
#define RAY_TRACING_DEBUG_PICKER_DOMAIN_SEGMENT 2
|
|
#define RAY_TRACING_DEBUG_PICKER_DOMAIN_FLAGS 3
|
|
#define RAY_TRACING_DEBUG_PICKER_DOMAIN_MASK 4
|
|
|
|
#if defined(__cplusplus)
|
|
#define UINT_TYPE unsigned int
|
|
#define INT_TYPE int
|
|
#define INLINE_ATTR inline
|
|
#else
|
|
#define UINT_TYPE uint
|
|
#define INT_TYPE int
|
|
#define INLINE_ATTR
|
|
#endif
|
|
|
|
INLINE_ATTR bool RequiresRayTracingDebugCHS(UINT_TYPE DebugVisualizationMode)
|
|
{
|
|
return DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_INSTANCES
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRIANGLES
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_DYNAMIC_INSTANCES
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_PROXY_TYPE
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_PICKER
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_INSTANCE_OVERLAP
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRIANGLE_HITCOUNT
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_HITCOUNT_PER_INSTANCE;
|
|
}
|
|
|
|
INLINE_ATTR bool IsRayTracingDebugTraversalMode(UINT_TYPE DebugVisualizationMode)
|
|
{
|
|
return DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_NODE
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_CLUSTER
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_TRIANGLE
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_ALL
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_PRIMARY_STATISTICS
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_NODE
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_CLUSTER
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_TRIANGLE
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_ALL
|
|
|| DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_TRAVERSAL_SECONDARY_STATISTICS;
|
|
}
|
|
|
|
INLINE_ATTR bool RayTracingDebugModeSupportsInline(UINT_TYPE DebugVisualizationMode)
|
|
{
|
|
const bool bIsBarycentricsMode = DebugVisualizationMode == RAY_TRACING_DEBUG_VIZ_BARYCENTRICS;
|
|
const bool bUsesDebugCHSAndNotHitCount = RequiresRayTracingDebugCHS(DebugVisualizationMode)
|
|
&& (DebugVisualizationMode != RAY_TRACING_DEBUG_VIZ_TRIANGLE_HITCOUNT)
|
|
&& (DebugVisualizationMode != RAY_TRACING_DEBUG_VIZ_HITCOUNT_PER_INSTANCE);
|
|
const bool bIsTraversalMode = IsRayTracingDebugTraversalMode(DebugVisualizationMode);
|
|
|
|
return bIsBarycentricsMode || bUsesDebugCHSAndNotHitCount || bIsTraversalMode;
|
|
}
|