Rework API graphique Vulkan - EnTT pour ECS + Chargement modèle 3D assimp + SDL3 pour events input et fenetre + mesh texture camera transform ok + attention tous les assets nouveaus ne sont pas commités et il y a du code test en dur dans scene addentity + restructuration globale

This commit is contained in:
Tom Ray
2026-03-14 20:24:17 +01:00
parent 7c352bc280
commit 6695d46bcd
672 changed files with 238656 additions and 1821 deletions

View File

@@ -0,0 +1,13 @@
#version 450
layout(constant_id = 3) const int SIZE = 2;
layout(set = 0, binding = 0, std430) buffer SSBO {
float val[SIZE];
float dummy;
} ssbo;
void main() {
ssbo.val[0] = 0.0;
}

Binary file not shown.

View File

@@ -0,0 +1,155 @@
%YAML 1.1
---
all_type_descriptions:
- &td0
id: 9
op: 28
type_name:
struct_member_name: "val"
storage_class: 0 # UniformConstant
type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 1, dims: [2,], stride: 4 }
member_count: 0
members:
- &td1
id: 6
op: 22
type_name:
struct_member_name: "dummy"
storage_class: 0 # UniformConstant
type_flags: 0x00000008 # FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
- &td2
id: 10
op: 30
type_name: "SSBO"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000002 # BUFFER_BLOCK
traits:
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 2
members:
- *td0
- *td1
all_block_variables:
- &bv0
name: "val"
offset: 0
absolute_offset: 0
size: 8
padded_size: 8
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [2,], stride: 4 }
flags: 0x00000000 # NONE
member_count: 0
members:
type_description: *td0
- &bv1
name: "dummy"
offset: 8
absolute_offset: 8
size: 4
padded_size: 4
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000001 # UNUSED
member_count: 0
members:
type_description: *td1
- &bv2
name: "ssbo"
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000000 # NONE
member_count: 2
members:
- *bv0
- *bv1
type_description: *td2
all_descriptor_bindings:
- &db0
spirv_id: 12
name: "ssbo"
binding: 0
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 7 # VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
resource_type: 8 # UAV
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
block: *bv2 # "ssbo"
array: { dims_count: 0, dims: [] }
accessed: 1
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td2
word_offset: { binding: 83, set: 79 }
all_interface_variables:
module:
generator: 8 # Khronos Glslang Reference Front End
entry_point_name: "main"
entry_point_id: 4
source_language: 2 # GLSL
source_language_version: 450
spirv_execution_model: 5 # GLCompute
shader_stage: 0x00000020 # CS
descriptor_binding_count: 1
descriptor_bindings:
- *db0 # "ssbo"
descriptor_set_count: 1
descriptor_sets:
- set: 0
binding_count: 1
bindings:
- *db0 # "ssbo"
input_variable_count: 0,
input_variables:
output_variable_count: 0,
output_variables:
push_constant_count: 0,
push_constants:
specialization_constant_count: 1,
specialization_constants:
- name: "SIZE"
spirv_id: 8
constant_id: 3
...

View File

@@ -0,0 +1,34 @@
#version 450
#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable
layout(local_size_x = 1) in;
layout(constant_id = 0) const int64_t SONE = 1;
layout(constant_id = 1) const uint64_t UONE = 1;
layout(constant_id = 2) const float F_ONE = 1.0;
layout(constant_id = 3) const double D_ONE = 1.0;
const uint U_SONE = uint(SONE);
const uint U_UONE = uint(UONE);
const int S_SONE = int(SONE);
const int S_UONE = int(UONE);
const float F_ONE2 = float(D_ONE);
const double D_ONE2 = double(F_ONE);
#define DUMMY_SSBO(name, bind, size) layout(std430, set = 0, binding = bind) buffer SSBO_##name { float val[size]; float dummy; } name
DUMMY_SSBO(U_Sone, 0, U_SONE);
DUMMY_SSBO(U_Uone, 1, U_UONE);
DUMMY_SSBO(S_Sone, 2, S_SONE);
DUMMY_SSBO(S_Uone, 3, S_UONE);
void main()
{
U_Sone.val[0] = F_ONE;
U_Uone.val[0] = F_ONE;
S_Sone.val[0] = F_ONE2;
S_Uone.val[0] = F_ONE2;
}

