SpiecsEngine
 
Loading...
Searching...
No Matches
ParticleRenderer.h
Go to the documentation of this file.
1/**
2* @file ParticleRenderer.h.
3* @brief The ParticleRenderer Class Definitions.
4* @author Spices.
5*/
6
7#pragma once
8#include "Core/Core.h"
9#include "Render/Renderer/Renderer.h"
10
11namespace Spices {
12
13 /**
14 * @brief ParticleRenderer Class.
15 * This class defines the particle render behaves.
16 */
18 {
19 public:
20
21 /**
22 * @brief Constructor Function.
23 * Init member variables.
24 * @param[in] rendererName The name of this Renderer.
25 * @param[in] vulkanState The core vulkan objects that in use.
26 * @param[in] descriptorPool The DescriptorPool.
27 * @param[in] device The VulkanDevice, used for format query.
28 * @param[in] rendererResourcePool The RendererResourcePool, RT Pool.
29 */
31 const std::string& rendererName ,
32 VulkanState& vulkanState ,
33 const std::shared_ptr<VulkanDescriptorPool>& descriptorPool ,
34 const std::shared_ptr<VulkanDevice>& device ,
35 const std::shared_ptr<RendererResourcePool>& rendererResourcePool
36 )
37 : Renderer(rendererName, vulkanState, descriptorPool, device, rendererResourcePool)
38 {}
39
40 /**
41 * @brief Destructor Function.
42 */
43 virtual ~ParticleRenderer() override = default;
44
45 /**
46 * @brief The interface is inherited from Renderer.
47 * @param[in] ts TimeStep.
48 * @param[in] frameInfo The current frame data.
49 */
50 virtual void Render(TimeStep& ts, FrameInfo& frameInfo) override;
51
52 private:
53
54 /**
55 * @brief The interface is inherited from Renderer.
56 * Create Specific Renderer pass.
57 */
58 virtual void CreateRendererPass() override;
59
60 /**
61 * @brief The interface is inherited from Renderer.
62 * Create specific descriptor set for sub pass.
63 */
64 virtual void CreateDescriptorSet() override;
65
66 /**
67 * @breif This interface is called on world mark query tick (registry by MeshComponent).
68 */
69 virtual void OnMeshAddedWorld() override;
70
71 /**
72 * @brief The interface is inherited from Renderer.
73 * Create Material Specific Pipeline.
74 * @param[in] material Registry material.
75 * @param[in] layout VkPipelineLayout.
76 * @param[in] subPass Handled subPass.
77 */
78 virtual void CreatePipeline(
79 std::shared_ptr<Material> material ,
80 VkPipelineLayout& layout ,
81 std::shared_ptr<RendererSubPass> subPass
82 ) override;
83 };
84
85}
#define SPICES_PROFILE_ZONE
uint32_t m_FrameIndex
FrameIndex, varying during 0 - (MaxFrameInFlight - 1). Used almost anywhere.
Definition FrameInfo.h:69
static FrameInfo & Get()
Get FrameInfo.
Definition FrameInfo.cpp:14
uint32_t m_ImageIndex
ImageIndex, varying during 0 - (MaxFrameInFlight - 1). Used in swapchain index and framebuffer index.
Definition FrameInfo.h:75
FrameInfo Class. This class defines the FrameInfo data.
Definition FrameInfo.h:32
Material Class. This class contains a branch of parameter and shader, also descriptor.
Definition Material.h:62
MeshPack Class. This class defines some basic behaves and variables. This class need to be inherited ...
Definition MeshPack.h:156
virtual void Render(TimeStep &ts, FrameInfo &frameInfo) override
The interface is inherited from Renderer.
virtual void CreateRendererPass() override
The interface is inherited from Renderer. Create Specific Renderer pass.
virtual void CreatePipeline(std::shared_ptr< Material > material, VkPipelineLayout &layout, std::shared_ptr< RendererSubPass > subPass) override
The interface is inherited from Renderer. Create Material Specific Pipeline.
virtual void CreateDescriptorSet() override
The interface is inherited from Renderer. Create specific descriptor set for sub pass.
ParticleRenderer(const std::string &rendererName, VulkanState &vulkanState, const std::shared_ptr< VulkanDescriptorPool > &descriptorPool, const std::shared_ptr< VulkanDevice > &device, const std::shared_ptr< RendererResourcePool > &rendererResourcePool)
Constructor Function. Init member variables.
virtual ~ParticleRenderer() override=default
Destructor Function.
virtual void OnMeshAddedWorld() override
ParticleRenderer Class. This class defines the particle render behaves.
RendererResourcePool Class. This class is a pool of all framebuffer's attachment.
This Class Combines some data relative to sub pass. Usually as a member variable of RendererPass.
void Dispatch(uint32_t x, uint32_t y, uint32_t z) const
Dispatch Compute Shader.
This class helps to bind pipeline and bind buffer. Specific for pure Compute Renderer....
Definition Renderer.h:1739
void EndRecording() const
End recording all this behaveS does.
Definition Renderer.cpp:561
void Recording(const std::string &caption) const
Recording all this behaves does.
Definition Renderer.cpp:551
RendererPassBuilder & EndSubPass()
End recording a sub pass.
void Build() const
Build the RendererPass.
RendererPassBuilder & AddSubPass(const std::string &subPassName, Querier::StatisticsFlags flags=Querier::ALL)
Add a new SubPass to Renderer Pass.
Renderer(const std::string &rendererName, VulkanState &vulkanState, const std::shared_ptr< VulkanDescriptorPool > &DescriptorPool, const std::shared_ptr< VulkanDevice > &device, const std::shared_ptr< RendererResourcePool > &rendererResourcePool, bool isLoadDefaultMaterial=true)
Constructor Function. Init member variables.
Definition Renderer.cpp:16
virtual void OnSystemInitialize()
This interface is called on render system is registered. Initialize the specific renderer's pipeline,...
Definition Renderer.cpp:38
VulkanState & m_VulkanState
This variable is passed while renderer instanced.
Definition Renderer.h:1992
Renderer Class. This class defines the basic behaves of renderer. When we add an new Renderer,...
Definition Renderer.h:57
TagComponent Class. This class defines the specific behaves of TagComponent.
This Class handles our engine time step during frames. Global Unique.
Definition TimeStep.h:22
TransformComponent Class. This class defines the specific behaves of TransformComponent.
This Class is a Wrapper of VulkanBuffer.
VulkanDescriptorPool Class. This class is the wrapper of VkDescriptorPool.
VulkanInstance Class. This class defines the VulkanDevice behave. This class is just a wrapper of vkd...
This struct contains all Vulkan object in used global.
Definition VulkanUtils.h:74