Use push contants to specify mvp transform.
This commit is contained in:
parent
63d14ef988
commit
fb74befd75
|
|
@ -90,10 +90,7 @@
|
||||||
<OutputFile>
|
<OutputFile>
|
||||||
</OutputFile>
|
</OutputFile>
|
||||||
</Bscmake>
|
</Bscmake>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent />
|
||||||
<Message>Post build processing..</Message>
|
|
||||||
<Command>rem bash -c "perl ./unix/cons -- debug"</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<Midl>
|
<Midl>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
#version 450
|
#version 450
|
||||||
|
|
||||||
layout(binding = 0) uniform Transform_UBO {
|
layout(push_constant) uniform Transform {
|
||||||
mat4 mvp;
|
mat4 mvp;
|
||||||
} ubo;
|
};
|
||||||
|
|
||||||
layout(location = 0) in vec3 in_position;
|
layout(location = 0) in vec3 in_position;
|
||||||
layout(location = 1) in vec4 in_color;
|
layout(location = 1) in vec4 in_color;
|
||||||
|
|
@ -18,7 +18,7 @@ out gl_PerVertex {
|
||||||
};
|
};
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
gl_Position = ubo.mvp * vec4(in_position, 1.0);
|
gl_Position = 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,7 +1,7 @@
|
||||||
#version 450
|
#version 450
|
||||||
|
|
||||||
layout(binding = 1) uniform sampler2D texture0;
|
layout(binding = 0) uniform sampler2D texture0;
|
||||||
layout(binding = 2) uniform sampler2D texture1;
|
layout(binding = 1) uniform sampler2D texture1;
|
||||||
|
|
||||||
layout(location = 0) in vec4 frag_color;
|
layout(location = 0) in vec4 frag_color;
|
||||||
layout(location = 1) in vec2 frag_tex_coord0;
|
layout(location = 1) in vec2 frag_tex_coord0;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#version 450
|
#version 450
|
||||||
|
|
||||||
layout(binding = 1) uniform sampler2D texture0;
|
layout(binding = 0) uniform sampler2D texture0;
|
||||||
layout(binding = 2) uniform sampler2D texture1;
|
layout(binding = 1) uniform sampler2D texture1;
|
||||||
|
|
||||||
layout(location = 0) in vec4 frag_color;
|
layout(location = 0) in vec4 frag_color;
|
||||||
layout(location = 1) in vec2 frag_tex_coord0;
|
layout(location = 1) in vec2 frag_tex_coord0;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#version 450
|
#version 450
|
||||||
|
|
||||||
layout(binding = 1) uniform sampler2D texture0;
|
layout(binding = 0) uniform sampler2D texture0;
|
||||||
|
|
||||||
layout(location = 0) in vec4 frag_color;
|
layout(location = 0) in vec4 frag_color;
|
||||||
layout(location = 1) in vec2 frag_tex_coord;
|
layout(location = 1) in vec2 frag_tex_coord;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
#version 450
|
#version 450
|
||||||
|
|
||||||
layout(binding = 0) uniform Transform_UBO {
|
layout(push_constant) uniform Transform {
|
||||||
mat4 mvp;
|
mat4 mvp;
|
||||||
} ubo;
|
};
|
||||||
|
|
||||||
layout(location = 0) in vec3 in_position;
|
layout(location = 0) in vec3 in_position;
|
||||||
layout(location = 1) in vec4 in_color;
|
layout(location = 1) in vec4 in_color;
|
||||||
|
|
@ -16,7 +16,7 @@ out gl_PerVertex {
|
||||||
};
|
};
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
gl_Position = ubo.mvp * vec4(in_position, 1.0);
|
gl_Position = 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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,10 +22,10 @@ unsigned char multi_texture_add_frag_spv[] = {
|
||||||
0x75, 0x6E, 0x63, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x75, 0x6E, 0x63, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,10 @@ unsigned char multi_texture_mul_frag_spv[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
|
|
|
||||||
|
|
@ -11,82 +11,79 @@ unsigned char multi_texture_vert_spv[] = {
|
||||||
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, 0x06, 0x00,
|
0x05, 0x00, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x5F, 0x55, 0x42,
|
0x0E, 0x00, 0x00, 0x00, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x00, 0x00,
|
||||||
0x4F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x70, 0x00,
|
||||||
0x6D, 0x76, 0x70, 0x00, 0x05, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x75, 0x62, 0x6F, 0x00,
|
0x05, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
|
||||||
0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x70, 0x6F, 0x73, 0x69, 0x74,
|
0x16, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00,
|
||||||
0x69, 0x6F, 0x6E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67,
|
0x05, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x63, 0x6F, 0x6C,
|
||||||
0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00,
|
0x6F, 0x72, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x63,
|
||||||
0x69, 0x6E, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
|
0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00,
|
||||||
0x26, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F,
|
0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x30, 0x00,
|
||||||
0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x28, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x74,
|
0x05, 0x00, 0x06, 0x00, 0x28, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63,
|
||||||
0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
|
0x6F, 0x6F, 0x72, 0x64, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2A, 0x00, 0x00, 0x00,
|
||||||
0x2A, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F,
|
0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x31, 0x00,
|
||||||
0x72, 0x64, 0x31, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x74,
|
0x05, 0x00, 0x06, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63,
|
||||||
0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x31, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
|
0x6F, 0x6F, 0x72, 0x64, 0x31, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
|
||||||
0x47, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
|
||||||
0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x47, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||||
0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x16, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||||
0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||||
0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x22, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||||
0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x26, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||||
0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x28, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||||
0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x2A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||||
0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x2B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00,
|
||||||
0x47, 0x00, 0x04, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x47, 0x00, 0x04, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00,
|
||||||
0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
|
||||||
0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
|
||||||
0x1E, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
||||||
0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
||||||
0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
||||||
0x0B, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00,
|
0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
||||||
0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00,
|
0x0D, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
|
||||||
0x0D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00,
|
0x0E, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00,
|
0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00,
|
0x0D, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00,
|
0x14, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
|
||||||
0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x80, 0x3F, 0x20, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x20, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00,
|
0x24, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
|
||||||
0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00,
|
0x24, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x2A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00,
|
||||||
0x2B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x41, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
|
||||||
0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
0x12, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x16, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
|
||||||
0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00,
|
0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x1A, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
|
||||||
0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x06, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
|
||||||
0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
|
0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x91, 0x00, 0x05, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
|
0x07, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
|
||||||
0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
|
0x41, 0x00, 0x05, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
|
||||||
0x91, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00,
|
||||||
0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
0x3D, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||||
0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
0x3E, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
||||||
0x1D, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
0x24, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00,
|
||||||
0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
0x26, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00,
|
||||||
0x3D, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x2C, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x2A, 0x00, 0x00, 0x00,
|
||||||
0x3E, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
0x2C, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
|
||||||
0x24, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00,
|
|
||||||
0x2A, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
|
|
||||||
|
|
||||||
};
|
};
|
||||||
long long multi_texture_vert_spv_size = 1408;
|
long long multi_texture_vert_spv_size = 1372;
|
||||||
|
|
@ -18,7 +18,7 @@ unsigned char single_texture_frag_spv[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
|
|
|
||||||
|
|
@ -11,72 +11,70 @@ unsigned char single_texture_vert_spv[] = {
|
||||||
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, 0x06, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x54, 0x72, 0x61, 0x6E,
|
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x54, 0x72, 0x61, 0x6E,
|
||||||
0x73, 0x66, 0x6F, 0x72, 0x6D, 0x5F, 0x55, 0x42, 0x4F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00,
|
0x73, 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x70, 0x00, 0x05, 0x00, 0x03, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x70, 0x00, 0x05, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x75, 0x62, 0x6F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x70,
|
||||||
0x69, 0x6E, 0x5F, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x05, 0x00, 0x05, 0x00,
|
0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00,
|
0x66, 0x72, 0x61, 0x67, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
|
||||||
0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72,
|
0x22, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67,
|
0x05, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x66, 0x72, 0x61, 0x67, 0x5F, 0x74, 0x65, 0x78,
|
||||||
0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
|
0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64,
|
0x69, 0x6E, 0x5F, 0x74, 0x65, 0x78, 0x5F, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x48, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
||||||
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x48, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
|
||||||
0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
||||||
0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
|
0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
||||||
0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
|
||||||
0x1E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x1E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x3B, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x15, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
|
0x2B, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x18, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x1E, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
0x0F, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||||
0x20, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x11, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00,
|
||||||
0x3B, 0x00, 0x04, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||||
0x20, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
||||||
0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x04, 0x00,
|
||||||
0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x20, 0x00, 0x04, 0x00,
|
||||||
0x3B, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x1E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
||||||
0x2B, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F,
|
0x1E, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||||
0x20, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
||||||
0x3B, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00,
|
||||||
0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||||
0x3B, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x25, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
||||||
0x17, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||||
0x20, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
|
0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x04, 0x00,
|
||||||
0x3B, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00,
|
||||||
0x20, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x3B, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0xF8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00,
|
||||||
0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
0x0D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
||||||
0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x14, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
|
||||||
0x3D, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3D, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
|
0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
|
||||||
0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00,
|
0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x1C, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00,
|
||||||
0x1B, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00,
|
0x18, 0x00, 0x00, 0x00, 0x91, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00,
|
0x13, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1E, 0x00, 0x00, 0x00,
|
||||||
0x1B, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x91, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
0x1F, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00,
|
||||||
0x1D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
0x1F, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0x1E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x3E, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00,
|
0x23, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
|
||||||
0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00,
|
0x28, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00,
|
0xFD, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
|
||||||
0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00,
|
|
||||||
0x29, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
|
|
||||||
};
|
};
|
||||||
long long single_texture_vert_spv_size = 1260;
|
long long single_texture_vert_spv_size = 1224;
|
||||||
|
|
@ -736,7 +736,7 @@ void RE_StretchRaw (int x, int y, int w, int h, int cols, int rows, const byte *
|
||||||
std::array<VkWriteDescriptorSet, 1> descriptor_writes;
|
std::array<VkWriteDescriptorSet, 1> descriptor_writes;
|
||||||
descriptor_writes[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
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].dstSet = vulkan_demo->image_descriptor_sets[ tr.scratchImage[client] ];
|
||||||
descriptor_writes[0].dstBinding = 1;
|
descriptor_writes[0].dstBinding = 0;
|
||||||
descriptor_writes[0].dstArrayElement = 0;
|
descriptor_writes[0].dstArrayElement = 0;
|
||||||
descriptor_writes[0].descriptorCount = 1;
|
descriptor_writes[0].descriptorCount = 1;
|
||||||
descriptor_writes[0].pNext = nullptr;
|
descriptor_writes[0].pNext = nullptr;
|
||||||
|
|
|
||||||
|
|
@ -607,20 +607,22 @@ static VkPipeline create_pipeline(const Vk_Pipeline_Desc& desc) {
|
||||||
vertex_input_state.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
|
vertex_input_state.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
|
||||||
vertex_input_state.pNext = nullptr;
|
vertex_input_state.pNext = nullptr;
|
||||||
vertex_input_state.flags = 0;
|
vertex_input_state.flags = 0;
|
||||||
|
|
||||||
|
auto bindings = Vk_Vertex::get_bindings();
|
||||||
|
auto attribs = Vk_Vertex::get_attributes();
|
||||||
|
auto bindings2 = Vk_Vertex2::get_bindings();
|
||||||
|
auto attribs2 = Vk_Vertex2::get_attributes();
|
||||||
|
|
||||||
if (desc.shader_type == Vk_Shader_Type::single_texture) {
|
if (desc.shader_type == Vk_Shader_Type::single_texture) {
|
||||||
auto bindings = Vk_Vertex::get_bindings();
|
|
||||||
vertex_input_state.vertexBindingDescriptionCount = (uint32_t)bindings.size();
|
vertex_input_state.vertexBindingDescriptionCount = (uint32_t)bindings.size();
|
||||||
vertex_input_state.pVertexBindingDescriptions = bindings.data();
|
vertex_input_state.pVertexBindingDescriptions = bindings.data();
|
||||||
auto attribs = Vk_Vertex::get_attributes();
|
|
||||||
vertex_input_state.vertexAttributeDescriptionCount = (uint32_t)attribs.size();
|
vertex_input_state.vertexAttributeDescriptionCount = (uint32_t)attribs.size();
|
||||||
vertex_input_state.pVertexAttributeDescriptions = attribs.data();
|
vertex_input_state.pVertexAttributeDescriptions = attribs.data();
|
||||||
} else {
|
} else {
|
||||||
auto bindings = Vk_Vertex2::get_bindings();
|
vertex_input_state.vertexBindingDescriptionCount = (uint32_t)bindings2.size();
|
||||||
vertex_input_state.vertexBindingDescriptionCount = (uint32_t)bindings.size();
|
vertex_input_state.pVertexBindingDescriptions = bindings2.data();
|
||||||
vertex_input_state.pVertexBindingDescriptions = bindings.data();
|
vertex_input_state.vertexAttributeDescriptionCount = (uint32_t)attribs2.size();
|
||||||
auto attribs = Vk_Vertex2::get_attributes();
|
vertex_input_state.pVertexAttributeDescriptions = attribs2.data();
|
||||||
vertex_input_state.vertexAttributeDescriptionCount = (uint32_t)attribs.size();
|
|
||||||
vertex_input_state.pVertexAttributeDescriptions = attribs.data();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VkPipelineInputAssemblyStateCreateInfo input_assembly_state;
|
VkPipelineInputAssemblyStateCreateInfo input_assembly_state;
|
||||||
|
|
@ -889,3 +891,35 @@ VkRect2D vk_get_viewport_rect() {
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vk_get_mvp_transform(float mvp[16]) {
|
||||||
|
if (backEnd.projection2D) {
|
||||||
|
float mvp0 = 2.0f / glConfig.vidWidth;
|
||||||
|
float mvp5 = 2.0f / glConfig.vidHeight;
|
||||||
|
|
||||||
|
mvp[0] = mvp0; mvp[1] = 0.0f; mvp[2] = 0.0f; mvp[3] = 0.0f;
|
||||||
|
mvp[4] = 0.0f; mvp[5] = mvp5; mvp[6] = 0.0f; mvp[7] = 0.0f;
|
||||||
|
mvp[8] = 0.0f; mvp[9] = 0.0f; mvp[10] = 1.0f; mvp[11] = 0.0f;
|
||||||
|
mvp[12] = -1.0f; mvp[13] = -1.0f; mvp[14] = 0.0f; mvp[15] = 1.0f;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
const float* p = backEnd.viewParms.projectionMatrix;
|
||||||
|
|
||||||
|
// update q3's proj matrix (opengl) to vulkan conventions: z - [0, 1] instead of [-1, 1] and invert y direction
|
||||||
|
float zNear = r_znear->value;
|
||||||
|
float zFar = tr.viewParms.zFar;
|
||||||
|
float p10 = -zFar / (zFar - zNear);
|
||||||
|
float p14 = -zFar*zNear / (zFar - zNear);
|
||||||
|
float p5 = -p[5];
|
||||||
|
|
||||||
|
float proj[16] = {
|
||||||
|
p[0], p[1], p[2], p[3],
|
||||||
|
p[4], p5, p[6], p[7],
|
||||||
|
p[8], p[9], p10, p[11],
|
||||||
|
p[12], p[13], p14, p[15]
|
||||||
|
};
|
||||||
|
|
||||||
|
extern void myGlMultMatrix( const float *a, const float *b, float *out );
|
||||||
|
myGlMultMatrix(backEnd.or.modelMatrix, proj, mvp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ void vk_deinitialize();
|
||||||
void vk_destroy_resources();
|
void vk_destroy_resources();
|
||||||
|
|
||||||
VkRect2D vk_get_viewport_rect();
|
VkRect2D vk_get_viewport_rect();
|
||||||
|
void vk_get_mvp_transform(float mvp[16]);
|
||||||
|
|
||||||
struct Vk_Staging_Buffer {
|
struct Vk_Staging_Buffer {
|
||||||
VkBuffer handle = VK_NULL_HANDLE;
|
VkBuffer handle = VK_NULL_HANDLE;
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,6 @@
|
||||||
|
|
||||||
#include "tr_local.h"
|
#include "tr_local.h"
|
||||||
|
|
||||||
struct Uniform_Buffer_Object {
|
|
||||||
float mvp[16];
|
|
||||||
};
|
|
||||||
|
|
||||||
FILE* logfile;
|
FILE* logfile;
|
||||||
|
|
||||||
Vulkan_Demo::Vulkan_Demo(int window_width, int window_height)
|
Vulkan_Demo::Vulkan_Demo(int window_width, int window_height)
|
||||||
|
|
@ -38,8 +34,6 @@ Vulkan_Demo::Vulkan_Demo(int window_width, int window_height)
|
||||||
|
|
||||||
create_descriptor_pool();
|
create_descriptor_pool();
|
||||||
|
|
||||||
create_uniform_buffer();
|
|
||||||
|
|
||||||
create_texture_sampler();
|
create_texture_sampler();
|
||||||
|
|
||||||
create_descriptor_set_layout();
|
create_descriptor_set_layout();
|
||||||
|
|
@ -49,11 +43,9 @@ Vulkan_Demo::Vulkan_Demo(int window_width, int window_height)
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vulkan_Demo::create_descriptor_pool() {
|
void Vulkan_Demo::create_descriptor_pool() {
|
||||||
std::array<VkDescriptorPoolSize, 2> pool_sizes;
|
std::array<VkDescriptorPoolSize, 1> pool_sizes;
|
||||||
pool_sizes[0].type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
|
pool_sizes[0].type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||||
pool_sizes[0].descriptorCount = 1024;
|
pool_sizes[0].descriptorCount = 1024;
|
||||||
pool_sizes[1].type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
|
||||||
pool_sizes[1].descriptorCount = 1024;
|
|
||||||
|
|
||||||
VkDescriptorPoolCreateInfo desc;
|
VkDescriptorPoolCreateInfo desc;
|
||||||
desc.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
|
desc.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
|
||||||
|
|
@ -66,17 +58,6 @@ void Vulkan_Demo::create_descriptor_pool() {
|
||||||
descriptor_pool = get_resource_manager()->create_descriptor_pool(desc);
|
descriptor_pool = get_resource_manager()->create_descriptor_pool(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vulkan_Demo::create_uniform_buffer() {
|
|
||||||
auto size = static_cast<VkDeviceSize>(sizeof(Uniform_Buffer_Object)) * 1024;
|
|
||||||
uniform_staging_buffer = create_permanent_staging_buffer(size, uniform_staging_buffer_memory);
|
|
||||||
uniform_buffer = create_buffer(size, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT);
|
|
||||||
|
|
||||||
VkPhysicalDeviceProperties props;
|
|
||||||
vkGetPhysicalDeviceProperties(vk.physical_device, &props);
|
|
||||||
VkDeviceSize offset_align = props.limits.minUniformBufferOffsetAlignment;
|
|
||||||
tess_ubo_offset_step = (uint32_t)((sizeof(Uniform_Buffer_Object) + offset_align - 1) / offset_align * offset_align);
|
|
||||||
}
|
|
||||||
|
|
||||||
VkImage Vulkan_Demo::create_texture(const uint8_t* pixels, int bytes_per_pixel, int image_width, int image_height, VkImageView& image_view) {
|
VkImage Vulkan_Demo::create_texture(const uint8_t* pixels, int bytes_per_pixel, int image_width, int image_height, VkImageView& image_view) {
|
||||||
VkImage staging_image = create_staging_texture(image_width, image_height,
|
VkImage staging_image = create_staging_texture(image_width, image_height,
|
||||||
bytes_per_pixel == 3 ? VK_FORMAT_R8G8B8_UNORM : VK_FORMAT_R8G8B8A8_UNORM, pixels, bytes_per_pixel);
|
bytes_per_pixel == 3 ? VK_FORMAT_R8G8B8_UNORM : VK_FORMAT_R8G8B8A8_UNORM, pixels, bytes_per_pixel);
|
||||||
|
|
@ -111,6 +92,7 @@ VkImage Vulkan_Demo::create_texture(const uint8_t* pixels, int bytes_per_pixel,
|
||||||
region.dstOffset = {0, 0, 0};
|
region.dstOffset = {0, 0, 0};
|
||||||
region.extent.width = image_width;
|
region.extent.width = image_width;
|
||||||
region.extent.height = image_height;
|
region.extent.height = image_height;
|
||||||
|
region.extent.depth = 1;
|
||||||
|
|
||||||
vkCmdCopyImage(command_buffer,
|
vkCmdCopyImage(command_buffer,
|
||||||
staging_image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
staging_image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
||||||
|
|
@ -138,7 +120,7 @@ void Vulkan_Demo::create_texture_sampler() {
|
||||||
desc.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
|
desc.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
|
||||||
desc.mipLodBias = 0.0f;
|
desc.mipLodBias = 0.0f;
|
||||||
desc.anisotropyEnable = VK_TRUE;
|
desc.anisotropyEnable = VK_TRUE;
|
||||||
desc.maxAnisotropy = 16;
|
desc.maxAnisotropy = 1;
|
||||||
desc.compareEnable = VK_FALSE;
|
desc.compareEnable = VK_FALSE;
|
||||||
desc.compareOp = VK_COMPARE_OP_ALWAYS;
|
desc.compareOp = VK_COMPARE_OP_ALWAYS;
|
||||||
desc.minLod = 0.0f;
|
desc.minLod = 0.0f;
|
||||||
|
|
@ -150,11 +132,11 @@ void Vulkan_Demo::create_texture_sampler() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vulkan_Demo::create_descriptor_set_layout() {
|
void Vulkan_Demo::create_descriptor_set_layout() {
|
||||||
std::array<VkDescriptorSetLayoutBinding, 3> descriptor_bindings;
|
std::array<VkDescriptorSetLayoutBinding, 2> descriptor_bindings;
|
||||||
descriptor_bindings[0].binding = 0;
|
descriptor_bindings[0].binding = 0;
|
||||||
descriptor_bindings[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
|
descriptor_bindings[0].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||||
descriptor_bindings[0].descriptorCount = 1;
|
descriptor_bindings[0].descriptorCount = 1;
|
||||||
descriptor_bindings[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT;
|
descriptor_bindings[0].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||||
descriptor_bindings[0].pImmutableSamplers = nullptr;
|
descriptor_bindings[0].pImmutableSamplers = nullptr;
|
||||||
|
|
||||||
descriptor_bindings[1].binding = 1;
|
descriptor_bindings[1].binding = 1;
|
||||||
|
|
@ -163,12 +145,6 @@ void Vulkan_Demo::create_descriptor_set_layout() {
|
||||||
descriptor_bindings[1].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
descriptor_bindings[1].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||||
descriptor_bindings[1].pImmutableSamplers = nullptr;
|
descriptor_bindings[1].pImmutableSamplers = nullptr;
|
||||||
|
|
||||||
descriptor_bindings[2].binding = 2;
|
|
||||||
descriptor_bindings[2].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
|
||||||
descriptor_bindings[2].descriptorCount = 1;
|
|
||||||
descriptor_bindings[2].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
|
||||||
descriptor_bindings[2].pImmutableSamplers = nullptr;
|
|
||||||
|
|
||||||
VkDescriptorSetLayoutCreateInfo desc;
|
VkDescriptorSetLayoutCreateInfo desc;
|
||||||
desc.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
desc.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
||||||
desc.pNext = nullptr;
|
desc.pNext = nullptr;
|
||||||
|
|
@ -199,7 +175,7 @@ void Vulkan_Demo::create_image_descriptor_set(const image_t* image) {
|
||||||
std::array<VkWriteDescriptorSet, 1> descriptor_writes;
|
std::array<VkWriteDescriptorSet, 1> descriptor_writes;
|
||||||
descriptor_writes[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
descriptor_writes[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
descriptor_writes[0].dstSet = set;
|
descriptor_writes[0].dstSet = set;
|
||||||
descriptor_writes[0].dstBinding = 1;
|
descriptor_writes[0].dstBinding = 0;
|
||||||
descriptor_writes[0].dstArrayElement = 0;
|
descriptor_writes[0].dstArrayElement = 0;
|
||||||
descriptor_writes[0].descriptorCount = 1;
|
descriptor_writes[0].descriptorCount = 1;
|
||||||
descriptor_writes[0].pNext = nullptr;
|
descriptor_writes[0].pNext = nullptr;
|
||||||
|
|
@ -210,8 +186,6 @@ void Vulkan_Demo::create_image_descriptor_set(const image_t* image) {
|
||||||
|
|
||||||
vkUpdateDescriptorSets(vk.device, (uint32_t)descriptor_writes.size(), descriptor_writes.data(), 0, nullptr);
|
vkUpdateDescriptorSets(vk.device, (uint32_t)descriptor_writes.size(), descriptor_writes.data(), 0, nullptr);
|
||||||
|
|
||||||
update_ubo_descriptor(set);
|
|
||||||
|
|
||||||
image_descriptor_sets[image] = set;
|
image_descriptor_sets[image] = set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -239,7 +213,7 @@ void Vulkan_Demo::create_multitexture_descriptor_set(const image_t* image, const
|
||||||
std::array<VkWriteDescriptorSet, 2> descriptor_writes;
|
std::array<VkWriteDescriptorSet, 2> descriptor_writes;
|
||||||
descriptor_writes[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
descriptor_writes[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
descriptor_writes[0].dstSet = set;
|
descriptor_writes[0].dstSet = set;
|
||||||
descriptor_writes[0].dstBinding = 1;
|
descriptor_writes[0].dstBinding = 0;
|
||||||
descriptor_writes[0].dstArrayElement = 0;
|
descriptor_writes[0].dstArrayElement = 0;
|
||||||
descriptor_writes[0].descriptorCount = 1;
|
descriptor_writes[0].descriptorCount = 1;
|
||||||
descriptor_writes[0].pNext = nullptr;
|
descriptor_writes[0].pNext = nullptr;
|
||||||
|
|
@ -250,7 +224,7 @@ void Vulkan_Demo::create_multitexture_descriptor_set(const image_t* image, const
|
||||||
|
|
||||||
descriptor_writes[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
descriptor_writes[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
descriptor_writes[1].dstSet = set;
|
descriptor_writes[1].dstSet = set;
|
||||||
descriptor_writes[1].dstBinding = 2;
|
descriptor_writes[1].dstBinding = 1;
|
||||||
descriptor_writes[1].dstArrayElement = 0;
|
descriptor_writes[1].dstArrayElement = 0;
|
||||||
descriptor_writes[1].descriptorCount = 1;
|
descriptor_writes[1].descriptorCount = 1;
|
||||||
descriptor_writes[1].pNext = nullptr;
|
descriptor_writes[1].pNext = nullptr;
|
||||||
|
|
@ -261,23 +235,27 @@ void Vulkan_Demo::create_multitexture_descriptor_set(const image_t* image, const
|
||||||
|
|
||||||
vkUpdateDescriptorSets(vk.device, (uint32_t)descriptor_writes.size(), descriptor_writes.data(), 0, nullptr);
|
vkUpdateDescriptorSets(vk.device, (uint32_t)descriptor_writes.size(), descriptor_writes.data(), 0, nullptr);
|
||||||
|
|
||||||
update_ubo_descriptor(set);
|
|
||||||
|
|
||||||
auto images = std::make_pair(image, image2);
|
auto images = std::make_pair(image, image2);
|
||||||
multitexture_descriptor_sets[images] = set;
|
multitexture_descriptor_sets[images] = set;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vulkan_Demo::create_pipeline_layout() {
|
void Vulkan_Demo::create_pipeline_layout() {
|
||||||
|
VkPushConstantRange push_range;
|
||||||
|
push_range.stageFlags = VK_SHADER_STAGE_VERTEX_BIT;
|
||||||
|
push_range.offset = 0;
|
||||||
|
push_range.size = 64;
|
||||||
|
|
||||||
VkPipelineLayoutCreateInfo desc;
|
VkPipelineLayoutCreateInfo desc;
|
||||||
desc.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
desc.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
||||||
desc.pNext = nullptr;
|
desc.pNext = nullptr;
|
||||||
desc.flags = 0;
|
desc.flags = 0;
|
||||||
desc.setLayoutCount = 1;
|
desc.setLayoutCount = 1;
|
||||||
desc.pSetLayouts = &descriptor_set_layout;
|
desc.pSetLayouts = &descriptor_set_layout;
|
||||||
desc.pushConstantRangeCount = 0;
|
desc.pushConstantRangeCount = 1;
|
||||||
desc.pPushConstantRanges = nullptr;
|
desc.pPushConstantRanges = &push_range;
|
||||||
|
|
||||||
pipeline_layout = get_resource_manager()->create_pipeline_layout(desc);
|
VkResult result = vkCreatePipelineLayout(vk.device, &desc, nullptr, &pipeline_layout);
|
||||||
|
check_vk_result(result, "vkCreatePipelineLayout");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vulkan_Demo::upload_geometry() {
|
void Vulkan_Demo::upload_geometry() {
|
||||||
|
|
@ -317,91 +295,10 @@ void Vulkan_Demo::upload_geometry() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vulkan_Demo::update_ubo_descriptor(VkDescriptorSet set) {
|
|
||||||
VkDescriptorBufferInfo buffer_info;
|
|
||||||
buffer_info.buffer = uniform_buffer;
|
|
||||||
buffer_info.offset = 0;
|
|
||||||
buffer_info.range = sizeof(Uniform_Buffer_Object);
|
|
||||||
|
|
||||||
std::array<VkWriteDescriptorSet, 1> descriptor_writes;
|
|
||||||
descriptor_writes[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
|
||||||
descriptor_writes[0].pNext = nullptr;
|
|
||||||
descriptor_writes[0].dstSet = set;
|
|
||||||
descriptor_writes[0].dstBinding = 0;
|
|
||||||
descriptor_writes[0].dstArrayElement = 0;
|
|
||||||
descriptor_writes[0].descriptorCount = 1;
|
|
||||||
descriptor_writes[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
|
|
||||||
descriptor_writes[0].pImageInfo = nullptr;
|
|
||||||
descriptor_writes[0].pBufferInfo = &buffer_info;
|
|
||||||
descriptor_writes[0].pTexelBufferView = nullptr;
|
|
||||||
|
|
||||||
vkUpdateDescriptorSets(vk.device, (uint32_t)descriptor_writes.size(), descriptor_writes.data(), 0, nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Vulkan_Demo::update_uniform_buffer() {
|
|
||||||
Uniform_Buffer_Object ubo;
|
|
||||||
|
|
||||||
if (backEnd.projection2D) {
|
|
||||||
float mvp0 = 2.0f / glConfig.vidWidth;
|
|
||||||
float mvp5 = 2.0f / glConfig.vidHeight;
|
|
||||||
|
|
||||||
ubo.mvp[0] = mvp0; ubo.mvp[1] = 0.0f; ubo.mvp[2] = 0.0f; ubo.mvp[3] = 0.0f;
|
|
||||||
ubo.mvp[4] = 0.0f; ubo.mvp[5] = mvp5; ubo.mvp[6] = 0.0f; ubo.mvp[7] = 0.0f;
|
|
||||||
ubo.mvp[8] = 0.0f; ubo.mvp[9] = 0.0f; ubo.mvp[10] = 1.0f; ubo.mvp[11] = 0.0f;
|
|
||||||
ubo.mvp[12] = -1.0f; ubo.mvp[13] = -1.0f; ubo.mvp[14] = 0.0f; ubo.mvp[15] = 1.0f;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
const float* p = backEnd.viewParms.projectionMatrix;
|
|
||||||
|
|
||||||
// update q3's proj matrix (opengl) to vulkan conventions: z - [0, 1] instead of [-1, 1] and invert y direction
|
|
||||||
float zNear = r_znear->value;
|
|
||||||
float zFar = tr.viewParms.zFar;
|
|
||||||
float p10 = -zFar / (zFar - zNear);
|
|
||||||
float p14 = -zFar*zNear / (zFar - zNear);
|
|
||||||
float p5 = -p[5];
|
|
||||||
|
|
||||||
float proj[16] = {
|
|
||||||
p[0], p[1], p[2], p[3],
|
|
||||||
p[4], p5, p[6], p[7],
|
|
||||||
p[8], p[9], p10, p[11],
|
|
||||||
p[12], p[13], p14, p[15]
|
|
||||||
};
|
|
||||||
|
|
||||||
extern void myGlMultMatrix( const float *a, const float *b, float *out );
|
|
||||||
myGlMultMatrix(backEnd.or.modelMatrix, proj, ubo.mvp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void* data;
|
|
||||||
VkResult result = vkMapMemory(vk.device, uniform_staging_buffer_memory, tess_ubo_offset, sizeof(ubo), 0, &data);
|
|
||||||
check_vk_result(result, "vkMapMemory");
|
|
||||||
memcpy(data, &ubo, sizeof(ubo));
|
|
||||||
vkUnmapMemory(vk.device, uniform_staging_buffer_memory);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Vulkan_Demo::begin_frame() {
|
void Vulkan_Demo::begin_frame() {
|
||||||
fprintf(logfile, "begin_frame\n");
|
fprintf(logfile, "begin_frame\n");
|
||||||
fflush(logfile);
|
fflush(logfile);
|
||||||
|
|
||||||
VkBufferCopy region;
|
|
||||||
region.srcOffset = 0;
|
|
||||||
region.dstOffset = 0;
|
|
||||||
region.size = sizeof(Uniform_Buffer_Object) * 1024;
|
|
||||||
vkCmdCopyBuffer(vk.command_buffer, uniform_staging_buffer, uniform_buffer, 1, ®ion);
|
|
||||||
|
|
||||||
VkBufferMemoryBarrier barrier;
|
|
||||||
barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
|
|
||||||
barrier.pNext = nullptr;
|
|
||||||
barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
|
||||||
barrier.dstAccessMask = VK_ACCESS_UNIFORM_READ_BIT;
|
|
||||||
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
|
||||||
barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
|
||||||
barrier.buffer = uniform_buffer;
|
|
||||||
barrier.offset = 0;
|
|
||||||
barrier.size = sizeof(Uniform_Buffer_Object) * 1024;
|
|
||||||
|
|
||||||
vkCmdPipelineBarrier(vk.command_buffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_VERTEX_INPUT_BIT, 0,
|
|
||||||
0, nullptr, 1, &barrier, 0, nullptr);
|
|
||||||
|
|
||||||
std::array<VkClearValue, 2> clear_values;
|
std::array<VkClearValue, 2> clear_values;
|
||||||
clear_values[0].color = {1.0f, 0.3f, 0.3f, 0.0f};
|
clear_values[0].color = {1.0f, 0.3f, 0.3f, 0.0f};
|
||||||
clear_values[1].depthStencil = {1.0, 0};
|
clear_values[1].depthStencil = {1.0, 0};
|
||||||
|
|
@ -420,13 +317,12 @@ void Vulkan_Demo::begin_frame() {
|
||||||
|
|
||||||
tess_vertex_buffer_offset = 0;
|
tess_vertex_buffer_offset = 0;
|
||||||
tess_index_buffer_offset = 0;
|
tess_index_buffer_offset = 0;
|
||||||
tess_ubo_offset = 0;
|
|
||||||
|
|
||||||
glState.vk_dirty_attachments = false;
|
glState.vk_dirty_attachments = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vulkan_Demo::end_frame() {
|
void Vulkan_Demo::end_frame() {
|
||||||
fprintf(logfile, "end_frame (vb_size %d, ib_size %d, ubo_size %d)\n", (int)tess_vertex_buffer_offset, (int)tess_index_buffer_offset, (int)tess_ubo_offset);
|
fprintf(logfile, "end_frame (vb_size %d, ib_size %d)\n", (int)tess_vertex_buffer_offset, (int)tess_index_buffer_offset);
|
||||||
fflush(logfile);
|
fflush(logfile);
|
||||||
vkCmdEndRenderPass(vk.command_buffer);
|
vkCmdEndRenderPass(vk.command_buffer);
|
||||||
}
|
}
|
||||||
|
|
@ -467,10 +363,12 @@ void Vulkan_Demo::render_tess(const shaderStage_t* stage) {
|
||||||
image_t* image = glState.vk_current_images[0];
|
image_t* image = glState.vk_current_images[0];
|
||||||
VkDescriptorSet set = image_descriptor_sets[image];
|
VkDescriptorSet set = image_descriptor_sets[image];
|
||||||
|
|
||||||
update_uniform_buffer();
|
float mvp[16];
|
||||||
vkCmdBindDescriptorSets(vk.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout, 0, 1, &set, 1, &tess_ubo_offset);
|
vk_get_mvp_transform(mvp);
|
||||||
tess_ubo_offset += tess_ubo_offset_step;
|
vkCmdPushConstants(vk.command_buffer, pipeline_layout, VK_SHADER_STAGE_VERTEX_BIT, 0, 64, mvp);
|
||||||
|
|
||||||
|
vkCmdBindDescriptorSets(vk.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout, 0, 1, &set, 0, nullptr);
|
||||||
|
|
||||||
vkCmdBindPipeline(vk.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, stage->vk_pipeline);
|
vkCmdBindPipeline(vk.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, stage->vk_pipeline);
|
||||||
|
|
||||||
VkRect2D r = vk_get_viewport_rect();
|
VkRect2D r = vk_get_viewport_rect();
|
||||||
|
|
@ -541,9 +439,11 @@ void Vulkan_Demo::render_tess_multi(const shaderStage_t* stage) {
|
||||||
}
|
}
|
||||||
auto set = it->second;
|
auto set = it->second;
|
||||||
|
|
||||||
update_uniform_buffer();
|
float mvp[16];
|
||||||
vkCmdBindDescriptorSets(vk.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout, 0, 1, &set, 1, &tess_ubo_offset);
|
vk_get_mvp_transform(mvp);
|
||||||
tess_ubo_offset += tess_ubo_offset_step;
|
vkCmdPushConstants(vk.command_buffer, pipeline_layout, VK_SHADER_STAGE_VERTEX_BIT, 0, 64, mvp);
|
||||||
|
|
||||||
|
vkCmdBindDescriptorSets(vk.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout, 0, 1, &set, 0, nullptr);
|
||||||
|
|
||||||
vkCmdBindPipeline(vk.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, stage->vk_pipeline);
|
vkCmdBindPipeline(vk.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, stage->vk_pipeline);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ public:
|
||||||
public:
|
public:
|
||||||
void create_descriptor_pool();
|
void create_descriptor_pool();
|
||||||
|
|
||||||
void create_uniform_buffer();
|
|
||||||
VkImage create_texture(const uint8_t* pixels, int bytes_per_pixel, int width, int height, VkImageView& image_view);
|
VkImage create_texture(const uint8_t* pixels, int bytes_per_pixel, int width, int height, VkImageView& image_view);
|
||||||
void create_texture_sampler();
|
void create_texture_sampler();
|
||||||
|
|
||||||
|
|
@ -30,8 +29,6 @@ public:
|
||||||
void create_pipeline_layout();
|
void create_pipeline_layout();
|
||||||
|
|
||||||
void upload_geometry();
|
void upload_geometry();
|
||||||
void update_ubo_descriptor(VkDescriptorSet set);
|
|
||||||
void update_uniform_buffer();
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const int window_width = 0;
|
const int window_width = 0;
|
||||||
|
|
@ -43,10 +40,6 @@ public:
|
||||||
|
|
||||||
VkDescriptorPool descriptor_pool = VK_NULL_HANDLE;
|
VkDescriptorPool descriptor_pool = VK_NULL_HANDLE;
|
||||||
|
|
||||||
VkBuffer uniform_staging_buffer = VK_NULL_HANDLE;
|
|
||||||
VkDeviceMemory uniform_staging_buffer_memory = VK_NULL_HANDLE;
|
|
||||||
VkBuffer uniform_buffer = VK_NULL_HANDLE;
|
|
||||||
|
|
||||||
VkSampler texture_image_sampler = VK_NULL_HANDLE;
|
VkSampler texture_image_sampler = VK_NULL_HANDLE;
|
||||||
|
|
||||||
VkDescriptorSetLayout descriptor_set_layout = VK_NULL_HANDLE;
|
VkDescriptorSetLayout descriptor_set_layout = VK_NULL_HANDLE;
|
||||||
|
|
@ -59,9 +52,6 @@ public:
|
||||||
VkDeviceMemory tess_index_buffer_memory = VK_NULL_HANDLE;
|
VkDeviceMemory tess_index_buffer_memory = VK_NULL_HANDLE;
|
||||||
VkDeviceSize tess_index_buffer_offset = 0;
|
VkDeviceSize tess_index_buffer_offset = 0;
|
||||||
|
|
||||||
uint32_t tess_ubo_offset = 0;
|
|
||||||
uint32_t tess_ubo_offset_step = -1;
|
|
||||||
|
|
||||||
std::map<const image_t*, VkDescriptorSet> image_descriptor_sets; // quick UI prototyping
|
std::map<const image_t*, VkDescriptorSet> image_descriptor_sets; // quick UI prototyping
|
||||||
std::map<std::pair<const image_t*, const image_t*>, VkDescriptorSet> multitexture_descriptor_sets;
|
std::map<std::pair<const image_t*, const image_t*>, VkDescriptorSet> multitexture_descriptor_sets;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,11 +35,6 @@ void Resource_Manager::release_resources() {
|
||||||
vkDestroyDescriptorSetLayout(device, descriptor_set_layout, nullptr);
|
vkDestroyDescriptorSetLayout(device, descriptor_set_layout, nullptr);
|
||||||
}
|
}
|
||||||
descriptor_set_layouts.clear();
|
descriptor_set_layouts.clear();
|
||||||
|
|
||||||
for (auto pipeline_layout : pipeline_layouts) {
|
|
||||||
vkDestroyPipelineLayout(device, pipeline_layout, nullptr);
|
|
||||||
}
|
|
||||||
pipeline_layouts.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VkSemaphore Resource_Manager::create_semaphore() {
|
VkSemaphore Resource_Manager::create_semaphore() {
|
||||||
|
|
@ -86,11 +81,3 @@ VkDescriptorSetLayout Resource_Manager::create_descriptor_set_layout(const VkDes
|
||||||
descriptor_set_layouts.push_back(descriptor_set_layout);
|
descriptor_set_layouts.push_back(descriptor_set_layout);
|
||||||
return descriptor_set_layout;
|
return descriptor_set_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
VkPipelineLayout Resource_Manager::create_pipeline_layout(const VkPipelineLayoutCreateInfo& desc) {
|
|
||||||
VkPipelineLayout pipeline_layout;
|
|
||||||
VkResult result = vkCreatePipelineLayout(device, &desc, nullptr, &pipeline_layout);
|
|
||||||
check_vk_result(result, "vkCreatePipelineLayout");
|
|
||||||
pipeline_layouts.push_back(pipeline_layout);
|
|
||||||
return pipeline_layout;
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,13 @@
|
||||||
class Resource_Manager {
|
class Resource_Manager {
|
||||||
public:
|
public:
|
||||||
void initialize(VkDevice device);
|
void initialize(VkDevice device);
|
||||||
void release_resources();
|
void release_resources();
|
||||||
|
|
||||||
VkSemaphore create_semaphore();
|
VkSemaphore create_semaphore();
|
||||||
VkDescriptorPool create_descriptor_pool(const VkDescriptorPoolCreateInfo& desc);
|
VkDescriptorPool create_descriptor_pool(const VkDescriptorPoolCreateInfo& desc);
|
||||||
VkBuffer create_buffer(const VkBufferCreateInfo& desc);
|
VkBuffer create_buffer(const VkBufferCreateInfo& desc);
|
||||||
VkSampler create_sampler(const VkSamplerCreateInfo& desc);
|
VkSampler create_sampler(const VkSamplerCreateInfo& desc);
|
||||||
VkDescriptorSetLayout create_descriptor_set_layout(const VkDescriptorSetLayoutCreateInfo& desc);
|
VkDescriptorSetLayout create_descriptor_set_layout(const VkDescriptorSetLayoutCreateInfo& desc);
|
||||||
VkPipelineLayout create_pipeline_layout(const VkPipelineLayoutCreateInfo& desc);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VkDevice device = VK_NULL_HANDLE;
|
VkDevice device = VK_NULL_HANDLE;
|
||||||
|
|
@ -22,7 +21,6 @@ private:
|
||||||
std::vector<VkBuffer> buffers;
|
std::vector<VkBuffer> buffers;
|
||||||
std::vector<VkSampler> samplers;
|
std::vector<VkSampler> samplers;
|
||||||
std::vector<VkDescriptorSetLayout> descriptor_set_layouts;
|
std::vector<VkDescriptorSetLayout> descriptor_set_layouts;
|
||||||
std::vector<VkPipelineLayout> pipeline_layouts;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Resource_Manager* get_resource_manager();
|
Resource_Manager* get_resource_manager();
|
||||||
|
|
|
||||||
|
|
@ -296,22 +296,3 @@ VkBuffer create_buffer(VkDeviceSize size, VkBufferUsageFlags usage) {
|
||||||
check_vk_result(result, "vkBindBufferMemory");
|
check_vk_result(result, "vkBindBufferMemory");
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
VkBuffer create_permanent_staging_buffer(VkDeviceSize size, VkDeviceMemory& memory) {
|
|
||||||
VkBufferCreateInfo desc;
|
|
||||||
desc.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
|
||||||
desc.pNext = nullptr;
|
|
||||||
desc.flags = 0;
|
|
||||||
desc.size = size;
|
|
||||||
desc.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
|
|
||||||
desc.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
|
||||||
desc.queueFamilyIndexCount = 0;
|
|
||||||
desc.pQueueFamilyIndices = nullptr;
|
|
||||||
|
|
||||||
VkBuffer buffer = get_resource_manager()->create_buffer(desc);
|
|
||||||
|
|
||||||
memory = get_allocator()->allocate_staging_memory(buffer);
|
|
||||||
VkResult result = vkBindBufferMemory(vk.device, buffer, memory, 0);
|
|
||||||
check_vk_result(result, "vkBindBufferMemory");
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -39,4 +39,3 @@ VkImageView create_image_view(VkImage image, VkFormat format, VkImageAspectFlags
|
||||||
|
|
||||||
// Buffers
|
// Buffers
|
||||||
VkBuffer create_buffer(VkDeviceSize size, VkBufferUsageFlags usage);
|
VkBuffer create_buffer(VkDeviceSize size, VkBufferUsageFlags usage);
|
||||||
VkBuffer create_permanent_staging_buffer(VkDeviceSize size, VkDeviceMemory& memory);
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user