Quake II RTX doxygen  1.0 dev
global_ubo.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2018 Christoph Schied
3 Copyright (C) 2019, NVIDIA CORPORATION. All rights reserved.
4 
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 
20 #ifndef _GLOBAL_UBO_DESCRIPTOR_SET_LAYOUT_H_
21 #define _GLOBAL_UBO_DESCRIPTOR_SET_LAYOUT_H_
22 
23 #include "constants.h"
24 
25 #define GLOBAL_UBO_BINDING_IDX 0
26 #define GLOBAL_INSTANCE_BUFFER_BINDING_IDX 1
27 
28 
29 #define UBO_CVAR_DO(name, default_value) GLOBAL_UBO_VAR_LIST_DO(float, name)
30 
31 // The variables listed in UBO_CVAR_LIST are registered as console variables and copied directly into the UBO.
32 // See main.c for the implementation of that.
33 
34 // Variables that have "_lf", "_hf" or "_spec" suffix apply to the low-frequency, high-frequency or specular lighting channels, respectively.
35 
36 #define UBO_CVAR_LIST \
37  UBO_CVAR_DO(flt_antilag_hf, 1) /* A-SVGF anti-lag filter strength, [0..inf) */ \
38  UBO_CVAR_DO(flt_antilag_lf, 0.2) \
39  UBO_CVAR_DO(flt_antilag_spec, 2) \
40  UBO_CVAR_DO(flt_atrous_depth, 0.5) /* wavelet fitler sensitivity to depth, [0..inf) */ \
41  UBO_CVAR_DO(flt_atrous_deflicker_lf, 2) /* max brightness difference between adjacent pixels in the LF channel, (0..inf) */ \
42  UBO_CVAR_DO(flt_atrous_hf, 4) /* number of a-trous wavelet filter iterations on the LF channel, [0..4] */ \
43  UBO_CVAR_DO(flt_atrous_lf, 4) \
44  UBO_CVAR_DO(flt_atrous_spec, 3) \
45  UBO_CVAR_DO(flt_atrous_lum_hf, 16) /* wavelet filter sensitivity to luminance, [0..inf) */ \
46  UBO_CVAR_DO(flt_atrous_normal_hf, 64) /* wavelet filter sensitivity to normals, [0..inf) */ \
47  UBO_CVAR_DO(flt_atrous_normal_lf, 8) \
48  UBO_CVAR_DO(flt_atrous_normal_spec, 1) \
49  UBO_CVAR_DO(flt_enable, 1) /* switch for the entire SVGF reconstruction, 0 or 1 */ \
50  UBO_CVAR_DO(flt_fixed_albedo, 0) /* if nonzero, replaces surface albedo with that value after filtering */ \
51  UBO_CVAR_DO(flt_grad_transparent, 0.3) /* gradient scale for reflections and refractions, [0..1] */ \
52  UBO_CVAR_DO(flt_min_alpha_color_hf, 0.1) /* minimum weight for the new frame data, color channel, (0..1] */ \
53  UBO_CVAR_DO(flt_min_alpha_color_lf, 0.01) \
54  UBO_CVAR_DO(flt_min_alpha_color_spec, 0.1) \
55  UBO_CVAR_DO(flt_min_alpha_moments_hf, 0.01) /* minimum weight for the new frame data, moments channel, (0..1] */ \
56  UBO_CVAR_DO(flt_scale_hf, 1) /* overall per-channel output scale, [0..inf) */ \
57  UBO_CVAR_DO(flt_scale_lf, 1) \
58  UBO_CVAR_DO(flt_scale_overlay, 1.0) /* scale for transparent and emissive objects visible with primary rays */ \
59  UBO_CVAR_DO(flt_scale_spec, 1) \
60  UBO_CVAR_DO(flt_show_gradients, 0) /* switch for showing the gradient values as overlay image, 0 or 1 */ \
61  UBO_CVAR_DO(flt_taa, 1) /* switch for temporal AA, 0 or 1 */ \
62  UBO_CVAR_DO(flt_taa_anti_sparkle, 0.25) /* strength of the anti-sparkle filter of TAA, [0..1] */ \
63  UBO_CVAR_DO(flt_taa_variance, 0.7) /* temporal AA variance window scale, 0 means disable NCC, [0..inf) */ \
64  UBO_CVAR_DO(flt_taa_history_weight, 0.95) /* temporal AA weight of the history sample, [0..1) */ \
65  UBO_CVAR_DO(flt_temporal_hf, 1) /* temporal filter strength, [0..1] */ \
66  UBO_CVAR_DO(flt_temporal_lf, 1) \
67  UBO_CVAR_DO(flt_temporal_spec, 1) \
68  UBO_CVAR_DO(pt_aperture, 2.0) /* aperture size for the Depth of Field effect, in world units */ \
69  UBO_CVAR_DO(pt_aperture_angle, 0) /* rotation of the polygonal aperture, [0..1] */ \
70  UBO_CVAR_DO(pt_aperture_type, 0) /* number of aperture polygon edges, circular if less than 3 */ \
71  UBO_CVAR_DO(pt_beam_softness, 1.0) /* beam softness */ \
72  UBO_CVAR_DO(pt_bump_scale, 1.0) /* scale for normal maps [0..1] */ \
73  UBO_CVAR_DO(pt_cameras, 1) /* switch for security cameras, 0 or 1 */ \
74  UBO_CVAR_DO(pt_direct_polygon_lights, 1) /* switch for direct lighting from local polygon lights, 0 or 1 */ \
75  UBO_CVAR_DO(pt_direct_roughness_threshold, 0.18) /* roughness value where the path tracer switches direct light specular sampling from NDF based to light based, [0..1] */ \
76  UBO_CVAR_DO(pt_direct_area_threshold, 0.2) /* projected area of triangle light at which direct light sampling for specular is replaced with random sampling, [0..1] */ \
77  UBO_CVAR_DO(pt_direct_sphere_lights, 1) /* switch for direct lighting from local sphere lights, 0 or 1 */ \
78  UBO_CVAR_DO(pt_direct_sun_light, 1) /* switch for direct lighting from the sun, 0 or 1 */ \
79  UBO_CVAR_DO(pt_explosion_brightness, 4.0) /* brightness factor for explosions */ \
80  UBO_CVAR_DO(pt_fake_roughness_threshold, 0.20) /* roughness value where the path tracer starts switching indirect light specular sampling from NDF based to SH based, [0..1] */ \
81  UBO_CVAR_DO(pt_focus, 200) /* focal distance for the Depth of Field effect, in world units */ \
82  UBO_CVAR_DO(pt_indirect_polygon_lights, 1) /* switch for bounce lighting from local polygon lights, 0 or 1 */ \
83  UBO_CVAR_DO(pt_indirect_sphere_lights, 1) /* switch for bounce lighting from local sphere lights, 0 or 1 */ \
84  UBO_CVAR_DO(pt_light_stats, 1) /* switch for statistical light PDF correction, 0 or 1 */ \
85  UBO_CVAR_DO(pt_max_log_sky_luminance, -3) /* maximum sky luminance, log2 scale, used for polygon light selection, (-inf..inf) */ \
86  UBO_CVAR_DO(pt_min_log_sky_luminance, -10) /* minimum sky luminance, log2 scale, used for polygon light selection, (-inf..inf) */ \
87  UBO_CVAR_DO(pt_metallic_override, -1) /* overrides metallic parameter of all materials if non-negative, [0..1] */ \
88  UBO_CVAR_DO(pt_ndf_trim, 0.9) /* trim factor for GGX NDF sampling (0..1] */ \
89  UBO_CVAR_DO(pt_num_bounce_rays, 1) /* number of bounce rays, [1..inf) */ \
90  UBO_CVAR_DO(pt_particle_softness, 1.0) /* particle softness */ \
91  UBO_CVAR_DO(pt_reflect_refract, 2) /* number of reflection or refraction bounces: 0, 1 or 2 */ \
92  UBO_CVAR_DO(pt_roughness_override, -1) /* overrides roughness of all materials if non-negative, [0..1] */ \
93  UBO_CVAR_DO(pt_specular_anti_flicker, 2) /* fade factor for rough reflections of surfaces far away, [0..inf) */ \
94  UBO_CVAR_DO(pt_show_sky, 0) /* switch for showing the sky polygons, 0 or 1 */ \
95  UBO_CVAR_DO(pt_sun_bounce_range, 2000) /* range limiter for indirect lighting from the sun, helps reduce noise, (0..inf) */ \
96  UBO_CVAR_DO(pt_sun_specular, 1.0) /* scale for the direct specular reflection of the sun */ \
97  UBO_CVAR_DO(pt_texture_lod_bias, 0) /* LOD bias for textures, (-inf..inf) */ \
98  UBO_CVAR_DO(pt_toksvig, 1) /* intensity of Toksvig roughness correction, [0..inf) */ \
99  UBO_CVAR_DO(pt_thick_glass, 0) /* switch for thick glass refraction: 0 (disabled), 1 (reference mode only), 2 (real-time mode) */ \
100  UBO_CVAR_DO(pt_water_density, 0.5) /* scale for light extinction in water and other media, [0..inf) */ \
101  UBO_CVAR_DO(tm_debug, 0) /* switch to show the histogram (1) or tonemapping curve (2) */ \
102  UBO_CVAR_DO(tm_dyn_range_stops, 7.0) /* Effective display dynamic range in linear stops = log2((max+refl)/(darkest+refl)) (eqn. 6), (-inf..0) */ \
103  UBO_CVAR_DO(tm_enable, 1) /* switch for tone mapping, 0 or 1 */ \
104  UBO_CVAR_DO(tm_exposure_bias, -1.0) /* exposure bias, log-2 scale */ \
105  UBO_CVAR_DO(tm_exposure_speed_down, 1) /* speed of exponential eye adaptation when scene gets darker, 0 means instant */ \
106  UBO_CVAR_DO(tm_exposure_speed_up, 2) /* speed of exponential eye adaptation when scene gets brighter, 0 means instant */ \
107  UBO_CVAR_DO(tm_high_percentile, 90) /* high percentile for computing histogram average, (0..100] */ \
108  UBO_CVAR_DO(tm_knee_start, 0.6) /* where to switch from a linear to a rational function ramp in the post-tonemapping process, (0..1) */ \
109  UBO_CVAR_DO(tm_low_percentile, 70) /* low percentile for computing histogram average, [0..100) */ \
110  UBO_CVAR_DO(tm_max_luminance, 1.0) /* auto-exposure maximum luminance, (0..inf) */ \
111  UBO_CVAR_DO(tm_min_luminance, 0.0002) /* auto-exposure minimum luminance, (0..inf) */ \
112  UBO_CVAR_DO(tm_noise_blend, 0.5) /* Amount to blend noise values between autoexposed and flat image [0..1] */ \
113  UBO_CVAR_DO(tm_noise_stops, -12) /* Absolute noise level in photographic stops, (-inf..inf) */ \
114  UBO_CVAR_DO(tm_reinhard, 0.5) /* blend factor between adaptive curve tonemapper (0) and Reinhard curve (1) */ \
115  UBO_CVAR_DO(tm_slope_blur_sigma, 12.0) /* sigma for Gaussian blur of tone curve slopes, (0..inf) */ \
116  UBO_CVAR_DO(tm_white_point, 10.0) /* how bright colors can be before they become white, (0..inf) */ \
117 
118 
119 #define GLOBAL_UBO_VAR_LIST \
120  GLOBAL_UBO_VAR_LIST_DO(int, current_frame_idx) \
121  GLOBAL_UBO_VAR_LIST_DO(int, width) \
122  GLOBAL_UBO_VAR_LIST_DO(int, height)\
123  GLOBAL_UBO_VAR_LIST_DO(int, current_gpu_slice_width) \
124  \
125  GLOBAL_UBO_VAR_LIST_DO(int, medium) \
126  GLOBAL_UBO_VAR_LIST_DO(float, time) \
127  GLOBAL_UBO_VAR_LIST_DO(int, first_person_model) \
128  GLOBAL_UBO_VAR_LIST_DO(int, environment_type) \
129  \
130  GLOBAL_UBO_VAR_LIST_DO(vec3, sun_direction) \
131  GLOBAL_UBO_VAR_LIST_DO(float, bloom_intensity) \
132  GLOBAL_UBO_VAR_LIST_DO(vec3, sun_tangent) \
133  GLOBAL_UBO_VAR_LIST_DO(float, sun_tan_half_angle) \
134  GLOBAL_UBO_VAR_LIST_DO(vec3, sun_bitangent) \
135  GLOBAL_UBO_VAR_LIST_DO(float, sun_bounce_scale) \
136  GLOBAL_UBO_VAR_LIST_DO(vec3, sun_color) \
137  GLOBAL_UBO_VAR_LIST_DO(float, sun_cos_half_angle) \
138  GLOBAL_UBO_VAR_LIST_DO(vec3, sun_direction_envmap) \
139  GLOBAL_UBO_VAR_LIST_DO(int, sun_visible) \
140  \
141  GLOBAL_UBO_VAR_LIST_DO(float, sky_transmittance) \
142  GLOBAL_UBO_VAR_LIST_DO(float, sky_phase_g) \
143  GLOBAL_UBO_VAR_LIST_DO(float, sky_amb_phase_g) \
144  GLOBAL_UBO_VAR_LIST_DO(float, sun_solid_angle) \
145  \
146  GLOBAL_UBO_VAR_LIST_DO(vec3, physical_sky_ground_radiance) \
147  GLOBAL_UBO_VAR_LIST_DO(int, physical_sky_flags) \
148  \
149  GLOBAL_UBO_VAR_LIST_DO(float, sky_scattering) \
150  GLOBAL_UBO_VAR_LIST_DO(float, temporal_blend_factor) \
151  GLOBAL_UBO_VAR_LIST_DO(int, planet_albedo_map) \
152  GLOBAL_UBO_VAR_LIST_DO(int, planet_normal_map) \
153  \
154  GLOBAL_UBO_VAR_LIST_DO(int, num_sphere_lights) \
155  GLOBAL_UBO_VAR_LIST_DO(int , num_static_lights) \
156  GLOBAL_UBO_VAR_LIST_DO(int, num_static_primitives) \
157  GLOBAL_UBO_VAR_LIST_DO(int, cluster_debug_index) \
158  \
159  GLOBAL_UBO_VAR_LIST_DO(int, water_normal_texture) \
160  GLOBAL_UBO_VAR_LIST_DO(float, pt_env_scale) \
161  GLOBAL_UBO_VAR_LIST_DO(float, cylindrical_hfov) \
162  GLOBAL_UBO_VAR_LIST_DO(float, cylindrical_hfov_prev) \
163  \
164  GLOBAL_UBO_VAR_LIST_DO(int, pt_swap_checkerboard) \
165  GLOBAL_UBO_VAR_LIST_DO(float, shadow_map_depth_scale) \
166  GLOBAL_UBO_VAR_LIST_DO(float, god_rays_intensity) \
167  GLOBAL_UBO_VAR_LIST_DO(float, god_rays_eccentricity) \
168  \
169  GLOBAL_UBO_VAR_LIST_DO(int, num_cameras) \
170  GLOBAL_UBO_VAR_LIST_DO(int, screen_image_width) \
171  GLOBAL_UBO_VAR_LIST_DO(int, screen_image_height) \
172  GLOBAL_UBO_VAR_LIST_DO(int, prev_gpu_slice_width) \
173  \
174  GLOBAL_UBO_VAR_LIST_DO(int, prev_width) \
175  GLOBAL_UBO_VAR_LIST_DO(int, prev_height)\
176  GLOBAL_UBO_VAR_LIST_DO(float, inv_width)\
177  GLOBAL_UBO_VAR_LIST_DO(float, inv_height)\
178  \
179  GLOBAL_UBO_VAR_LIST_DO(float, prev_adapted_luminance) \
180  GLOBAL_UBO_VAR_LIST_DO(float, padding1) \
181  GLOBAL_UBO_VAR_LIST_DO(float, padding2) \
182  GLOBAL_UBO_VAR_LIST_DO(float, padding3) \
183  \
184  GLOBAL_UBO_VAR_LIST_DO(vec4, world_center) \
185  GLOBAL_UBO_VAR_LIST_DO(vec4, world_size) \
186  GLOBAL_UBO_VAR_LIST_DO(vec4, world_half_size_inv) \
187  \
188  GLOBAL_UBO_VAR_LIST_DO(vec4, sphere_light_data[MAX_LIGHT_SOURCES * 2]) \
189  GLOBAL_UBO_VAR_LIST_DO(vec4, cam_pos) \
190  GLOBAL_UBO_VAR_LIST_DO(mat4, V) \
191  GLOBAL_UBO_VAR_LIST_DO(mat4, invV) \
192  GLOBAL_UBO_VAR_LIST_DO(mat4, V_prev) \
193  GLOBAL_UBO_VAR_LIST_DO(mat4, P) \
194  GLOBAL_UBO_VAR_LIST_DO(mat4, invP) \
195  GLOBAL_UBO_VAR_LIST_DO(mat4, P_prev) \
196  GLOBAL_UBO_VAR_LIST_DO(mat4, invP_prev) \
197  GLOBAL_UBO_VAR_LIST_DO(mat4, environment_rotation_matrix) \
198  GLOBAL_UBO_VAR_LIST_DO(mat4, shadow_map_VP) \
199  GLOBAL_UBO_VAR_LIST_DO(mat4, security_camera_data[MAX_CAMERAS]) \
200  \
201  UBO_CVAR_LIST // WARNING: Do not put any other members into global_ubo after this: the CVAR list is not vec4-aligned
202 
203 #define INSTANCE_BUFFER_VAR_LIST \
204  INSTANCE_BUFFER_VAR_LIST_DO(int, model_indices [SHADER_MAX_ENTITIES + SHADER_MAX_BSP_ENTITIES]) \
205  INSTANCE_BUFFER_VAR_LIST_DO(uint, model_current_to_prev [SHADER_MAX_ENTITIES]) \
206  INSTANCE_BUFFER_VAR_LIST_DO(uint, model_prev_to_current [SHADER_MAX_ENTITIES]) \
207  INSTANCE_BUFFER_VAR_LIST_DO(uint, world_current_to_prev [SHADER_MAX_BSP_ENTITIES]) \
208  INSTANCE_BUFFER_VAR_LIST_DO(uint, world_prev_to_current [SHADER_MAX_BSP_ENTITIES]) \
209  INSTANCE_BUFFER_VAR_LIST_DO(uint, bsp_prim_offset [SHADER_MAX_BSP_ENTITIES]) \
210  INSTANCE_BUFFER_VAR_LIST_DO(uint, model_idx_offset [SHADER_MAX_ENTITIES]) \
211  INSTANCE_BUFFER_VAR_LIST_DO(uint, model_cluster_id [SHADER_MAX_ENTITIES]) \
212  INSTANCE_BUFFER_VAR_LIST_DO(uint, model_cluster_id_prev [SHADER_MAX_ENTITIES]) \
213  INSTANCE_BUFFER_VAR_LIST_DO(uint, bsp_cluster_id [SHADER_MAX_BSP_ENTITIES]) \
214  INSTANCE_BUFFER_VAR_LIST_DO(uint, bsp_cluster_id_prev [SHADER_MAX_BSP_ENTITIES]) \
215  INSTANCE_BUFFER_VAR_LIST_DO(ModelInstance, model_instances [SHADER_MAX_ENTITIES]) \
216  INSTANCE_BUFFER_VAR_LIST_DO(ModelInstance, model_instances_prev [SHADER_MAX_ENTITIES]) \
217  INSTANCE_BUFFER_VAR_LIST_DO(BspMeshInstance, bsp_mesh_instances [SHADER_MAX_BSP_ENTITIES]) \
218  INSTANCE_BUFFER_VAR_LIST_DO(BspMeshInstance, bsp_mesh_instances_prev [SHADER_MAX_BSP_ENTITIES]) \
219  /* stores the offset into the instance buffer in numberof primitives */ \
220  INSTANCE_BUFFER_VAR_LIST_DO(uint, model_instance_buf_offset[SHADER_MAX_ENTITIES]) \
221  INSTANCE_BUFFER_VAR_LIST_DO(uint, model_instance_buf_size [SHADER_MAX_ENTITIES]) \
222  INSTANCE_BUFFER_VAR_LIST_DO(uint, bsp_instance_buf_offset [SHADER_MAX_BSP_ENTITIES]) \
223  INSTANCE_BUFFER_VAR_LIST_DO(uint, bsp_instance_buf_size [SHADER_MAX_BSP_ENTITIES]) \
224 
225 #ifndef VKPT_SHADER
226 
227 #if SHADER_MAX_ENTITIES != MAX_ENTITIES
228 #error need to update constant here
229 #endif
230 
231 typedef uint32_t uvec4_t[4];
232 typedef int ivec4_t[4];
233 typedef uint32_t uint;
234 
235 typedef struct {
236  float M[16]; // 16
237  uint32_t material; int offset_curr, offset_prev; float backlerp; // 4
238  float alpha; float padding[3];
239 } ModelInstance;
240 
241 typedef struct {
242  float M[16];
243  int frame; float padding[3];
245 
246 #define int_t int32_t
247 typedef struct QVKUniformBuffer_s {
248 #define GLOBAL_UBO_VAR_LIST_DO(type, name) type##_t name;
250 #undef GLOBAL_UBO_VAR_LIST_DO
252 
253 typedef struct QVKInstanceBuffer_s {
254 #define INSTANCE_BUFFER_VAR_LIST_DO(type, name) type name;
256 #undef INSTANCE_BUFFER_VAR_LIST_DO
258 #undef int_t
259 
260 #else
261 
262 struct ModelInstance {
263  mat4 M;
264  uvec4 mat_offset_backlerp;
265  vec4 alpha;
266 };
267 
268 struct BspMeshInstance {
269  mat4 M;
270  ivec4 frame;
271 };
272 
273 struct GlobalUniformBuffer {
274 #define GLOBAL_UBO_VAR_LIST_DO(type, name) type name;
276 #undef GLOBAL_UBO_VAR_LIST_DO
277 };
278 
279 struct GlobalUniformInstanceBuffer {
280 #define INSTANCE_BUFFER_VAR_LIST_DO(type, name) type name;
282 #undef INSTANCE_BUFFER_VAR_LIST_DO
283 };
284 
285 layout(set = GLOBAL_UBO_DESC_SET_IDX, binding = GLOBAL_UBO_BINDING_IDX, std140) uniform UBO {
286  GlobalUniformBuffer global_ubo;
287 };
288 
289 layout(set = GLOBAL_UBO_DESC_SET_IDX, binding = GLOBAL_INSTANCE_BUFFER_BINDING_IDX) readonly buffer InstanceUBO {
290  GlobalUniformInstanceBuffer instance_buffer;
291 };
292 
293 #endif
294 
295 #undef UBO_CVAR_DO
296 
297 #endif /*_GLOBAL_UBO_DESCRIPTOR_SET_LAYOUT_H_*/
QVKUniformBuffer_s
Definition: global_ubo.h:247
BspMeshInstance::M
float M[16]
Definition: global_ubo.h:242
uint
uint32_t uint
Definition: global_ubo.h:233
GLOBAL_INSTANCE_BUFFER_BINDING_IDX
#define GLOBAL_INSTANCE_BUFFER_BINDING_IDX
Definition: global_ubo.h:26
QVKInstanceBuffer_s
Definition: global_ubo.h:253
ModelInstance::alpha
float alpha
Definition: global_ubo.h:238
ivec4_t
int ivec4_t[4]
Definition: global_ubo.h:232
ModelInstance
Definition: global_ubo.h:235
layout
layout(set=GOD_RAYS_DESC_SET_IDX, binding=0) uniform sampler2DArray TEX_SHADOW_MAP
backlerp
static float backlerp
Definition: mesh.c:26
GLOBAL_UBO_DESC_SET_IDX
#define GLOBAL_UBO_DESC_SET_IDX
Definition: path_tracer.h:122
GLOBAL_UBO_BINDING_IDX
#define GLOBAL_UBO_BINDING_IDX
Definition: global_ubo.h:25
BspMeshInstance
Definition: global_ubo.h:241
BspMeshInstance::frame
int frame
Definition: global_ubo.h:243
ModelInstance::offset_prev
int offset_prev
Definition: global_ubo.h:237
ModelInstance::M
float M[16]
Definition: global_ubo.h:236
QVKUniformBuffer_t
struct QVKUniformBuffer_s QVKUniformBuffer_t
QVKInstanceBuffer_t
struct QVKInstanceBuffer_s QVKInstanceBuffer_t
GLOBAL_UBO_VAR_LIST
#define GLOBAL_UBO_VAR_LIST
Definition: global_ubo.h:119
constants.h
uvec4_t
uint32_t uvec4_t[4]
Definition: global_ubo.h:231
INSTANCE_BUFFER_VAR_LIST
#define INSTANCE_BUFFER_VAR_LIST
Definition: global_ubo.h:203