Binary file not shown.

View File

@@ -0,0 +1,530 @@
%YAML 1.1
---
all_type_descriptions:
- &td0
id: 14
op: 28
type_name:
struct_member_name: "val"
storage_class: 0 # UniformConstant
type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 1, dims: [128,], stride: 4 }
member_count: 0
members:
- &td1
id: 6
op: 22
type_name:
struct_member_name: "dummy"
storage_class: 0 # UniformConstant
type_flags: 0x00000008 # FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
- &td2
id: 15
op: 30
type_name: "SSBO_U_Sone"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000002 # BUFFER_BLOCK
traits:
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 2
members:
- *td0
- *td1
- &td3
id: 25
op: 28
type_name:
struct_member_name: "val"
storage_class: 0 # UniformConstant
type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 1, dims: [113,], stride: 4 }
member_count: 0
members:
- &td4
id: 6
op: 22
type_name:
struct_member_name: "dummy"
storage_class: 0 # UniformConstant
type_flags: 0x00000008 # FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
- &td5
id: 26
op: 30
type_name: "SSBO_U_Uone"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000002 # BUFFER_BLOCK
traits:
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 2
members:
- *td3
- *td4
- &td6
id: 31
op: 28
type_name:
struct_member_name: "val"
storage_class: 0 # UniformConstant
type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 1, dims: [114,], stride: 4 }
member_count: 0
members:
- &td7
id: 6
op: 22
type_name:
struct_member_name: "dummy"
storage_class: 0 # UniformConstant
type_flags: 0x00000008 # FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
- &td8
id: 32
op: 30
type_name: "SSBO_S_Sone"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000002 # BUFFER_BLOCK
traits:
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 2
members:
- *td6
- *td7
- &td9
id: 41
op: 28
type_name:
struct_member_name: "val"
storage_class: 0 # UniformConstant
type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 1, dims: [128,], stride: 4 }
member_count: 0
members:
- &td10
id: 6
op: 22
type_name:
struct_member_name: "dummy"
storage_class: 0 # UniformConstant
type_flags: 0x00000008 # FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
- &td11
id: 42
op: 30
type_name: "SSBO_S_Uone"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000002 # BUFFER_BLOCK
traits:
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 2
members:
- *td9
- *td10
all_block_variables:
- &bv0
name: "val"
offset: 0
absolute_offset: 0
size: 4
padded_size: 4
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [128,], stride: 4 }
flags: 0x00000000 # NONE
member_count: 0
members:
type_description: *td0
- &bv1
name: "dummy"
offset: 4
absolute_offset: 4
size: 4
padded_size: 4
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000001 # UNUSED
member_count: 0
members:
type_description: *td1
- &bv2
name: "U_Sone"
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000000 # NONE
member_count: 2
members:
- *bv0
- *bv1
type_description: *td2
- &bv3
name: "val"
offset: 0
absolute_offset: 0
size: 4
padded_size: 4
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [113,], stride: 4 }
flags: 0x00000000 # NONE
member_count: 0
members:
type_description: *td3
- &bv4
name: "dummy"
offset: 4
absolute_offset: 4
size: 4
padded_size: 4
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000001 # UNUSED
member_count: 0
members:
type_description: *td4
- &bv5
name: "U_Uone"
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000000 # NONE
member_count: 2
members:
- *bv3
- *bv4
type_description: *td5
- &bv6
name: "val"
offset: 0
absolute_offset: 0
size: 4
padded_size: 4
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [114,], stride: 4 }
flags: 0x00000000 # NONE
member_count: 0
members:
type_description: *td6
- &bv7
name: "dummy"
offset: 4
absolute_offset: 4
size: 4
padded_size: 4
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000001 # UNUSED
member_count: 0
members:
type_description: *td7
- &bv8
name: "S_Sone"
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000000 # NONE
member_count: 2
members:
- *bv6
- *bv7
type_description: *td8
- &bv9
name: "val"
offset: 0
absolute_offset: 0
size: 4
padded_size: 4
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [128,], stride: 4 }
flags: 0x00000000 # NONE
member_count: 0
members:
type_description: *td9
- &bv10
name: "dummy"
offset: 4
absolute_offset: 4
size: 4
padded_size: 4
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000001 # UNUSED
member_count: 0
members:
type_description: *td10
- &bv11
name: "S_Uone"
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000000 # NONE
member_count: 2
members:
- *bv9
- *bv10
type_description: *td11
all_descriptor_bindings:
- &db0
spirv_id: 17
name: "U_Sone"
binding: 0
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 7 # VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
resource_type: 8 # UAV
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
block: *bv2 # "U_Sone"
array: { dims_count: 0, dims: [] }
accessed: 1
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td2
word_offset: { binding: 191, set: 187 }
- &db1
spirv_id: 28
name: "U_Uone"
binding: 1
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 7 # VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
resource_type: 8 # UAV
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
block: *bv5 # "U_Uone"
array: { dims_count: 0, dims: [] }
accessed: 1
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td5
word_offset: { binding: 224, set: 220 }
- &db2
spirv_id: 34
name: "S_Sone"
binding: 2
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 7 # VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
resource_type: 8 # UAV
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
block: *bv8 # "S_Sone"
array: { dims_count: 0, dims: [] }
accessed: 1
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td8
word_offset: { binding: 249, set: 245 }
- &db3
spirv_id: 44
name: "S_Uone"
binding: 3
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 7 # VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
resource_type: 8 # UAV
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
block: *bv11 # "S_Uone"
array: { dims_count: 0, dims: [] }
accessed: 1
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td11
word_offset: { binding: 278, set: 274 }
all_interface_variables:
module:
generator: 8 # Khronos Glslang Reference Front End
entry_point_name: "main"
entry_point_id: 4
source_language: 2 # GLSL
source_language_version: 450
spirv_execution_model: 5 # GLCompute
shader_stage: 0x00000020 # CS
descriptor_binding_count: 4
descriptor_bindings:
- *db0 # "U_Sone"
- *db1 # "U_Uone"
- *db2 # "S_Sone"
- *db3 # "S_Uone"
descriptor_set_count: 1
descriptor_sets:
- set: 0
binding_count: 4
bindings:
- *db0 # "U_Sone"
- *db1 # "U_Uone"
- *db2 # "S_Sone"
- *db3 # "S_Uone"
input_variable_count: 0,
input_variables:
output_variable_count: 0,
output_variables:
push_constant_count: 0,
push_constants:
specialization_constant_count: 4,
specialization_constants:
- name: "SONE"
spirv_id: 8
constant_id: 0
- name: "F_ONE"
spirv_id: 19
constant_id: 2
- name: "UONE"
spirv_id: 23
constant_id: 1
- name: "D_ONE"
spirv_id: 36
constant_id: 3
...

