23 {
25
27 {
29 .AddStorageTexture(2, 0, VK_SHADER_STAGE_COMPUTE_BIT, { "Particle" }, VK_FORMAT_R32G32B32A32_SFLOAT)
30 .AddStorageBuffer(2, 1, sizeof(SpicesShader::Vertex), VK_SHADER_STAGE_COMPUTE_BIT)
31 .Build();
32
33 return;
34 }
35
36 std::shared_ptr<VulkanBuffer> buffer = nullptr;
37
38 IterWorldCompWithBreak<TagComponent>(
FrameInfo::Get(), [&](
int entityID, TransformComponent& tranComp, TagComponent& tagComp) {
39 if (tagComp.GetTag().find("Ground") != tagComp.GetTag().end())
40 {
41 auto& meshComp = FrameInfo::Get().m_World->GetRegistry().get<MeshComponent>((entt::entity)entityID);
42 const std::shared_ptr<MeshPack> meshPack = *meshComp.GetMesh()->GetPacks().first();
43 buffer = meshPack->GetResource().positions.buffer;
44 return true;
45 }
46 return false;
47 });
48
49 if (!buffer)
50 {
52 .AddStorageTexture(2, 0, VK_SHADER_STAGE_COMPUTE_BIT, { "Particle" }, VK_FORMAT_R32G32B32A32_SFLOAT)
53 .AddStorageBuffer(2, 1, sizeof(SpicesShader::Vertex), VK_SHADER_STAGE_COMPUTE_BIT)
55
56 return;
57 }
58
60 .AddStorageTexture(2, 0, VK_SHADER_STAGE_COMPUTE_BIT, { "Particle" }, VK_FORMAT_R32G32B32A32_SFLOAT)
61 .AddStorageBuffer(2, 1, VK_SHADER_STAGE_COMPUTE_BIT, buffer)
62 .Build();
63 }
#define SPICES_PROFILE_ZONE
static FrameInfo & Get()
Get FrameInfo.
friend class DescriptorSetBuilder
Allow this class access all data.