1+ #pragma once
2+
3+ #include "GPUTransform.h"
4+ #include "HLSLNamespace.h"
5+ #include "HLSLTypes.h"
6+
7+ #if __cplusplus
8+ #include <RenderCore/RenderGraph/ShaderParameterStruct.h>
9+
10+ #include <RHIModule/Descriptors/BindlessIndex.h>
11+
12+ #else
13+ typedef uint32_t BindlessIndex ;
14+ #endif
15+
16+ VT_NAMESPACE_HLSL_BEGIN
17+ enum RenderSceneInstanceFlags
18+ {
19+ RSIF_None = 0 ,
20+ RSIF_Valid = 1u << 0u
21+ };
22+
23+ enum LightSceneInstanceFlags
24+ {
25+ LSIF_None = 0 ,
26+ LSIF_Valid = 1u << 0 ,
27+ LSIF_CastShadows = 1u << 1u
28+ };
29+
30+ enum LightType
31+ {
32+ LT_Directional = 0 ,
33+ LT_Point = 1 ,
34+ LT_Spot = 2 ,
35+ LT_Sky = 3
36+ };
37+
38+ struct GPUMesh
39+ {
40+ BindlessIndex vertexPositionsBuffer ;
41+ BindlessIndex vertexMaterialBuffer ;
42+ BindlessIndex vertexAnimationBuffer ;
43+ BindlessIndex indexBuffer ;
44+
45+ uint32_t vertexStartOffset ;
46+ uint32_t indexStartOffset ;
47+ };
48+
49+ struct GPUMaterial
50+ {
51+ BindlessIndex textures [8 ];
52+ BindlessIndex samplers [8 ];
53+
54+ uint32_t numTextures ;
55+ uint32_t flags ;
56+ uint32_t padding [2 ];
57+ };
58+
59+ struct RenderSceneInstanceData
60+ {
61+ GPUTransform transform ;
62+
63+ uint32_t meshIndex ;
64+ uint32_t materialIndex ;
65+ uint32_t entityId ;
66+ RenderSceneInstanceFlags flags ;
67+
68+ uint32_t isAnimated ;
69+ uint32_t boneOffset ;
70+
71+ uint2 padding ;
72+ };
73+
74+ struct LightSceneInstanceData
75+ {
76+ LightType type ;
77+ float3 position ;
78+
79+ LightSceneInstanceFlags flags ;
80+ float3 direction ;
81+
82+ float intensity ;
83+ float3 color ;
84+
85+ // Point: .x=radius, .y=falloff
86+ // Spot: .x=range, .y=falloff, .z=lightAngleScale .w=lightAngleOffset
87+ // Dir: .x=angularRadius
88+ // Sky: x=LOD
89+ float4 lightSpecific ;
90+ };
91+ VT_NAMESPACE_HLSL_END
92+
93+ #if __cplusplus
94+ BEGIN_SHADER_PARAMETER_STRUCT (GPUSceneParametersBindless )
95+ SHADER_PARAMETER_BUFFER_SRV (StructuredBuffer < RenderSceneInstanceData > , R_RenderSceneInstances )
96+ SHADER_PARAMETER_BUFFER_SRV (StructuredBuffer < GPUMesh > , R_GPUMeshes )
97+ SHADER_PARAMETER_BUFFER_SRV (StructuredBuffer < GPUMaterial > , R_GPUMaterials )
98+ END_SHADER_PARAMETER_STRUCT ()
99+
100+ BEGIN_SHADER_PARAMETER_STRUCT (LightSceneParameters )
101+ SHADER_PARAMETER_BUFFER_SRV (StructuredBuffer < LightSceneInstanceData > , R_LightSceneInstances )
102+ SHADER_PARAMETER_BUFFER_SRV (StructuredBuffer < uint > , R_ValidLightSceneInstances )
103+ SHADER_PARAMETER_BUFFER_SRV (StructuredBuffer < uint > , R_ValidLightSceneInstanceCounter )
104+ END_SHADER_PARAMETER_STRUCT ()
105+
106+ BEGIN_SHADER_PARAMETER_STRUCT (CulledLightSceneParameters )
107+ SHADER_PARAMETER_BUFFER_SRV (StructuredBuffer < uint > , R_VisibleLightIndices )
108+ SHADER_PARAMETER_STRUCT_INCLUDE (LightSceneParameters , LightScene )
109+ SHADER_PARAMETER (uint2 , NumLightTiles )
110+ END_SHADER_PARAMETER_STRUCT ()
111+ #endif
0 commit comments