View File

@@ -0,0 +1,7 @@
#version 450
// note Z is not and ID
// Vulkan 1.3 is needed for glslang to use LocalSizeId over LocalSize
layout(local_size_x_id = 8, local_size_y_id = 4, local_size_z = 4) in;
void main() { }

View File

@@ -0,0 +1,33 @@
%YAML 1.1
---
all_type_descriptions:
all_block_variables:
all_descriptor_bindings:
all_interface_variables:
module:
generator: 8 # Khronos Glslang Reference Front End
entry_point_name: "main"
entry_point_id: 4
source_language: 2 # GLSL
source_language_version: 450
spirv_execution_model: 5 # GLCompute
shader_stage: 0x00000020 # CS
descriptor_binding_count: 0
descriptor_bindings:
descriptor_set_count: 0
descriptor_sets:
input_variable_count: 0,
input_variables:
output_variable_count: 0,
output_variables:
push_constant_count: 0,
push_constants:
specialization_constant_count: 2,
specialization_constants:
- name:
spirv_id: 7
constant_id: 8
- name:
spirv_id: 8
constant_id: 4
...

View File

@@ -0,0 +1,39 @@
%YAML 1.1
---
all_type_descriptions:
all_block_variables:
all_descriptor_bindings:
all_interface_variables:
module:
generator: 8 # Khronos Glslang Reference Front End
entry_point_name: "main"
entry_point_id: 4
source_language: 2 # GLSL
source_language_version: 450
spirv_execution_model: 5 # GLCompute
shader_stage: 0x00000020 # CS
descriptor_binding_count: 0
descriptor_bindings:
descriptor_set_count: 0
descriptor_sets:
input_variable_count: 0,
input_variables:
output_variable_count: 0,
output_variables:
push_constant_count: 0,
push_constants:
specialization_constant_count: 4,
specialization_constants:
- name:
spirv_id: 7
constant_id: 8
- name:
spirv_id: 8
constant_id: 4
- name:
spirv_id: 10
constant_id: 8
- name:
spirv_id: 11
constant_id: 4
...

