Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
ShaderBindingsDef.hpp
Go to the documentation of this file.
1#pragma once
2
10
11// Pattern: STAGE_BINDINGS(X) where X(name, value) will be expanded differently per use case
12
13#define DISPATCHER_BINDINGS( X ) \
14 X(DISPATCHER_COUNTER, 0) \
15 X(DISPATCHER_BUFFER, 1)
16
17#define MESHLET_UNPACKING_DISPATCH_BINDINGS( X ) \
18 X( MESHLET_UNPACKING_DISPATCH_COUNTER, 0 ) \
19 X( MESHLET_UNPACKING_DISPATCH_BUFFER, 1 ) \
20 X( MESHLET_UNPACKING_DISPATCH_LOD_COUNTER, 2 )
21
22#define MESHLET_CULLING_DISPATCH_BINDINGS( X ) \
23 X( MESHLET_CULLING_DISPATCH_COUNTER, 0 ) \
24 X( MESHLET_CULLING_DISPATCH_BUFFER, 1 )
25
29#define PRIMITIVE_BINNING_BINDINGS( X ) \
30 X( BINNING_CULLING_SURVIVORS, 0 ) \
31 X( BINNING_PRIMITIVE_MESHLET_DATA, 1 ) \
32 X( BINNING_ALLOCATIONS, 2 ) \
33 X( BINNING_PIPELINE_COUNTERS, 3 ) \
34 X( BINNING_SURVIVOR_COUNT, 4 ) \
35 X( BINNING_LOD_CLUSTER_SURVIVORS, 5 ) \
36 X( BINNING_LOD_CLUSTER_SURVIVOR_COUNT, 6 ) \
37 X( BINNING_CLUSTER_LOD_DATA, 7 ) \
38 X( BINNING_PRIMITIVE_MESHLET_DATA_LOD, 8 )
39
43#define MESHLET_UNPACKING_V2_BINDINGS( X ) \
44 X( UNPACKING_ALLOCATIONS, 0 ) \
45 X( UNPACKING_BIN_OFFSETS, 1 ) \
46 X( UNPACKING_OUTPUT, 2 ) \
47 X( UNPACKING_SURVIVOR_COUNT, 3 ) \
48 X( UNPACKING_LOD_CLUSTER_SURVIVOR_COUNT, 4 )
49
51#define MESHLET_UNPACKING_BINDINGS( X ) \
52 X( MESHLET_UNPACKING_OBJECT_IDS, 0 ) \
53 X( MESHLET_UNPACKING_OBJECT_DATA, 1 ) \
54 X( MESHLET_UNPACKING_MESHLET_INDICES, 2 ) \
55 X( MESHLET_UNPACKING_COUNTER, 3 )
56
57#define PRIMITIVE_CULLING_BINDINGS( X ) \
58 X( PRIMITIVE_CULLING_DATA, 0 ) \
59 X( PRIMITIVE_MESHLET_DATA, 1 ) \
60 X( PRIMITIVE_CULLING_FRUSTUM_PLANES, 2 ) \
61 X( PRIMITIVE_IDS, 3 ) \
62 X( PRIMITIVE_CULLING_COUNTER, 4 ) \
63 X( PRIMITIVE_MESH_UNPACKING_DATA, 5 ) \
64 X( PRIMITIVE_LOCAL_BOUNDS, 8 ) \
65 X( PRIMITIVE_PER_OBJECT_DATA, 9 ) \
66 X( PRIMITIVE_VS_INDIRECT_DRAW, 13 ) \
67 X( PRIMITIVE_VS_INDIRECT_COUNT, 14 ) \
68 X( PRIMITIVE_SINGLE_MESHLET_GEO, 15 ) \
69 X( PRIMITIVE_INSTANCE_CULLING_DATA, 16 ) \
70 X( PRIMITIVE_MESH_GEOMETRY_DATA, 17 ) \
71 X( CLUSTER_LOD_DATA, 18 ) \
72 X( CLUSTER_GROUP_DATA, 19 ) \
73 X( LOD_CONFIG, 20 ) \
74 X( LOD_CLUSTER_SURVIVORS, 21 ) \
75 X( LOD_CLUSTER_SURVIVOR_COUNT, 22 ) \
76 X( LOD_VISIBLE_PRIMITIVES, 23 ) \
77 X( LOD_VISIBLE_PRIMITIVE_COUNT, 24 ) \
78 X( ACTIVE_INSTANCE_IDS, 25 ) \
79 X( PRIMITIVE_SUN_SHADOW_CASCADE_BUFFER, 26 )
80
81#define MESHLET_CULLING_BINDINGS( X ) \
82 X( MESHLET_CULLING_INDICES, 0 ) \
83 X( MESHLET_CULLING_BOUNDS, 1 ) \
84 X( MESHLET_CULLING_FRUSTUM_PLANES, 2 ) \
85 X( MESHLET_CULLING_COUNTS, 3 ) \
86 X( MESHLET_CULLING_BINNED_RENDERING, 4 )
87
88#define PREPARE_DRAW_BINDINGS( X ) \
89 X( PREPARE_DRAW_MESHLET_COUNTER, 0 ) \
90 X( PREPARE_DRAW_INDIRECT_DRAW, 1 )
91
93#define VS_BINNING_BINDINGS( X ) \
94 X( VS_BINNING_VISIBLE_INSTANCES, 0 ) \
95 X( VS_BINNING_VISIBLE_COUNT, 1 ) \
96 X( VS_BINNING_MESH_GEOMETRY_DATA, 2 ) \
97 X( VS_BINNING_INSTANCE_CULLING_DATA, 3 ) \
98 X( VS_BINNING_ALLOCATIONS, 4 ) \
99 X( VS_BINNING_GEOMETRY_COUNTERS, 5 )
100
102#define VS_INSTANCE_UNPACKING_BINDINGS( X ) \
103 X( VS_UNPACKING_ALLOCATIONS, 0 ) \
104 X( VS_UNPACKING_VISIBLE_COUNT, 1 ) \
105 X( VS_UNPACKING_INSTANCE_IDS, 2 ) \
106 X( VS_UNPACKING_GEOMETRY_OFFSETS, 3 )
107
109#define VS_PREPARE_DRAW_BINDINGS( X ) \
110 X( VS_PREPARE_SINGLE_MESHLET_GEO, 0 ) \
111 X( VS_PREPARE_GEOMETRY_COUNTERS, 1 ) \
112 X( VS_PREPARE_INDIRECT_DRAWS, 2 ) \
113 X( VS_PREPARE_DRAW_COUNT, 3 ) \
114 X( VS_PREPARE_GEOMETRY_OFFSETS, 4 ) \
115 X( VS_PREPARE_PIPELINE_DRAW_OFFSETS, 5 )
116
118#define VS_PREFIX_SUM_BINDINGS( X ) \
119 X( VS_PREFIX_COUNTERS, 0 ) \
120 X( VS_PREFIX_OFFSETS, 1 )
121
124#define CLUSTER_PREFIX_SUM_BINDINGS( X ) \
125 X( PREFIX_SUM_VISIBLE_PRIMITIVES, 0 ) \
126 X( PREFIX_SUM_VISIBLE_COUNT, 1 ) \
127 X( PREFIX_SUM_OUTPUT, 2 ) \
128 X( PREFIX_SUM_TOTAL_CLUSTERS, 3 ) \
129 X( PREFIX_SUM_DISPATCH_BUFFER, 4 )
130
133#define CLUSTER_LOD_SELECTION_BINDINGS( X ) \
134 X( LOD_SELECT_VISIBLE_PRIMITIVES, 0 ) \
135 X( LOD_SELECT_VISIBLE_COUNT, 1 ) \
136 X( LOD_SELECT_PREFIX_SUM, 2 ) \
137 X( LOD_SELECT_TOTAL_CLUSTERS, 3 ) \
138 X( LOD_SELECT_CLUSTER_LOD_DATA, 4 ) \
139 X( LOD_SELECT_CLUSTER_GROUP_DATA, 5 ) \
140 X( LOD_SELECT_LOD_CONFIG, 6 ) \
141 X( LOD_SELECT_PER_OBJECT_DATA, 7 ) \
142 X( LOD_SELECT_CLUSTER_SURVIVORS, 8 ) \
143 X( LOD_SELECT_CLUSTER_SURVIVOR_COUNT, 9 )
144
145#define GRAPHICS_BINDINGS( X ) \
146 X( VERTEX_BUFFER, 0 ) \
147 X( VIEW_PROJECTION_UBO, 1 ) \
148 X( MESHLET_BUFFER, 2 ) \
149 X( MESHLET_TRIANGLES_BUFFER, 3 ) \
150 X( BINNED_VISIBLE_MESHLET_INDEX_BUFFER, 4 ) \
151 X( PER_OBJECT_SSBO, 5 ) \
152 X( MESH_BUFFER, 6 ) \
153 X( MESH_PRIMITIVE_BUFFER, 7 ) \
154 X( MESHLET_TO_OBJECT_MAP_BUFFER, 8 ) \
155 X( MATERIAL_DIFFUSE_FLAT_COLOR, 9 ) \
156 X( MATERIAL_DIFFUSE_SHADER, 10 ) \
157 X( MATERIAL_MOVABLE_DIFFUSE, 11 ) \
158 X( MATERIAL_NORMALS, 12 ) \
159 X( MATERIAL_L0, 13 ) \
160 X( MATERIAL_L1, 14 ) \
161 X( MATERIAL_L2, 15 ) \
162 X( MATERIAL_DYNAMIC_TEXTURES, 16 ) \
163 X( MATERIAL_STATIC_LIGHTMAP, 17 ) \
164 X( VS_INSTANCE_IDS, 18 ) \
165 X( SH_PROBE_BUFFER, 19 ) \
166 X( BONE_VERTEX_DATA, 20 ) \
167 X( BONE_MATRIX_BUFFER, 21 ) \
168 X( BONE_MATRIX_OFFSETS, 22 ) \
169 X( MESH_GEOMETRY_DATA_GRAPHICS, 23 ) \
170 X( INSTANCE_DATA_GRAPHICS, 24 ) \
171 X( ENVIRONMENT_CUBEMAP, 25 ) \
172 X( BRDF_LUT, 26 ) \
173 X( SH_PROBE_VOLUME_BUFFER, 27 ) \
174 X( SH_PROBE_ROOT_INDEX_BUFFER, 28 ) \
175 X( SH_PROBE_OCTREE_NODE_BUFFER, 29 ) \
176 X( DYNAMIC_POINT_LIGHT_BUFFER, 30 ) \
177 X( SUN_LIGHT_BUFFER, 31 ) \
178 X( LIGHTMAP_STREAMING_METADATA, 32 ) \
179 X( LIGHTMAP_STREAMING_FEEDBACK, 33 ) \
180 X( SUN_SHADOW_CASCADE_BUFFER, 34 ) \
181 X( SUN_SHADOW_MAP, 35 ) \
182 X( DYNAMIC_SUN_SHADOW_MAP, 36 ) \
183 X( TEXTURE_ARRAY, 37 )