SpiecsEngine
 
Loading...
Searching...
No Matches

◆ Render()

void Spices::ParticleRenderer::Render ( TimeStep & ts,
FrameInfo & frameInfo )
overridevirtual

The interface is inherited from Renderer.

Parameters
[in]tsTimeStep.
[in]frameInfoThe current frame data.

Implements Spices::Renderer.

Definition at line 88 of file ParticleRenderer.cpp.

89 {
91
92 ComputeRenderBehaveBuilder builder{ this ,frameInfo.m_FrameIndex, frameInfo.m_ImageIndex, m_VulkanState.m_ComputeCommandBuffer };
93
94 builder.Recording("Particle");
95
96 std::shared_ptr<VulkanBuffer> buffer = nullptr;
97
98 IterWorldCompWithBreak<TagComponent>(FrameInfo::Get(), [&](int entityID, TransformComponent& tranComp, TagComponent& tagComp) {
99 if (tagComp.GetTag().find("Ground") != tagComp.GetTag().end())
100 {
101 auto& meshComp = FrameInfo::Get().m_World->GetRegistry().get<MeshComponent>((entt::entity)entityID);
102 const std::shared_ptr<MeshPack> meshPack = *meshComp.GetMesh()->GetPacks().first();
103 buffer = meshPack->GetResource().positions.buffer;
104 return true;
105 }
106 return false;
107 });
108
109 if (!buffer) return;
110
111 builder.AddBarriers(buffer->Get(), 0, VK_ACCESS_SHADER_WRITE_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
112
113 builder.BindDescriptorSet(DescriptorSetManager::GetByName("PreRenderer"));
114
115 builder.BindDescriptorSet(DescriptorSetManager::GetByName({ m_Pass->GetName(), "Particle" }));
116
117 builder.BindPipeline("ParticleRenderer.Particle.Default");
118
119 builder.Dispatch(16 * 16, 1, 1);
120
121 //builder.ReleaseBarriers(buffer->Get(), VK_ACCESS_SHADER_WRITE_BIT, 0, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT);
122
123 builder.EndRecording();
124 }
#define SPICES_PROFILE_ZONE
static DescriptorSetInfo & GetByName(const String2 &name)
Get a DescriptorSetInfo by owner's name.
static FrameInfo & Get()
Get FrameInfo.
Definition FrameInfo.cpp:14
std::shared_ptr< RendererPass > m_Pass
RendererPass.
Definition Renderer.h:2012
VulkanState & m_VulkanState
This variable is passed while renderer instanced.
Definition Renderer.h:1992
std::array< VkCommandBuffer, MaxFrameInFlight > m_ComputeCommandBuffer

References Spices::Renderer::ComputeRenderBehaveBuilder::Dispatch(), Spices::Renderer::RenderBehaveBuilder::EndRecording(), Spices::FrameInfo::Get(), Spices::FrameInfo::m_FrameIndex, Spices::FrameInfo::m_ImageIndex, Spices::Renderer::m_VulkanState, and Spices::Renderer::RenderBehaveBuilder::Recording().