View File

@@ -0,0 +1,12 @@
#version 450
layout(constant_id = 8) const int SIZE_A = 4;
layout(constant_id = 5) const int SIZE_B = 3;
layout(set = 0, binding = 0, std430) buffer SSBO {
float a[SIZE_A];
float b[SIZE_B];
} ssbo;
void main() {
ssbo.a[2] = ssbo.b[1];
}

View File

@@ -0,0 +1,158 @@
%YAML 1.1
---
all_type_descriptions:
- &td0
id: 9
op: 28
type_name:
struct_member_name: "a"
storage_class: 0 # UniformConstant
type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 1, dims: [4,], stride: 4 }
member_count: 0
members:
- &td1
id: 11
op: 28
type_name:
struct_member_name: "b"
storage_class: 0 # UniformConstant
type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 1, dims: [3,], stride: 4 }
member_count: 0
members:
- &td2
id: 12
op: 30
type_name: "SSBO"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000002 # BUFFER_BLOCK
traits:
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 2
members:
- *td0
- *td1
all_block_variables:
- &bv0
name: "a"
offset: 0
absolute_offset: 0
size: 16
padded_size: 16
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [4,], stride: 4 }
flags: 0x00000000 # NONE
member_count: 0
members:
type_description: *td0
- &bv1
name: "b"
offset: 16
absolute_offset: 16
size: 12
padded_size: 12
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [3,], stride: 4 }
flags: 0x00000000 # NONE
member_count: 0
members:
type_description: *td1
- &bv2
name: "ssbo"
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
flags: 0x00000000 # NONE
member_count: 2
members:
- *bv0
- *bv1
type_description: *td2
all_descriptor_bindings:
- &db0
spirv_id: 14
name: "ssbo"
binding: 0
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 7 # VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
resource_type: 8 # UAV
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
block: *bv2 # "ssbo"
array: { dims_count: 0, dims: [] }
accessed: 1
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td2
word_offset: { binding: 94, set: 90 }
all_interface_variables:
module:
generator: 8 # Khronos Glslang Reference Front End
entry_point_name: "main"
entry_point_id: 4
source_language: 2 # GLSL
source_language_version: 450
spirv_execution_model: 5 # GLCompute
shader_stage: 0x00000020 # CS
descriptor_binding_count: 1
descriptor_bindings:
- *db0 # "ssbo"
descriptor_set_count: 1
descriptor_sets:
- set: 0
binding_count: 1
bindings:
- *db0 # "ssbo"
input_variable_count: 0,
input_variables:
output_variable_count: 0,
output_variables:
push_constant_count: 0,
push_constants:
specialization_constant_count: 2,
specialization_constants:
- name: "SIZE_A"
spirv_id: 8
constant_id: 8
- name: "SIZE_B"
spirv_id: 10
constant_id: 5
...

View File

