SpiecsEngine
 
Loading...
Searching...
No Matches

◆ CreateDescriptorSet()

void Spices::ParticleRenderer::CreateDescriptorSet ( )
overrideprivatevirtual

The interface is inherited from Renderer. Create specific descriptor set for sub pass.

Implements Spices::Renderer.

Definition at line 22 of file ParticleRenderer.cpp.

23 {
25
26 if (!FrameInfo::Get().m_World)
27 {
28 DescriptorSetBuilder{ "Particle", this }
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 {
51 DescriptorSetBuilder{ "Particle", this }
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)
54 .Build();
55
56 return;
57 }
58
59 DescriptorSetBuilder{ "Particle", this }
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.
Definition FrameInfo.cpp:14
friend class DescriptorSetBuilder
Allow this class access all data.
Definition Renderer.h:2052
Definition Build.py:1

References Spices::FrameInfo::Get().