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,36 @@
// Run: %dxc -spirv -fspv-target-env=vulkan1.3 -E main -T ms_6_7 -fspv-extension=SPV_EXT_mesh_shader
struct PayLoad
{
uint data[8];
};
struct Vertex
{
float4 pos : SV_Position;
};
struct Primitive
{
uint data : COLOR0;
};
[outputtopology("triangle")]
[numthreads(32, 1, 1)]
void main(in uint3 dispatchThreadId : SV_DispatchThreadID,
in uint3 groupThreadId : SV_GroupThreadID,
in uint threadIndex : SV_GroupIndex,
in uint3 groupId : SV_GroupID,
out vertices Vertex verts[64],
out indices uint3 tris[124],
out primitives Primitive prims[124])
{
SetMeshOutputCounts(3, 1);
verts[0].pos = float4(1.f, 0.f, 0.f, 1.f);
verts[1].pos = float4(1.f, 1.f, 0.f, 1.f);
verts[2].pos = float4(1.f, 0.f, 1.f, 1.f);
prims[0].data = 1;
tris[0] = uint3(0, 1, 2);
}

View File

@@ -0,0 +1,245 @@
%YAML 1.1
---
all_type_descriptions:
- &td0
id: 33
op: 23
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x00000104 # VECTOR INT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
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:
- &td1
id: 17
op: 21
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x00000004 # INT
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: 38
op: 28
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x20000108 # ARRAY VECTOR FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 4 }
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: [64,], stride: 0 }
member_count: 0
members:
- &td3
id: 41
op: 28
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x20000104 # ARRAY VECTOR INT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
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: [124,], stride: 0 }
member_count: 0
members:
- &td4
id: 43
op: 28
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x20000004 # ARRAY INT
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: [124,], stride: 0 }
member_count: 0
members:
all_block_variables:
all_descriptor_bindings:
all_interface_variables:
- &iv0
spirv_id: 2
name:
location: 4294967295
storage_class: 1 # Input
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 28 # GlobalInvocationId
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
format: 104 # VK_FORMAT_R32G32B32_UINT
type_description: *td0
word_offset: { location: 0 }
- &iv1
spirv_id: 3
name:
location: 4294967295
storage_class: 1 # Input
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 27 # LocalInvocationId
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
format: 104 # VK_FORMAT_R32G32B32_UINT
type_description: *td0
word_offset: { location: 0 }
- &iv2
spirv_id: 4
name:
location: 4294967295
storage_class: 1 # Input
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 29 # LocalInvocationIndex
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 }
member_count: 0
members:
format: 98 # VK_FORMAT_R32_UINT
type_description: *td1
word_offset: { location: 0 }
- &iv3
spirv_id: 5
name:
location: 4294967295
storage_class: 1 # Input
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 26 # WorkgroupId
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
format: 104 # VK_FORMAT_R32G32B32_UINT
type_description: *td0
word_offset: { location: 0 }
- &iv4
spirv_id: 6
name:
location: 4294967295
storage_class: 3 # Output
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 0 # Position
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 4 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [64,], stride: 0 }
member_count: 0
members:
format: 109 # VK_FORMAT_R32G32B32A32_SFLOAT
type_description: *td2
word_offset: { location: 0 }
- &iv5
spirv_id: 7
name:
location: 4294967295
storage_class: 3 # Output
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 5296 # ??? (5296)
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [124,], stride: 0 }
member_count: 0
members:
format: 104 # VK_FORMAT_R32G32B32_UINT
type_description: *td3
word_offset: { location: 0 }
- &iv6
spirv_id: 8
name: "out.var.COLOR0"
location: 0
storage_class: 3 # Output
semantic:
decoration_flags: 0x00000000 # NONE
built_in: -1 # ??? (-1)
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 1, dims: [124,], stride: 0 }
member_count: 0
members:
format: 98 # VK_FORMAT_R32_UINT
type_description: *td4
word_offset: { location: 150 }
module:
generator: 14 # Google spiregg
entry_point_name: "main"
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 670
spirv_execution_model: 5365 # MeshEXT
shader_stage: 0x00000080 # MESH
descriptor_binding_count: 0
descriptor_bindings:
descriptor_set_count: 0
descriptor_sets:
input_variable_count: 4,
input_variables:
- *iv0 #
- *iv1 #
- *iv2 #
- *iv3 #
output_variable_count: 3,
output_variables:
- *iv4 #
- *iv5 #
- *iv6 # "out.var.COLOR0"
push_constant_count: 0,
push_constants:
specialization_constant_count: 0,
specialization_constants:
...

View File

@@ -0,0 +1,20 @@
// Run: %dxc -spirv -fspv-target-env=vulkan1.3 -E main -T as_6_7 -fspv-extension=SPV_EXT_mesh_shader
struct PayLoad
{
uint data[8];
};
groupshared PayLoad s_payload;
[numthreads(8, 1, 1)]
void main(
in uint3 dispatchThreadId : SV_DispatchThreadID,
in uint3 groupThreadId : SV_GroupThreadID,
in uint threadIndex : SV_GroupIndex,
in uint3 groupId : SV_GroupID)
{
s_payload.data[groupId.x] = 1;
DispatchMesh(1, 1, 1, s_payload);
}

View File

@@ -0,0 +1,137 @@
%YAML 1.1
---
all_type_descriptions:
- &td0
id: 20
op: 23
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x00000104 # VECTOR INT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
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:
- &td1
id: 13
op: 21
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x00000004 # INT
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:
all_block_variables:
all_descriptor_bindings:
all_interface_variables:
- &iv0
spirv_id: 2
name:
location: 4294967295
storage_class: 1 # Input
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 28 # GlobalInvocationId
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
format: 104 # VK_FORMAT_R32G32B32_UINT
type_description: *td0
word_offset: { location: 0 }
- &iv1
spirv_id: 3
name:
location: 4294967295
storage_class: 1 # Input
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 27 # LocalInvocationId
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
format: 104 # VK_FORMAT_R32G32B32_UINT
type_description: *td0
word_offset: { location: 0 }
- &iv2
spirv_id: 4
name:
location: 4294967295
storage_class: 1 # Input
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 29 # LocalInvocationIndex
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 }
member_count: 0
members:
format: 98 # VK_FORMAT_R32_UINT
type_description: *td1
word_offset: { location: 0 }
- &iv3
spirv_id: 5
name:
location: 4294967295
storage_class: 1 # Input
semantic:
decoration_flags: 0x00000010 # BUILT_IN
built_in: 26 # WorkgroupId
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 3 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
format: 104 # VK_FORMAT_R32G32B32_UINT
type_description: *td0
word_offset: { location: 0 }
module:
generator: 14 # Google spiregg
entry_point_name: "main"
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 670
spirv_execution_model: 5364 # TaskEXT
shader_stage: 0x00000040 # TASK
descriptor_binding_count: 0
descriptor_bindings:
descriptor_set_count: 0
descriptor_sets:
input_variable_count: 4,
input_variables:
- *iv0 #
- *iv1 #
- *iv2 #
- *iv3 #
output_variable_count: 0,
output_variables:
push_constant_count: 0,
push_constants:
specialization_constant_count: 0,
specialization_constants:
...