@@ -0,0 +1,310 @@
#version 450
layout(local_size_x_id = 8, local_size_y = 1, local_size_z = 1) in;
layout(constant_id = 2) const int SONE = 1;
layout(constant_id = 3) const int STWO = 2;
const int _141 = (SONE + STWO);
const uint _144 = (uint(_141) + 0u);
layout(constant_id = 5) const uint UONE = 1u;
const uint _145 = (_144 + UONE);
layout(constant_id = 6) const uint UTWO = 2u;
const uint IADD = (_145 + UTWO);
const uint _147 = (IADD - 5u);
layout(constant_id = 4) const int SNEG_TWO = -2;
const uint _152 = (uint(SNEG_TWO) + 0u);
const uint ISUB = (UTWO - _152);
const uint _154 = (ISUB - 3u);
const uint IMUL = (UTWO * UTWO);
const uint _156 = (IMUL - 3u);
const uint UDIV = (UTWO / UTWO);
layout(constant_id = 7) const int SNEG_THREE = -3;
const int SDIV = (STWO / SNEG_THREE);
const int _160 = (SDIV + 1);
const int SREM = STWO - SNEG_THREE * (STWO / SNEG_THREE);
const int _162 = (SREM - 1);
const int SMOD = (STWO % SNEG_THREE);
const int _165 = (SMOD + 2);
const uint UMOD = (IADD % IMUL);
const uint _168 = (UMOD - 1u);
const uint _170 = (ISUB - 3u);
const uint LSHL = (IADD << _170);
const uint _172 = (LSHL - 11u);
const uint _174 = (ISUB - 3u);
const uint RSHL = (IADD >> _174);
const uint _176 = (RSHL - 2u);
const int _178 = int(IADD + 0u);
const int _179 = (-_178);
const int _180 = (1 - SDIV);
const int RSHA = (_179 >> _180);
const int _182 = (RSHA + 4);
const uint _184 = (ISUB - 3u);
const bool IEQ = (IADD == _184);
const int _186 = IEQ ? 2 : 1;
const uint _188 = (ISUB - 3u);
const bool INEQ = (IADD != _188);
const int _189 = INEQ ? 1 : 2;
const uint _191 = (ISUB - 3u);
const bool ULT = (IADD < _191);
const int _192 = ULT ? 2 : 1;
const uint _194 = (ISUB - 3u);
const bool ULE = (IADD <= _194);
const int _195 = ULE ? 2 : 1;
const uint _197 = (ISUB - 3u);
const bool UGT = (IADD > _197);
const int _198 = UGT ? 1 : 2;
const uint _200 = (ISUB - 3u);
const bool UGE = (IADD >= _200);
const int _201 = UGE ? 1 : 2;
const bool SLT = (SMOD < SREM);
const int _203 = SLT ? 1 : 2;
const bool SLE = (SMOD <= SREM);
const int _205 = SLE ? 1 : 2;
const bool SGT = (SMOD > SREM);
const int _207 = SGT ? 2 : 1;
const bool SGE = (SMOD >= SREM);
const int _209 = SGE ? 2 : 1;
const bool LOR = (IEQ || SLT);
const int _211 = LOR ? 1 : 2;
const bool LAND = (IEQ && SLT);
const int _213 = LAND ? 2 : 1;
const bool LNOT = (!LOR);
const int _215 = LNOT ? 2 : 1;
const uint AND = (IADD & IADD);
const uint _217 = (AND - 5u);
const uint _219 = (ISUB - 3u);
const uint OR = (IADD | _219);
const uint _221 = (OR - 6u);
const uint XOR = (IADD ^ IADD);
const uint _223 = (XOR + 1u);
const uint NOT = (~XOR);
const uint _226 = (NOT - 4294967294u);
const bool LEQ = (LAND == LNOT);
const int _228 = LEQ ? 1 : 2;
const bool LNEQ = (LAND != LNOT);
const int _230 = LNEQ ? 2 : 1;
const uint _232 = (ISUB - 3u);
const uint SEL = IEQ ? IADD : _232;
layout(constant_id = 0) const bool TRUE = true;
layout(constant_id = 1) const bool FALSE = false;
layout(set = 0, binding = 0, std430) buffer SSBO_IAdd
{
float val[_147];
float dummy;
} IAdd;
layout(set = 0, binding = 1, std430) buffer SSBO_ISub
{
float val[_154];
float dummy;
} ISub;
layout(set = 0, binding = 2, std430) buffer SSBO_IMul
{
float val[_156];
float dummy;
} IMul;
layout(set = 0, binding = 3, std430) buffer SSBO_UDiv
{
float val[UDIV];
float dummy;
} UDiv;
layout(set = 0, binding = 4, std430) buffer SSBO_SDiv
{
float val[_160];
float dummy;
} SDiv;
layout(set = 0, binding = 5, std430) buffer SSBO_SRem
{
float val[_162];
float dummy;
} SRem;
layout(set = 0, binding = 6, std430) buffer SSBO_SMod
{
float val[_165];
float dummy;
} SMod;
layout(set = 0, binding = 7, std430) buffer SSBO_UMod
{
float val[_168];
float dummy;
} UMod;
layout(set = 0, binding = 8, std430) buffer SSBO_LShl
{
float val[_172];
float dummy;
} LShl;
layout(set = 0, binding = 9, std430) buffer SSBO_RShl
{
float val[_176];
float dummy;
} RShl;
layout(set = 0, binding = 10, std430) buffer SSBO_RSha
{
float val[_182];
float dummy;
} RSha;
layout(set = 0, binding = 11, std430) buffer SSBO_IEq
{
float val[_186];
float dummy;
} IEq;
layout(set = 0, binding = 12, std430) buffer SSBO_INeq
{
float val[_189];
float dummy;
} INeq;
layout(set = 0, binding = 13, std430) buffer SSBO_Ult
{
float val[_192];
float dummy;
} Ult;
layout(set = 0, binding = 14, std430) buffer SSBO_Ule
{
float val[_195];
float dummy;
} Ule;
layout(set = 0, binding = 15, std430) buffer SSBO_Ugt
{
float val[_198];
float dummy;
} Ugt;
layout(set = 0, binding = 16, std430) buffer SSBO_Uge
{
float val[_201];
float dummy;
} Uge;
layout(set = 0, binding = 17, std430) buffer SSBO_Slt
{
float val[_203];
float dummy;
} Slt;
layout(set = 0, binding = 18, std430) buffer SSBO_Sle
{
float val[_205];
float dummy;
} Sle;
layout(set = 0, binding = 19, std430) buffer SSBO_Sgt
{
float val[_207];
float dummy;
} Sgt;
layout(set = 0, binding = 20, std430) buffer SSBO_Sge
{
float val[_209];
float dummy;
} Sge;
layout(set = 0, binding = 21, std430) buffer SSBO_Lor
{
float val[_211];
float dummy;
} Lor;
layout(set = 0, binding = 22, std430) buffer SSBO_Land
{
float val[_213];
float dummy;
} Land;
layout(set = 0, binding = 23, std430) buffer SSBO_Lnot
{
float val[_215];
float dummy;
} Lnot;
layout(set = 0, binding = 24, std430) buffer SSBO_And
{
float val[_217];
float dummy;
} And;
layout(set = 0, binding = 25, std430) buffer SSBO_Or
{
float val[_221];
float dummy;
} Or;
layout(set = 0, binding = 26, std430) buffer SSBO_Xor
{
float val[_223];
float dummy;
} Xor;
layout(set = 0, binding = 27, std430) buffer SSBO_Not
{
float val[_226];
float dummy;
} Not;
layout(set = 0, binding = 28, std430) buffer SSBO_Leq
{
float val[_228];
float dummy;
} Leq;
layout(set = 0, binding = 29, std430) buffer SSBO_Lneq
{
float val[_230];
float dummy;
} Lneq;
layout(set = 0, binding = 30, std430) buffer SSBO_Sel
{
float val[SEL];
float dummy;
} Sel;
void main()
{
IAdd.val[0] = 0.0;
ISub.val[0] = 0.0;
IMul.val[0] = 0.0;
UDiv.val[0] = 0.0;
SDiv.val[0] = 0.0;
SRem.val[0] = 0.0;
SMod.val[0] = 0.0;
UMod.val[0] = 0.0;
LShl.val[0] = 0.0;
RShl.val[0] = 0.0;
RSha.val[0] = 0.0;
IEq.val[0] = 0.0;
INeq.val[0] = 0.0;
Ult.val[0] = 0.0;
Ule.val[0] = 0.0;
Ugt.val[0] = 0.0;
Uge.val[0] = 0.0;
Slt.val[0] = 0.0;
Sle.val[0] = 0.0;
Sgt.val[0] = 0.0;
Sge.val[0] = 0.0;
Lor.val[0] = 0.0;
Land.val[0] = 0.0;
Lnot.val[0] = 0.0;
And.val[0] = 0.0;
Or.val[0] = 0.0;
Xor.val[0] = 0.0;
Not.val[0] = 0.0;
Leq.val[0] = 0.0;
Lneq.val[0] = 0.0;
Sel.val[0] = 0.0;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff