Started work on removing vulkan demo code.
Cinematics update. Clean up.
This commit is contained in:
parent
6d50cb783c
commit
8a4cce66ed
|
|
@ -3,6 +3,7 @@ Removed cvars:
|
||||||
* r_allowSoftwareGL
|
* r_allowSoftwareGL
|
||||||
* r_colorbits (use desktop color depth)
|
* r_colorbits (use desktop color depth)
|
||||||
* r_ext_multitexture (required)
|
* r_ext_multitexture (required)
|
||||||
|
* r_finish
|
||||||
* r_ignoreFastPath
|
* r_ignoreFastPath
|
||||||
* r_maskMinidriver
|
* r_maskMinidriver
|
||||||
* r_primitives (always use qglDrawElements)
|
* r_primitives (always use qglDrawElements)
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
#version 450
|
#version 450
|
||||||
|
|
||||||
layout(binding = 0) uniform Uniform_Buffer_Object {
|
layout(binding = 0) uniform Transform_UBO {
|
||||||
mat4 model;
|
mat4 mvp;
|
||||||
mat4 view;
|
|
||||||
mat4 proj;
|
|
||||||
} ubo;
|
} ubo;
|
||||||
|
|
||||||
layout(location = 0) in vec3 in_position;
|
layout(location = 0) in vec3 in_position;
|
||||||
|
|
@ -20,7 +18,7 @@ out gl_PerVertex {
|
||||||
};
|
};
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
gl_Position = ubo.proj * ubo.view * ubo.model * vec4(in_position, 1.0);
|
gl_Position = ubo.mvp * vec4(in_position, 1.0);
|
||||||
frag_color = in_color;
|
frag_color = in_color;
|
||||||
frag_tex_coord0 = in_tex_coord0;
|
frag_tex_coord0 = in_tex_coord0;
|
||||||
frag_tex_coord1 = in_tex_coord1;
|
frag_tex_coord1 = in_tex_coord1;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
#version 450
|
#version 450
|
||||||
|
|
||||||
layout(binding = 0) uniform Uniform_Buffer_Object {
|
layout(binding = 0) uniform Transform_UBO {
|
||||||
mat4 model;
|
mat4 mvp;
|
||||||
mat4 view;
|
|
||||||
mat4 proj;
|
|
||||||
} ubo;
|
} ubo;
|
||||||
|
|
||||||
layout(location = 0) in vec3 in_position;
|
layout(location = 0) in vec3 in_position;
|
||||||
|
|
@ -18,7 +16,7 @@ out gl_PerVertex {
|
||||||
};
|
};
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
gl_Position = ubo.proj * ubo.view * ubo.model * vec4(in_position, 1.0);
|
gl_Position = ubo.mvp * vec4(in_position, 1.0);
|
||||||
frag_color = in_color;
|
frag_color = in_color;
|
||||||
frag_tex_coord = in_tex_coord;
|
frag_tex_coord = in_tex_coord;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,111 +1,92 @@
|
||||||
unsigned char multi_texture_vert_spv[] = {
|
unsigned char multi_texture_vert_spv[] = {
|
||||||
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00, 0x35, 0x00, 0x00, 0x00,
|
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00, 0x2D, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x06, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x06, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x4C, 0x53, 0x4C, 0x2E, 0x73, 0x74, 0x64, 0x2E, 0x34, 0x35, 0x30,
|
0x01, 0x00, 0x00, 0x00, 0x47, 0x4C, 0x53, 0x4C, 0x2E, 0x73, 0x74, 0x64, 0x2E, 0x34, 0x35, 0x30,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x0F, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x69, 0x6E,
|
0x0F, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x69, 0x6E,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x2A, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
|
0x22, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00,
|
||||||
0x33, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x00,
|
0x2B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x00,
|
||||||
0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00,
|
0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x05, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x50, 0x65, 0x72, 0x56, 0x65,
|
0x05, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x50, 0x65, 0x72, 0x56, 0x65,
|
||||||
0x72, 0x74, 0x65, 0x78, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x72, 0x74, 0x65, 0x78, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00,
|
||||||
0x05, 0x00, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00,
|
0x05, 0x00, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x55, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x5F, 0x42, 0x75, 0x66, 0x66,
|
0x0E, 0x00, 0x00, 0x00, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x5F, 0x55, 0x42,
|
||||||
0x65, 0x72, 0x5F, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00,
|
0x4F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x6F, 0x64, 0x65, 0x6C, 0x00, 0x00, 0x00,
|
0x6D, 0x76, 0x70, 0x00, 0x05, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x75, 0x62, 0x6F, 0x00,
|
||||||
0x06, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x76, 0x69, 0x65, 0x77,
|
0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x70, 0x6F, 0x73, 0x69, 0x74,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x69, 0x6F, 0x6E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67,
|
||||||
0x70, 0x72, 0x6F, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||||
0x75, 0x62, 0x6F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x70,
|
0x69, 0x6E, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
|
||||||
0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x26, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F,
|
||||||
0x66, 0x72, 0x61, 0x67, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
|
0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x28, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x74,
|
||||||
0x2A, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x00, 0x00,
|
0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
|
||||||
0x05, 0x00, 0x06, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78,
|
0x2A, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F,
|
||||||
0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x00,
|
0x72, 0x64, 0x31, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x74,
|
||||||
0x69, 0x6E, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00,
|
0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x31, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
|
||||||
0x05, 0x00, 0x06, 0x00, 0x32, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x31, 0x00, 0x05, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00,
|
||||||
0x69, 0x6E, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x31, 0x00, 0x00, 0x00,
|
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
|
||||||
0x48, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
|
0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x04, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x80, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x04, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x1E, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x0D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
|
||||||
0x3B, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x15, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x20, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x2B, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x18, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x1E, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x0D, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00,
|
||||||
0x0D, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x2A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00,
|
||||||
0x1C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x2B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x00,
|
||||||
0x00, 0x00, 0x80, 0x3F, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00,
|
0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x2C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00,
|
0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
|
||||||
0x2C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
|
0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
|
0x91, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
|
0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00,
|
0x1D, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
||||||
0x41, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
||||||
0x11, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
0x3D, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x13, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
|
0x3E, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x24, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00,
|
||||||
0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x92, 0x00, 0x05, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x2A, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
|
||||||
0x18, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
|
||||||
0x12, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
|
||||||
0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
|
|
||||||
0x92, 0x00, 0x05, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
|
|
||||||
0x1A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
|
||||||
0x1E, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
|
||||||
0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
|
||||||
0x22, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
|
|
||||||
0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
|
||||||
0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
|
||||||
0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x91, 0x00, 0x05, 0x00,
|
|
||||||
0x07, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
|
|
||||||
0x41, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
|
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00,
|
|
||||||
0x3D, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00,
|
|
||||||
0x3E, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
|
||||||
0x2C, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00,
|
|
||||||
0x2E, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x2C, 0x00, 0x00, 0x00,
|
|
||||||
0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00,
|
|
||||||
0x34, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
|
|
||||||
};
|
};
|
||||||
long long multi_texture_vert_spv_size = 1724;
|
long long multi_texture_vert_spv_size = 1408;
|
||||||
|
|
@ -1,102 +1,82 @@
|
||||||
unsigned char single_texture_vert_spv[] = {
|
unsigned char single_texture_vert_spv[] = {
|
||||||
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00, 0x32, 0x00, 0x00, 0x00,
|
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x06, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x06, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x4C, 0x53, 0x4C, 0x2E, 0x73, 0x74, 0x64, 0x2E, 0x34, 0x35, 0x30,
|
0x01, 0x00, 0x00, 0x00, 0x47, 0x4C, 0x53, 0x4C, 0x2E, 0x73, 0x74, 0x64, 0x2E, 0x34, 0x35, 0x30,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x0F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x69, 0x6E,
|
0x0F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x69, 0x6E,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x2A, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00,
|
0x22, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x6D, 0x61, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x6D, 0x61, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x67, 0x6C, 0x5F, 0x50, 0x65, 0x72, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x00, 0x00, 0x00, 0x00,
|
0x67, 0x6C, 0x5F, 0x50, 0x65, 0x72, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x50,
|
0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x6C, 0x5F, 0x50,
|
||||||
0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x05, 0x00, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x00,
|
0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x05, 0x00, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x55, 0x6E, 0x69, 0x66,
|
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x54, 0x72, 0x61, 0x6E,
|
||||||
0x6F, 0x72, 0x6D, 0x5F, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5F, 0x4F, 0x62, 0x6A, 0x65, 0x63,
|
0x73, 0x66, 0x6F, 0x72, 0x6D, 0x5F, 0x55, 0x42, 0x4F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00,
|
||||||
0x74, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x70, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||||
0x6D, 0x6F, 0x64, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x75, 0x62, 0x6F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x76, 0x69, 0x65, 0x77, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00,
|
0x69, 0x6E, 0x5F, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x05, 0x00, 0x05, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x72, 0x6F, 0x6A, 0x00, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00,
|
||||||
0x05, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x75, 0x62, 0x6F, 0x00, 0x05, 0x00, 0x05, 0x00,
|
0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72,
|
||||||
0x1E, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67,
|
||||||
0x05, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x63, 0x6F, 0x6C,
|
0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
|
||||||
0x6F, 0x72, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x63,
|
0x28, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64,
|
||||||
0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2E, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x05, 0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63,
|
0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x6F, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
|
0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
|
0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00,
|
||||||
0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
|
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||||
0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
|
0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0x47, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
|
||||||
0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0x2A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0x2E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
||||||
0x30, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00,
|
0x20, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x3B, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00,
|
0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00,
|
0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
|
0x3B, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x2B, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x3B, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
0x3B, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
0x17, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00,
|
0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
|
||||||
0x0B, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
0x3B, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00,
|
0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
|
||||||
0x0B, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00,
|
0x3B, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x1C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x1D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||||
0x1D, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00,
|
0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x20, 0x00, 0x04, 0x00,
|
0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
||||||
0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
0x3D, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
|
||||||
0x26, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
|
||||||
0x29, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00,
|
||||||
0x29, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00,
|
0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x2C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
0x1B, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00,
|
||||||
0x2D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
0x07, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00,
|
||||||
0x2D, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
0x1B, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x91, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0x2F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
0x1D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||||
0x2F, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00,
|
0x1E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x3E, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
||||||
0xF8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00,
|
0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00,
|
||||||
0x13, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00,
|
||||||
0x0D, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00,
|
||||||
0x12, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
|
0x29, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
|
||||||
0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
|
|
||||||
0x92, 0x00, 0x05, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
|
||||||
0x17, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
|
|
||||||
0x10, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
|
||||||
0x1A, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x92, 0x00, 0x05, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
|
||||||
0x1B, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
|
||||||
0x1C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
|
|
||||||
0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
|
||||||
0x1F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00,
|
|
||||||
0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
|
||||||
0x20, 0x00, 0x00, 0x00, 0x91, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00,
|
|
||||||
0x1B, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00,
|
|
||||||
0x27, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00,
|
|
||||||
0x27, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
|
||||||
0x2B, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00,
|
|
||||||
0x2B, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
|
|
||||||
0x30, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
|
|
||||||
0xFD, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
|
|
||||||
};
|
};
|
||||||
long long single_texture_vert_spv_size = 1576;
|
long long single_texture_vert_spv_size = 1260;
|
||||||
|
|
@ -408,15 +408,6 @@ to actually render the visible surfaces for this view
|
||||||
void RB_BeginDrawingView (void) {
|
void RB_BeginDrawingView (void) {
|
||||||
int clearBits = 0;
|
int clearBits = 0;
|
||||||
|
|
||||||
// sync with gl if needed
|
|
||||||
if ( r_finish->integer == 1 && !glState.finishCalled ) {
|
|
||||||
qglFinish ();
|
|
||||||
glState.finishCalled = qtrue;
|
|
||||||
}
|
|
||||||
if ( r_finish->integer == 0 ) {
|
|
||||||
glState.finishCalled = qtrue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// we will need to change the projection matrix before drawing
|
// we will need to change the projection matrix before drawing
|
||||||
// 2D images again
|
// 2D images again
|
||||||
backEnd.projection2D = qfalse;
|
backEnd.projection2D = qfalse;
|
||||||
|
|
@ -458,9 +449,6 @@ void RB_BeginDrawingView (void) {
|
||||||
|
|
||||||
glState.faceCulling = -1; // force face culling to set next time
|
glState.faceCulling = -1; // force face culling to set next time
|
||||||
|
|
||||||
// we will only draw a sun if there was sky rendered in this view
|
|
||||||
backEnd.skyRenderedThisView = qfalse;
|
|
||||||
|
|
||||||
// clip to the plane of the portal
|
// clip to the plane of the portal
|
||||||
if ( backEnd.viewParms.isPortal ) {
|
if ( backEnd.viewParms.isPortal ) {
|
||||||
float plane[4];
|
float plane[4];
|
||||||
|
|
@ -484,9 +472,6 @@ void RB_BeginDrawingView (void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define MAC_EVENT_PUMP_MSEC 5
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==================
|
==================
|
||||||
RB_RenderDrawSurfList
|
RB_RenderDrawSurfList
|
||||||
|
|
@ -679,9 +664,6 @@ void RE_StretchRaw (int x, int y, int w, int h, int cols, int rows, const byte *
|
||||||
}
|
}
|
||||||
R_SyncRenderThread();
|
R_SyncRenderThread();
|
||||||
|
|
||||||
// we definately want to sync every frame for the cinematics
|
|
||||||
qglFinish();
|
|
||||||
|
|
||||||
start = end = 0;
|
start = end = 0;
|
||||||
if ( r_speeds->integer ) {
|
if ( r_speeds->integer ) {
|
||||||
start = ri.Milliseconds();
|
start = ri.Milliseconds();
|
||||||
|
|
@ -713,8 +695,26 @@ void RE_StretchRaw (int x, int y, int w, int h, int cols, int rows, const byte *
|
||||||
vkDestroyImageView(get_device(), tr.scratchImage[client]->vk_image_view, nullptr);
|
vkDestroyImageView(get_device(), tr.scratchImage[client]->vk_image_view, nullptr);
|
||||||
tr.scratchImage[client]->vk_image = vk_create_cinematic_image(cols, rows, tr.scratchImage[client]->vk_staging_buffer);
|
tr.scratchImage[client]->vk_image = vk_create_cinematic_image(cols, rows, tr.scratchImage[client]->vk_staging_buffer);
|
||||||
tr.scratchImage[client]->vk_image_view = create_image_view(tr.scratchImage[client]->vk_image, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_ASPECT_COLOR_BIT);
|
tr.scratchImage[client]->vk_image_view = create_image_view(tr.scratchImage[client]->vk_image, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_ASPECT_COLOR_BIT);
|
||||||
vulkan_demo->cinematic_image_view = tr.scratchImage[client]->vk_image_view;
|
|
||||||
vk_update_cinematic_image(tr.scratchImage[client]->vk_image, tr.scratchImage[client]->vk_staging_buffer, cols, rows, data);
|
vk_update_cinematic_image(tr.scratchImage[client]->vk_image, tr.scratchImage[client]->vk_staging_buffer, cols, rows, data);
|
||||||
|
|
||||||
|
VkDescriptorImageInfo image_info;
|
||||||
|
image_info.sampler = vulkan_demo->texture_image_sampler;
|
||||||
|
image_info.imageView = tr.scratchImage[client]->vk_image_view;
|
||||||
|
image_info.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||||
|
|
||||||
|
std::array<VkWriteDescriptorSet, 1> descriptor_writes;
|
||||||
|
descriptor_writes[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
|
descriptor_writes[0].dstSet = vulkan_demo->image_descriptor_sets[ tr.scratchImage[client] ];
|
||||||
|
descriptor_writes[0].dstBinding = 1;
|
||||||
|
descriptor_writes[0].dstArrayElement = 0;
|
||||||
|
descriptor_writes[0].descriptorCount = 1;
|
||||||
|
descriptor_writes[0].pNext = nullptr;
|
||||||
|
descriptor_writes[0].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||||
|
descriptor_writes[0].pImageInfo = &image_info;
|
||||||
|
descriptor_writes[0].pBufferInfo = nullptr;
|
||||||
|
descriptor_writes[0].pTexelBufferView = nullptr;
|
||||||
|
|
||||||
|
vkUpdateDescriptorSets(get_device(), (uint32_t)descriptor_writes.size(), descriptor_writes.data(), 0, nullptr);
|
||||||
} else {
|
} else {
|
||||||
if (dirty) {
|
if (dirty) {
|
||||||
// otherwise, just subimage upload it so that drivers can tell we are going to be changing
|
// otherwise, just subimage upload it so that drivers can tell we are going to be changing
|
||||||
|
|
@ -731,23 +731,8 @@ void RE_StretchRaw (int x, int y, int w, int h, int cols, int rows, const byte *
|
||||||
ri.Printf( PRINT_ALL, "qglTexSubImage2D %i, %i: %i msec\n", cols, rows, end - start );
|
ri.Printf( PRINT_ALL, "qglTexSubImage2D %i, %i: %i msec\n", cols, rows, end - start );
|
||||||
}
|
}
|
||||||
|
|
||||||
RB_SetGL2D();
|
tr.cinematicShader->stages[0]->bundle[0].image[0] = tr.scratchImage[client];
|
||||||
|
RE_StretchPic(x, y, w, h, 0.5f / cols, 0.5f / rows, 1.0f - 0.5f / cols, 1.0f - 0.5 / rows, tr.cinematicShader->index);
|
||||||
qglColor3f( tr.identityLight, tr.identityLight, tr.identityLight );
|
|
||||||
|
|
||||||
qglBegin (GL_QUADS);
|
|
||||||
qglTexCoord2f ( 0.5f / cols, 0.5f / rows );
|
|
||||||
qglVertex2f (x, y);
|
|
||||||
qglTexCoord2f ( ( cols - 0.5f ) / cols , 0.5f / rows );
|
|
||||||
qglVertex2f (x+w, y);
|
|
||||||
qglTexCoord2f ( ( cols - 0.5f ) / cols, ( rows - 0.5f ) / rows );
|
|
||||||
qglVertex2f (x+w, y+h);
|
|
||||||
qglTexCoord2f ( 0.5f / cols, ( rows - 0.5f ) / rows );
|
|
||||||
qglVertex2f (x, y+h);
|
|
||||||
qglEnd ();
|
|
||||||
|
|
||||||
// VULKAN
|
|
||||||
vulkan_demo->render_cinematic_frame();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RE_UploadCinematic (int w, int h, int cols, int rows, const byte *data, int client, qboolean dirty) {
|
void RE_UploadCinematic (int w, int h, int cols, int rows, const byte *data, int client, qboolean dirty) {
|
||||||
|
|
@ -1038,11 +1023,6 @@ const void *RB_SwapBuffers( const void *data ) {
|
||||||
ri.Hunk_FreeTempMemory( stencilReadback );
|
ri.Hunk_FreeTempMemory( stencilReadback );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ( !glState.finishCalled ) {
|
|
||||||
qglFinish();
|
|
||||||
}
|
|
||||||
|
|
||||||
GLimp_LogComment( "***************** RB_SwapBuffers *****************\n\n\n" );
|
GLimp_LogComment( "***************** RB_SwapBuffers *****************\n\n\n" );
|
||||||
|
|
||||||
GLimp_EndFrame();
|
GLimp_EndFrame();
|
||||||
|
|
|
||||||
|
|
@ -308,7 +308,6 @@ void RE_BeginFrame( stereoFrame_t stereoFrame ) {
|
||||||
if ( !tr.registered ) {
|
if ( !tr.registered ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
glState.finishCalled = qfalse;
|
|
||||||
|
|
||||||
tr.frameCount++;
|
tr.frameCount++;
|
||||||
tr.frameSceneNum = 0;
|
tr.frameSceneNum = 0;
|
||||||
|
|
|
||||||
|
|
@ -248,10 +248,6 @@ void RB_TestFlare( flare_t *f ) {
|
||||||
|
|
||||||
backEnd.pc.c_flareTests++;
|
backEnd.pc.c_flareTests++;
|
||||||
|
|
||||||
// doing a readpixels is as good as doing a glFinish(), so
|
|
||||||
// don't bother with another sync
|
|
||||||
glState.finishCalled = qfalse;
|
|
||||||
|
|
||||||
// read back the z buffer contents
|
// read back the z buffer contents
|
||||||
qglReadPixels( f->windowX, f->windowY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth );
|
qglReadPixels( f->windowX, f->windowY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,6 @@ cvar_t *r_picmip;
|
||||||
cvar_t *r_showtris;
|
cvar_t *r_showtris;
|
||||||
cvar_t *r_showsky;
|
cvar_t *r_showsky;
|
||||||
cvar_t *r_shownormals;
|
cvar_t *r_shownormals;
|
||||||
cvar_t *r_finish;
|
|
||||||
cvar_t *r_clear;
|
cvar_t *r_clear;
|
||||||
cvar_t *r_swapInterval;
|
cvar_t *r_swapInterval;
|
||||||
cvar_t *r_textureMode;
|
cvar_t *r_textureMode;
|
||||||
|
|
@ -783,9 +782,6 @@ void GfxInfo_f( void )
|
||||||
if ( glConfig.smpActive ) {
|
if ( glConfig.smpActive ) {
|
||||||
ri.Printf( PRINT_ALL, "Using dual processor acceleration\n" );
|
ri.Printf( PRINT_ALL, "Using dual processor acceleration\n" );
|
||||||
}
|
}
|
||||||
if ( r_finish->integer ) {
|
|
||||||
ri.Printf( PRINT_ALL, "Forcing glFinish\n" );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -851,7 +847,6 @@ void R_Register( void )
|
||||||
r_inGameVideo = ri.Cvar_Get( "r_inGameVideo", "1", CVAR_ARCHIVE );
|
r_inGameVideo = ri.Cvar_Get( "r_inGameVideo", "1", CVAR_ARCHIVE );
|
||||||
r_dynamiclight = ri.Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE );
|
r_dynamiclight = ri.Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE );
|
||||||
r_dlightBacks = ri.Cvar_Get( "r_dlightBacks", "1", CVAR_ARCHIVE );
|
r_dlightBacks = ri.Cvar_Get( "r_dlightBacks", "1", CVAR_ARCHIVE );
|
||||||
r_finish = ri.Cvar_Get ("r_finish", "0", CVAR_ARCHIVE);
|
|
||||||
r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE );
|
r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE );
|
||||||
r_swapInterval = ri.Cvar_Get( "r_swapInterval", "0", CVAR_ARCHIVE );
|
r_swapInterval = ri.Cvar_Get( "r_swapInterval", "0", CVAR_ARCHIVE );
|
||||||
r_gamma = ri.Cvar_Get( "r_gamma", "1", CVAR_ARCHIVE );
|
r_gamma = ri.Cvar_Get( "r_gamma", "1", CVAR_ARCHIVE );
|
||||||
|
|
@ -1013,7 +1008,6 @@ void R_Init( void ) {
|
||||||
|
|
||||||
R_InitFreeType();
|
R_InitFreeType();
|
||||||
|
|
||||||
|
|
||||||
err = qglGetError();
|
err = qglGetError();
|
||||||
if ( err != GL_NO_ERROR )
|
if ( err != GL_NO_ERROR )
|
||||||
ri.Printf (PRINT_ALL, "glGetError() = 0x%x\n", err);
|
ri.Printf (PRINT_ALL, "glGetError() = 0x%x\n", err);
|
||||||
|
|
|
||||||
|
|
@ -806,7 +806,6 @@ typedef struct {
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int currenttextures[2];
|
int currenttextures[2];
|
||||||
int currenttmu;
|
int currenttmu;
|
||||||
qboolean finishCalled;
|
|
||||||
int texEnv[2];
|
int texEnv[2];
|
||||||
int faceCulling;
|
int faceCulling;
|
||||||
unsigned long glStateBits;
|
unsigned long glStateBits;
|
||||||
|
|
@ -840,7 +839,6 @@ typedef struct {
|
||||||
backEndCounters_t pc;
|
backEndCounters_t pc;
|
||||||
qboolean isHyperspace;
|
qboolean isHyperspace;
|
||||||
trRefEntity_t *currentEntity;
|
trRefEntity_t *currentEntity;
|
||||||
qboolean skyRenderedThisView; // flag for drawing sun
|
|
||||||
|
|
||||||
qboolean projection2D; // if qtrue, drawstretchpic doesn't need to change modes
|
qboolean projection2D; // if qtrue, drawstretchpic doesn't need to change modes
|
||||||
byte color2D[4];
|
byte color2D[4];
|
||||||
|
|
@ -883,11 +881,11 @@ typedef struct {
|
||||||
image_t *identityLightImage; // full of tr.identityLightByte
|
image_t *identityLightImage; // full of tr.identityLightByte
|
||||||
|
|
||||||
shader_t *defaultShader;
|
shader_t *defaultShader;
|
||||||
|
shader_t *cinematicShader;
|
||||||
shader_t *shadowShader;
|
shader_t *shadowShader;
|
||||||
shader_t *projectionShadowShader;
|
shader_t *projectionShadowShader;
|
||||||
|
|
||||||
shader_t *flareShader;
|
shader_t *flareShader;
|
||||||
shader_t *sunShader;
|
|
||||||
|
|
||||||
int numLightmaps;
|
int numLightmaps;
|
||||||
image_t *lightmaps[MAX_LIGHTMAPS];
|
image_t *lightmaps[MAX_LIGHTMAPS];
|
||||||
|
|
@ -947,6 +945,7 @@ typedef struct {
|
||||||
int vk_num_pipelines;
|
int vk_num_pipelines;
|
||||||
Vk_Pipeline_Desc vk_pipeline_desc[MAX_VK_PIPELINES];
|
Vk_Pipeline_Desc vk_pipeline_desc[MAX_VK_PIPELINES];
|
||||||
VkPipeline vk_pipelines[MAX_VK_PIPELINES];
|
VkPipeline vk_pipelines[MAX_VK_PIPELINES];
|
||||||
|
|
||||||
} trGlobals_t;
|
} trGlobals_t;
|
||||||
|
|
||||||
extern backEndState_t backEnd;
|
extern backEndState_t backEnd;
|
||||||
|
|
@ -1023,7 +1022,6 @@ extern cvar_t *r_singleShader; // make most world faces use default shader
|
||||||
extern cvar_t *r_roundImagesDown;
|
extern cvar_t *r_roundImagesDown;
|
||||||
extern cvar_t *r_colorMipLevels; // development aid to see texture mip usage
|
extern cvar_t *r_colorMipLevels; // development aid to see texture mip usage
|
||||||
extern cvar_t *r_picmip; // controls picmip values
|
extern cvar_t *r_picmip; // controls picmip values
|
||||||
extern cvar_t *r_finish;
|
|
||||||
extern cvar_t *r_drawBuffer;
|
extern cvar_t *r_drawBuffer;
|
||||||
extern cvar_t *r_glDriver;
|
extern cvar_t *r_glDriver;
|
||||||
extern cvar_t *r_swapInterval;
|
extern cvar_t *r_swapInterval;
|
||||||
|
|
|
||||||
|
|
@ -539,11 +539,6 @@ void RE_BeginRegistration( glconfig_t *glconfigOut ) {
|
||||||
RE_ClearScene();
|
RE_ClearScene();
|
||||||
|
|
||||||
tr.registered = qtrue;
|
tr.registered = qtrue;
|
||||||
|
|
||||||
// NOTE: this sucks, for some reason the first stretch pic is never drawn
|
|
||||||
// without this we'd see a white flash on a level load because the very
|
|
||||||
// first time the level shot would not be drawn
|
|
||||||
RE_StretchPic(0, 0, 0, 0, 0, 0, 1, 1, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ static char *s_shaderText;
|
||||||
static shaderStage_t stages[MAX_SHADER_STAGES];
|
static shaderStage_t stages[MAX_SHADER_STAGES];
|
||||||
static shader_t shader;
|
static shader_t shader;
|
||||||
static texModInfo_t texMods[MAX_SHADER_STAGES][TR_MAX_TEXMODS];
|
static texModInfo_t texMods[MAX_SHADER_STAGES][TR_MAX_TEXMODS];
|
||||||
static qboolean deferLoad;
|
|
||||||
|
|
||||||
#define FILE_HASH_SIZE 1024
|
#define FILE_HASH_SIZE 1024
|
||||||
static shader_t* hashTable[FILE_HASH_SIZE];
|
static shader_t* hashTable[FILE_HASH_SIZE];
|
||||||
|
|
@ -2872,23 +2871,41 @@ static void CreateInternalShaders( void ) {
|
||||||
Com_Memset( &stages, 0, sizeof( stages ) );
|
Com_Memset( &stages, 0, sizeof( stages ) );
|
||||||
|
|
||||||
Q_strncpyz( shader.name, "<default>", sizeof( shader.name ) );
|
Q_strncpyz( shader.name, "<default>", sizeof( shader.name ) );
|
||||||
|
|
||||||
shader.lightmapIndex = LIGHTMAP_NONE;
|
shader.lightmapIndex = LIGHTMAP_NONE;
|
||||||
|
|
||||||
stages[0].bundle[0].image[0] = tr.defaultImage;
|
stages[0].bundle[0].image[0] = tr.defaultImage;
|
||||||
stages[0].active = qtrue;
|
stages[0].active = qtrue;
|
||||||
stages[0].stateBits = GLS_DEFAULT;
|
stages[0].stateBits = GLS_DEFAULT;
|
||||||
|
|
||||||
tr.defaultShader = FinishShader();
|
tr.defaultShader = FinishShader();
|
||||||
|
|
||||||
|
// cinematic shader
|
||||||
|
Com_Memset( &shader, 0, sizeof( shader ) );
|
||||||
|
Com_Memset( &stages, 0, sizeof( stages ) );
|
||||||
|
|
||||||
|
Q_strncpyz( shader.name, "<cinematic>", sizeof( shader.name ) );
|
||||||
|
shader.lightmapIndex = LIGHTMAP_NONE;
|
||||||
|
|
||||||
|
stages[0].bundle[0].image[0] = tr.defaultImage; // will be updated by specific cinematic images
|
||||||
|
stages[0].active = qtrue;
|
||||||
|
stages[0].rgbGen = CGEN_IDENTITY_LIGHTING;
|
||||||
|
stages[0].stateBits = GLS_DEPTHTEST_DISABLE;
|
||||||
|
|
||||||
|
tr.cinematicShader = FinishShader();
|
||||||
|
|
||||||
// shadow shader is just a marker
|
// shadow shader is just a marker
|
||||||
|
Com_Memset( &shader, 0, sizeof( shader ) );
|
||||||
|
Com_Memset( &stages, 0, sizeof( stages ) );
|
||||||
|
|
||||||
Q_strncpyz( shader.name, "<stencil shadow>", sizeof( shader.name ) );
|
Q_strncpyz( shader.name, "<stencil shadow>", sizeof( shader.name ) );
|
||||||
shader.sort = SS_STENCIL_SHADOW;
|
shader.sort = SS_STENCIL_SHADOW;
|
||||||
|
|
||||||
tr.shadowShader = FinishShader();
|
tr.shadowShader = FinishShader();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CreateExternalShaders( void ) {
|
static void CreateExternalShaders( void ) {
|
||||||
tr.projectionShadowShader = R_FindShader( "projectionShadow", LIGHTMAP_NONE, qtrue );
|
tr.projectionShadowShader = R_FindShader( "projectionShadow", LIGHTMAP_NONE, qtrue );
|
||||||
tr.flareShader = R_FindShader( "flareShader", LIGHTMAP_NONE, qtrue );
|
tr.flareShader = R_FindShader( "flareShader", LIGHTMAP_NONE, qtrue );
|
||||||
tr.sunShader = R_FindShader( "sun", LIGHTMAP_NONE, qtrue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -2901,8 +2918,6 @@ void R_InitShaders( void ) {
|
||||||
|
|
||||||
Com_Memset(hashTable, 0, sizeof(hashTable));
|
Com_Memset(hashTable, 0, sizeof(hashTable));
|
||||||
|
|
||||||
deferLoad = qfalse;
|
|
||||||
|
|
||||||
CreateInternalShaders();
|
CreateInternalShaders();
|
||||||
|
|
||||||
ScanAndLoadShaderFiles();
|
ScanAndLoadShaderFiles();
|
||||||
|
|
|
||||||
|
|
@ -743,8 +743,4 @@ void RB_StageIteratorSky( void ) {
|
||||||
|
|
||||||
// back to normal depth range
|
// back to normal depth range
|
||||||
qglDepthRange( 0.0, 1.0 );
|
qglDepthRange( 0.0, 1.0 );
|
||||||
|
|
||||||
// note that sky was drawn so we will draw a sun later
|
|
||||||
backEnd.skyRenderedThisView = qtrue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,37 +15,9 @@
|
||||||
#include "tr_local.h"
|
#include "tr_local.h"
|
||||||
|
|
||||||
struct Uniform_Buffer_Object {
|
struct Uniform_Buffer_Object {
|
||||||
glm::mat4 model;
|
glm::mat4 mvp;
|
||||||
glm::mat4 view;
|
|
||||||
glm::mat4 proj;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Model {
|
|
||||||
std::vector<Vertex> vertices;
|
|
||||||
std::vector<uint32_t> indices;
|
|
||||||
};
|
|
||||||
|
|
||||||
static Model load_model() {
|
|
||||||
Model model;
|
|
||||||
|
|
||||||
model.vertices = {
|
|
||||||
{ {0, glConfig.vidHeight, 0},
|
|
||||||
{1, 1, 1, 1}, {0, 1} },
|
|
||||||
|
|
||||||
{ {glConfig.vidWidth, glConfig.vidHeight, 0},
|
|
||||||
{1, 1, 1, 1}, {1, 1} },
|
|
||||||
|
|
||||||
{ {glConfig.vidWidth, 0, 0},
|
|
||||||
{1, 1, 1, 1}, {1, 0} },
|
|
||||||
|
|
||||||
{ {0, 0, 0},
|
|
||||||
{1, 1, 1, 1}, {0, 0} },
|
|
||||||
};
|
|
||||||
|
|
||||||
model.indices = { 0, 1, 2, 0, 2, 3 };
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
static VkFormat find_format_with_features(VkPhysicalDevice physical_device, const std::vector<VkFormat>& candidates, VkImageTiling tiling, VkFormatFeatureFlags features) {
|
static VkFormat find_format_with_features(VkPhysicalDevice physical_device, const std::vector<VkFormat>& candidates, VkImageTiling tiling, VkFormatFeatureFlags features) {
|
||||||
for (VkFormat format : candidates) {
|
for (VkFormat format : candidates) {
|
||||||
VkFormatProperties properties;
|
VkFormatProperties properties;
|
||||||
|
|
@ -94,14 +66,11 @@ Vulkan_Demo::Vulkan_Demo(int window_width, int window_height)
|
||||||
create_depth_buffer_resources();
|
create_depth_buffer_resources();
|
||||||
|
|
||||||
create_descriptor_set_layout();
|
create_descriptor_set_layout();
|
||||||
create_descriptor_set();
|
|
||||||
create_render_pass();
|
create_render_pass();
|
||||||
create_framebuffers();
|
create_framebuffers();
|
||||||
create_pipeline_layout();
|
create_pipeline_layout();
|
||||||
pipeline_2d = create_pipeline(false, false);
|
|
||||||
|
|
||||||
upload_geometry();
|
upload_geometry();
|
||||||
update_ubo_descriptor(descriptor_set);
|
|
||||||
|
|
||||||
{
|
{
|
||||||
VkCommandBufferAllocateInfo alloc_info;
|
VkCommandBufferAllocateInfo alloc_info;
|
||||||
|
|
@ -277,18 +246,6 @@ void Vulkan_Demo::create_descriptor_set_layout() {
|
||||||
descriptor_set_layout = get_resource_manager()->create_descriptor_set_layout(desc);
|
descriptor_set_layout = get_resource_manager()->create_descriptor_set_layout(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vulkan_Demo::create_descriptor_set() {
|
|
||||||
VkDescriptorSetAllocateInfo desc;
|
|
||||||
desc.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
|
|
||||||
desc.pNext = nullptr;
|
|
||||||
desc.descriptorPool = descriptor_pool;
|
|
||||||
desc.descriptorSetCount = 1;
|
|
||||||
desc.pSetLayouts = &descriptor_set_layout;
|
|
||||||
|
|
||||||
VkResult result = vkAllocateDescriptorSets(get_device(), &desc, &descriptor_set);
|
|
||||||
check_vk_result(result, "vkAllocateDescriptorSets");
|
|
||||||
}
|
|
||||||
|
|
||||||
void Vulkan_Demo::create_image_descriptor_set(const image_t* image) {
|
void Vulkan_Demo::create_image_descriptor_set(const image_t* image) {
|
||||||
VkDescriptorSetAllocateInfo desc;
|
VkDescriptorSetAllocateInfo desc;
|
||||||
desc.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
|
desc.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
|
||||||
|
|
@ -470,206 +427,8 @@ void Vulkan_Demo::create_pipeline_layout() {
|
||||||
pipeline_layout = get_resource_manager()->create_pipeline_layout(desc);
|
pipeline_layout = get_resource_manager()->create_pipeline_layout(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
VkPipeline Vulkan_Demo::create_pipeline(bool depth_test, bool multitexture) {
|
|
||||||
Shader_Module single_texture_vs(single_texture_vert_spv, single_texture_vert_spv_size);
|
|
||||||
Shader_Module single_texture_fs(single_texture_frag_spv, single_texture_frag_spv_size);
|
|
||||||
|
|
||||||
Shader_Module multi_texture_vs(multi_texture_vert_spv, multi_texture_vert_spv_size);
|
|
||||||
Shader_Module multi_texture_fs(multi_texture_mul_frag_spv, multi_texture_mul_frag_spv_size);
|
|
||||||
|
|
||||||
auto get_shader_stage_desc = [](VkShaderStageFlagBits stage, VkShaderModule shader_module, const char* entry) {
|
|
||||||
VkPipelineShaderStageCreateInfo desc;
|
|
||||||
desc.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
|
||||||
desc.pNext = nullptr;
|
|
||||||
desc.flags = 0;
|
|
||||||
desc.stage = stage;
|
|
||||||
desc.module = shader_module;
|
|
||||||
desc.pName = entry;
|
|
||||||
desc.pSpecializationInfo = nullptr;
|
|
||||||
return desc;
|
|
||||||
};
|
|
||||||
|
|
||||||
std::vector<VkPipelineShaderStageCreateInfo> shader_stages_state;
|
|
||||||
|
|
||||||
if (multitexture) {
|
|
||||||
shader_stages_state.push_back(get_shader_stage_desc(VK_SHADER_STAGE_VERTEX_BIT, multi_texture_vs.handle, "main"));
|
|
||||||
shader_stages_state.push_back(get_shader_stage_desc(VK_SHADER_STAGE_FRAGMENT_BIT, multi_texture_fs.handle, "main"));
|
|
||||||
} else {
|
|
||||||
shader_stages_state.push_back(get_shader_stage_desc(VK_SHADER_STAGE_VERTEX_BIT, single_texture_vs.handle, "main"));
|
|
||||||
shader_stages_state.push_back(get_shader_stage_desc(VK_SHADER_STAGE_FRAGMENT_BIT, single_texture_fs.handle, "main"));
|
|
||||||
};
|
|
||||||
|
|
||||||
VkPipelineVertexInputStateCreateInfo vertex_input_state;
|
|
||||||
vertex_input_state.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
|
|
||||||
vertex_input_state.pNext = nullptr;
|
|
||||||
vertex_input_state.flags = 0;
|
|
||||||
auto bindings = Vertex::get_bindings();
|
|
||||||
vertex_input_state.vertexBindingDescriptionCount = (uint32_t)bindings.size();
|
|
||||||
vertex_input_state.pVertexBindingDescriptions = bindings.data();
|
|
||||||
auto attribs = Vertex::get_attributes();
|
|
||||||
vertex_input_state.vertexAttributeDescriptionCount = (uint32_t)attribs.size();
|
|
||||||
vertex_input_state.pVertexAttributeDescriptions = attribs.data();
|
|
||||||
|
|
||||||
VkPipelineInputAssemblyStateCreateInfo input_assembly_state;
|
|
||||||
input_assembly_state.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
|
|
||||||
input_assembly_state.pNext = nullptr;
|
|
||||||
input_assembly_state.flags = 0;
|
|
||||||
input_assembly_state.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
|
|
||||||
input_assembly_state.primitiveRestartEnable = VK_FALSE;
|
|
||||||
|
|
||||||
VkViewport viewport;
|
|
||||||
viewport.x = 0.0f;
|
|
||||||
viewport.y = 0.0f;
|
|
||||||
viewport.width = (float)window_width;
|
|
||||||
viewport.height = (float)window_height;
|
|
||||||
viewport.minDepth = 0.0f;
|
|
||||||
viewport.maxDepth = 1.0f;
|
|
||||||
|
|
||||||
VkRect2D scissor;
|
|
||||||
scissor.offset = {0, 0};
|
|
||||||
scissor.extent = {(uint32_t)window_width, (uint32_t)window_height};
|
|
||||||
|
|
||||||
VkPipelineViewportStateCreateInfo viewport_state;
|
|
||||||
viewport_state.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
|
|
||||||
viewport_state.pNext = nullptr;
|
|
||||||
viewport_state.flags = 0;
|
|
||||||
viewport_state.viewportCount = 1;
|
|
||||||
viewport_state.pViewports = &viewport;
|
|
||||||
viewport_state.scissorCount = 1;
|
|
||||||
viewport_state.pScissors = &scissor;
|
|
||||||
|
|
||||||
VkPipelineRasterizationStateCreateInfo rasterization_state;
|
|
||||||
rasterization_state.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
|
|
||||||
rasterization_state.pNext = nullptr;
|
|
||||||
rasterization_state.flags = 0;
|
|
||||||
rasterization_state.depthClampEnable = VK_FALSE;
|
|
||||||
rasterization_state.rasterizerDiscardEnable = VK_FALSE;
|
|
||||||
rasterization_state.polygonMode = VK_POLYGON_MODE_FILL;
|
|
||||||
rasterization_state.cullMode = VK_CULL_MODE_NONE/*VK_CULL_MODE_BACK_BIT*/;
|
|
||||||
rasterization_state.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE;
|
|
||||||
rasterization_state.depthBiasEnable = VK_FALSE;
|
|
||||||
rasterization_state.depthBiasConstantFactor = 0.0f;
|
|
||||||
rasterization_state.depthBiasClamp = 0.0f;
|
|
||||||
rasterization_state.depthBiasSlopeFactor = 0.0f;
|
|
||||||
rasterization_state.lineWidth = 1.0f;
|
|
||||||
|
|
||||||
VkPipelineMultisampleStateCreateInfo multisample_state;
|
|
||||||
multisample_state.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
|
|
||||||
multisample_state.pNext = nullptr;
|
|
||||||
multisample_state.flags = 0;
|
|
||||||
multisample_state.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT;
|
|
||||||
multisample_state.sampleShadingEnable = VK_FALSE;
|
|
||||||
multisample_state.minSampleShading = 1.0f;
|
|
||||||
multisample_state.pSampleMask = nullptr;
|
|
||||||
multisample_state.alphaToCoverageEnable = VK_FALSE;
|
|
||||||
multisample_state.alphaToOneEnable = VK_FALSE;
|
|
||||||
|
|
||||||
VkPipelineDepthStencilStateCreateInfo depth_stencil_state;
|
|
||||||
depth_stencil_state.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
|
|
||||||
depth_stencil_state.pNext = nullptr;
|
|
||||||
depth_stencil_state.flags = 0;
|
|
||||||
depth_stencil_state.depthTestEnable = depth_test ? VK_TRUE : VK_FALSE;
|
|
||||||
depth_stencil_state.depthWriteEnable = VK_TRUE;
|
|
||||||
depth_stencil_state.depthCompareOp = VK_COMPARE_OP_LESS;
|
|
||||||
depth_stencil_state.depthBoundsTestEnable = VK_FALSE;
|
|
||||||
depth_stencil_state.stencilTestEnable = VK_FALSE;
|
|
||||||
depth_stencil_state.front = {};
|
|
||||||
depth_stencil_state.back = {};
|
|
||||||
depth_stencil_state.minDepthBounds = 0.0;
|
|
||||||
depth_stencil_state.maxDepthBounds = 0.0;
|
|
||||||
|
|
||||||
VkPipelineColorBlendAttachmentState attachment_blend_state;
|
|
||||||
attachment_blend_state.blendEnable = VK_FALSE;
|
|
||||||
attachment_blend_state.srcColorBlendFactor = VK_BLEND_FACTOR_ONE;
|
|
||||||
attachment_blend_state.dstColorBlendFactor = VK_BLEND_FACTOR_ZERO;
|
|
||||||
attachment_blend_state.colorBlendOp = VK_BLEND_OP_ADD;
|
|
||||||
attachment_blend_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
|
|
||||||
attachment_blend_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
|
|
||||||
attachment_blend_state.alphaBlendOp = VK_BLEND_OP_ADD;
|
|
||||||
attachment_blend_state.colorWriteMask =
|
|
||||||
VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT |
|
|
||||||
VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT;
|
|
||||||
|
|
||||||
VkPipelineColorBlendStateCreateInfo blend_state;
|
|
||||||
blend_state.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
|
|
||||||
blend_state.pNext = nullptr;
|
|
||||||
blend_state.flags = 0;
|
|
||||||
blend_state.logicOpEnable = VK_FALSE;
|
|
||||||
blend_state.logicOp = VK_LOGIC_OP_COPY;
|
|
||||||
blend_state.attachmentCount = 1;
|
|
||||||
blend_state.pAttachments = &attachment_blend_state;
|
|
||||||
blend_state.blendConstants[0] = 0.0f;
|
|
||||||
blend_state.blendConstants[1] = 0.0f;
|
|
||||||
blend_state.blendConstants[2] = 0.0f;
|
|
||||||
blend_state.blendConstants[3] = 0.0f;
|
|
||||||
|
|
||||||
VkPipelineDynamicStateCreateInfo dynamic_state;
|
|
||||||
dynamic_state.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
|
|
||||||
dynamic_state.pNext = nullptr;
|
|
||||||
dynamic_state.flags = 0;
|
|
||||||
dynamic_state.dynamicStateCount = 2;
|
|
||||||
VkDynamicState dynamic_state_array[2] = { VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR };
|
|
||||||
dynamic_state.pDynamicStates = dynamic_state_array;
|
|
||||||
|
|
||||||
VkGraphicsPipelineCreateInfo desc;
|
|
||||||
desc.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
|
|
||||||
desc.pNext = nullptr;
|
|
||||||
desc.flags = 0;
|
|
||||||
desc.stageCount = static_cast<uint32_t>(shader_stages_state.size());
|
|
||||||
desc.pStages = shader_stages_state.data();
|
|
||||||
desc.pVertexInputState = &vertex_input_state;
|
|
||||||
desc.pInputAssemblyState = &input_assembly_state;
|
|
||||||
desc.pTessellationState = nullptr;
|
|
||||||
desc.pViewportState = &viewport_state;
|
|
||||||
desc.pRasterizationState = &rasterization_state;
|
|
||||||
desc.pMultisampleState = &multisample_state;
|
|
||||||
desc.pDepthStencilState = &depth_stencil_state;
|
|
||||||
desc.pColorBlendState = &blend_state;
|
|
||||||
desc.pDynamicState = nullptr;
|
|
||||||
desc.layout = pipeline_layout;
|
|
||||||
desc.renderPass = render_pass;
|
|
||||||
desc.subpass = 0;
|
|
||||||
desc.basePipelineHandle = VK_NULL_HANDLE;
|
|
||||||
desc.basePipelineIndex = -1;
|
|
||||||
|
|
||||||
return get_resource_manager()->create_graphics_pipeline(desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Vulkan_Demo::upload_geometry() {
|
void Vulkan_Demo::upload_geometry() {
|
||||||
Model model = load_model();
|
|
||||||
model_indices_count = static_cast<uint32_t>(model.indices.size());
|
|
||||||
|
|
||||||
{
|
|
||||||
const VkDeviceSize size = model.vertices.size() * sizeof(model.vertices[0]);
|
|
||||||
vertex_buffer = create_buffer(size, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT);
|
|
||||||
VkBuffer staging_buffer = create_staging_buffer(size, model.vertices.data());
|
|
||||||
Defer_Action destroy_staging_buffer([&staging_buffer, this]() {
|
|
||||||
vkDestroyBuffer(get_device(), staging_buffer, nullptr);
|
|
||||||
});
|
|
||||||
record_and_run_commands(command_pool, get_queue(), [&staging_buffer, &size, this](VkCommandBuffer command_buffer) {
|
|
||||||
VkBufferCopy region;
|
|
||||||
region.srcOffset = 0;
|
|
||||||
region.dstOffset = 0;
|
|
||||||
region.size = size;
|
|
||||||
vkCmdCopyBuffer(command_buffer, staging_buffer, vertex_buffer, 1, ®ion);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
{
|
|
||||||
const VkDeviceSize size = model.indices.size() * sizeof(model.indices[0]);
|
|
||||||
index_buffer = create_buffer(size, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT);
|
|
||||||
VkBuffer staging_buffer = create_staging_buffer(size, model.indices.data());
|
|
||||||
Defer_Action destroy_staging_buffer([&staging_buffer, this]() {
|
|
||||||
vkDestroyBuffer(get_device(), staging_buffer, nullptr);
|
|
||||||
});
|
|
||||||
record_and_run_commands(command_pool, get_queue(), [&staging_buffer, &size, this](VkCommandBuffer command_buffer) {
|
|
||||||
VkBufferCopy region;
|
|
||||||
region.srcOffset = 0;
|
|
||||||
region.dstOffset = 0;
|
|
||||||
region.size = size;
|
|
||||||
vkCmdCopyBuffer(command_buffer, staging_buffer, index_buffer, 1, ®ion);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
VkBufferCreateInfo desc;
|
VkBufferCreateInfo desc;
|
||||||
desc.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
desc.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||||
|
|
@ -730,25 +489,21 @@ void Vulkan_Demo::update_uniform_buffer() {
|
||||||
Uniform_Buffer_Object ubo;
|
Uniform_Buffer_Object ubo;
|
||||||
|
|
||||||
if (backEnd.projection2D) {
|
if (backEnd.projection2D) {
|
||||||
ubo.model = glm::mat4();
|
|
||||||
ubo.view = glm::mat4();
|
|
||||||
const glm::mat4 ortho_proj(
|
const glm::mat4 ortho_proj(
|
||||||
2.0f / glConfig.vidWidth, 0.0f, 0.f, 0.0f,
|
2.0f / glConfig.vidWidth, 0.0f, 0.f, 0.0f,
|
||||||
0.0, 2.0f / glConfig.vidHeight, 0.0f, 0.0f,
|
0.0, 2.0f / glConfig.vidHeight, 0.0f, 0.0f,
|
||||||
0.0f, 0.0f, 1.0f, 0.0f,
|
0.0f, 0.0f, 1.0f, 0.0f,
|
||||||
-1.0f, -1.0f, 0.0f, 1.0f
|
-1.0f, -1.0f, 0.0f, 1.0f
|
||||||
);
|
);
|
||||||
ubo.proj = ortho_proj;
|
ubo.mvp = ortho_proj;
|
||||||
} else {
|
} else {
|
||||||
const float* p = backEnd.or.modelMatrix;
|
const float* p = backEnd.or.modelMatrix;
|
||||||
ubo.model = glm::mat4(
|
ubo.mvp = glm::mat4(
|
||||||
p[0], p[1], p[2], p[3],
|
p[0], p[1], p[2], p[3],
|
||||||
p[4], p[5], p[6], p[7],
|
p[4], p[5], p[6], p[7],
|
||||||
p[8], p[9], p[10], p[11],
|
p[8], p[9], p[10], p[11],
|
||||||
p[12], p[13], p[14], p[15]);
|
p[12], p[13], p[14], p[15]);
|
||||||
|
|
||||||
ubo.view = glm::mat4();
|
|
||||||
|
|
||||||
p = backEnd.viewParms.projectionMatrix;
|
p = backEnd.viewParms.projectionMatrix;
|
||||||
|
|
||||||
// update q3's proj matrix (opengl) to vulkan conventions: z - [0, 1] instead of [-1, 1] and invert y direction
|
// update q3's proj matrix (opengl) to vulkan conventions: z - [0, 1] instead of [-1, 1] and invert y direction
|
||||||
|
|
@ -758,11 +513,11 @@ void Vulkan_Demo::update_uniform_buffer() {
|
||||||
float p14 = -zFar*zNear / (zFar - zNear);
|
float p14 = -zFar*zNear / (zFar - zNear);
|
||||||
float p5 = -p[5];
|
float p5 = -p[5];
|
||||||
|
|
||||||
ubo.proj = glm::mat4(
|
ubo.mvp = glm::mat4(
|
||||||
p[0], p[1], p[2], p[3],
|
p[0], p[1], p[2], p[3],
|
||||||
p[4], p5, p[6], p[7],
|
p[4], p5, p[6], p[7],
|
||||||
p[8], p[9], p10, p[11],
|
p[8], p[9], p10, p[11],
|
||||||
p[12], p[13], p14, p[15]);
|
p[12], p[13], p14, p[15]) * ubo.mvp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* data;
|
void* data;
|
||||||
|
|
@ -989,38 +744,3 @@ void Vulkan_Demo::render_tess_multi(const shaderStage_t* stage) {
|
||||||
tess_vertex_buffer_offset += tess.numVertexes * sizeof(Vertex);
|
tess_vertex_buffer_offset += tess.numVertexes * sizeof(Vertex);
|
||||||
tess_index_buffer_offset += tess.numIndexes * sizeof(uint32_t);
|
tess_index_buffer_offset += tess.numIndexes * sizeof(uint32_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vulkan_Demo::render_cinematic_frame() {
|
|
||||||
fprintf(logfile, "render_cinematic_frame\n");
|
|
||||||
fflush(logfile);
|
|
||||||
|
|
||||||
VkDescriptorImageInfo image_info;
|
|
||||||
image_info.sampler = texture_image_sampler;
|
|
||||||
image_info.imageView = cinematic_image_view;
|
|
||||||
image_info.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
|
||||||
|
|
||||||
std::array<VkWriteDescriptorSet, 1> descriptor_writes;
|
|
||||||
descriptor_writes[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
|
||||||
descriptor_writes[0].dstSet = descriptor_set;
|
|
||||||
descriptor_writes[0].dstBinding = 1;
|
|
||||||
descriptor_writes[0].dstArrayElement = 0;
|
|
||||||
descriptor_writes[0].descriptorCount = 1;
|
|
||||||
descriptor_writes[0].pNext = nullptr;
|
|
||||||
descriptor_writes[0].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
|
||||||
descriptor_writes[0].pImageInfo = &image_info;
|
|
||||||
descriptor_writes[0].pBufferInfo = nullptr;
|
|
||||||
descriptor_writes[0].pTexelBufferView = nullptr;
|
|
||||||
|
|
||||||
vkUpdateDescriptorSets(get_device(), (uint32_t)descriptor_writes.size(), descriptor_writes.data(), 0, nullptr);
|
|
||||||
|
|
||||||
const VkDeviceSize offset = 0;
|
|
||||||
vkCmdBindVertexBuffers(command_buffer, 0, 1, &vertex_buffer, &offset);
|
|
||||||
vkCmdBindIndexBuffer(command_buffer, index_buffer, 0, VK_INDEX_TYPE_UINT32);
|
|
||||||
|
|
||||||
update_uniform_buffer();
|
|
||||||
vkCmdBindDescriptorSets(command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout, 0, 1, &descriptor_set, 1, &tess_ubo_offset);
|
|
||||||
tess_ubo_offset += tess_ubo_offset_step;
|
|
||||||
|
|
||||||
vkCmdBindPipeline(command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_2d);
|
|
||||||
vkCmdDrawIndexed(command_buffer, model_indices_count, 1, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,6 @@ public:
|
||||||
void end_frame();
|
void end_frame();
|
||||||
void render_tess(const shaderStage_t* stage);
|
void render_tess(const shaderStage_t* stage);
|
||||||
void render_tess_multi(const shaderStage_t* stage);
|
void render_tess_multi(const shaderStage_t* stage);
|
||||||
void render_cinematic_frame();
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void create_command_pool();
|
void create_command_pool();
|
||||||
|
|
@ -76,13 +75,11 @@ public:
|
||||||
void create_depth_buffer_resources();
|
void create_depth_buffer_resources();
|
||||||
|
|
||||||
void create_descriptor_set_layout();
|
void create_descriptor_set_layout();
|
||||||
void create_descriptor_set();
|
|
||||||
void create_image_descriptor_set(const image_t* image);
|
void create_image_descriptor_set(const image_t* image);
|
||||||
void create_multitexture_descriptor_set(const image_t* image, const image_t* image2);
|
void create_multitexture_descriptor_set(const image_t* image, const image_t* image2);
|
||||||
void create_render_pass();
|
void create_render_pass();
|
||||||
void create_framebuffers();
|
void create_framebuffers();
|
||||||
void create_pipeline_layout();
|
void create_pipeline_layout();
|
||||||
VkPipeline create_pipeline(bool depth_test, bool multitexture);
|
|
||||||
|
|
||||||
void upload_geometry();
|
void upload_geometry();
|
||||||
void update_ubo_descriptor(VkDescriptorSet set);
|
void update_ubo_descriptor(VkDescriptorSet set);
|
||||||
|
|
@ -108,17 +105,10 @@ public:
|
||||||
VkImageView depth_image_view = VK_NULL_HANDLE;
|
VkImageView depth_image_view = VK_NULL_HANDLE;
|
||||||
|
|
||||||
VkDescriptorSetLayout descriptor_set_layout = VK_NULL_HANDLE;
|
VkDescriptorSetLayout descriptor_set_layout = VK_NULL_HANDLE;
|
||||||
VkDescriptorSet descriptor_set = VK_NULL_HANDLE;
|
|
||||||
VkRenderPass render_pass = VK_NULL_HANDLE;
|
VkRenderPass render_pass = VK_NULL_HANDLE;
|
||||||
std::vector<VkFramebuffer> framebuffers;
|
std::vector<VkFramebuffer> framebuffers;
|
||||||
VkPipelineLayout pipeline_layout = VK_NULL_HANDLE;
|
VkPipelineLayout pipeline_layout = VK_NULL_HANDLE;
|
||||||
|
|
||||||
VkPipeline pipeline_2d = VK_NULL_HANDLE;
|
|
||||||
|
|
||||||
VkBuffer vertex_buffer = VK_NULL_HANDLE;
|
|
||||||
VkBuffer index_buffer = VK_NULL_HANDLE;
|
|
||||||
uint32_t model_indices_count = 0;
|
|
||||||
|
|
||||||
VkBuffer tess_vertex_buffer = VK_NULL_HANDLE;
|
VkBuffer tess_vertex_buffer = VK_NULL_HANDLE;
|
||||||
VkDeviceMemory tess_vertex_buffer_memory = VK_NULL_HANDLE;
|
VkDeviceMemory tess_vertex_buffer_memory = VK_NULL_HANDLE;
|
||||||
VkDeviceSize tess_vertex_buffer_offset = 0;
|
VkDeviceSize tess_vertex_buffer_offset = 0;
|
||||||
|
|
@ -135,5 +125,4 @@ public:
|
||||||
VkCommandBuffer command_buffer = VK_NULL_HANDLE;
|
VkCommandBuffer command_buffer = VK_NULL_HANDLE;
|
||||||
|
|
||||||
uint32_t swapchain_image_index = -1;
|
uint32_t swapchain_image_index = -1;
|
||||||
VkImageView cinematic_image_view = VK_NULL_HANDLE;
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user