SpiecsEngine
 
Loading...
Searching...
No Matches
BasePassRenderer.h
Go to the documentation of this file.
1/**
2* @file BasePassRenderer.h.
3* @brief The BasePassRenderer 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 namespace BasePassR {
14
16 {
18 };
19 }
20
21 /**
22 * @brief BasePassRenderer Class.
23 * This class defines the base pass render behaves.
24 */
26 {
27 public:
28
29 /**
30 * @brief Constructor Function.
31 * Init member variables.
32 * @param[in] rendererName The name of this Renderer.
33 * @param[in] vulkanState The core vulkan objects that in use.
34 * @param[in] descriptorPool The DescriptorPool.
35 * @param[in] device The VulkanDevice, used for format query.
36 * @param[in] rendererResourcePool The RendererResourcePool, RT Pool.
37 */
39 const std::string& rendererName ,
40 VulkanState& vulkanState ,
41 const std::shared_ptr<VulkanDescriptorPool>& descriptorPool ,
42 const std::shared_ptr<VulkanDevice>& device ,
43 const std::shared_ptr<RendererResourcePool>& rendererResourcePool
44 )
45 : Renderer(rendererName, vulkanState, descriptorPool, device, rendererResourcePool, true)
46 , m_View(nullptr)
47 {}
48
49 /**
50 * @brief Destructor Function.
51 */
52 virtual ~BasePassRenderer() override = default;
53
54 /**
55 * @brief The interface is inherited from Renderer.
56 * @param[in] ts TimeStep.
57 * @param[in] frameInfo The current frame data.
58 */
59 virtual void Render(TimeStep& ts, FrameInfo& frameInfo) override;
60
61 private:
62
63 /**
64 * @brief The interface is inherited from Renderer.
65 * Create Specific Renderer pass.
66 */
67 virtual void CreateRendererPass() override;
68
69 /**
70 * @brief The interface is inherited from Renderer.
71 * Create specific descriptor set for sub pass.
72 */
73 virtual void CreateDescriptorSet() override;
74
75 /**
76 * @brief This interface is called during OnSystemInitialize().
77 * Create Device Generated Commands Layout.
78 */
79 virtual void CreateDeviceGeneratedCommandsLayout() override;
80
81 /**
82 * @breif This interface is called on world mark query tick (registry by MeshComponent).
83 */
84 virtual void OnMeshAddedWorld() override;
85
86 /**
87 * @brief The interface is inherited from Renderer.
88 * Create Material Specific Pipeline.
89 * @param[in] material Registry material.
90 * @param[in] layout VkPipelineLayout.
91 * @param[in] subPass Handled subPass.
92 */
93 virtual void CreatePipeline(
94 std::shared_ptr<Material> material ,
95 VkPipelineLayout& layout ,
96 std::shared_ptr<RendererSubPass> subPass
97 ) override;
98
99 /**
100 * @brief Create device generated command Pipeline.
101 * @param[in] pipelineName Pipeline's name.
102 * @param[in] materialName Material's name.
103 * @param[in] layout PipelineLayout.
104 * @param[in] subPass RendererSubPass.
105 * @param[in] indirectPtr VulkanDeviceGeneratedCommandsNV.
106 */
108 const std::string& pipelineName ,
109 const std::string& materialName ,
110 VkPipelineLayout& layout ,
111 std::shared_ptr<RendererSubPass> subPass ,
113 ) override;
114
115 private:
116
117 /**
118 * @brief World entities view.
119 */
121 };
122
123}
#define SPICES_PROFILE_ZONEN(...)
#define SPICES_PROFILE_ZONE
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 ~BasePassRenderer() override=default
Destructor Function.
virtual void CreateRendererPass() override
The interface is inherited from Renderer. Create Specific Renderer pass.
virtual void CreateDescriptorSet() override
The interface is inherited from Renderer. Create specific descriptor set for sub pass.
virtual void CreateDeviceGeneratedCommandsPipeline(const std::string &pipelineName, const std::string &materialName, VkPipelineLayout &layout, std::shared_ptr< RendererSubPass > subPass, VulkanDeviceGeneratedCommandsNV *indirectPtr) override
Create device generated command Pipeline.
BasePassRenderer(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 void CreateDeviceGeneratedCommandsLayout() override
This interface is called during OnSystemInitialize(). Create Device Generated Commands Layout.
virtual void OnMeshAddedWorld() override
std::shared_ptr< std::vector< uint32_t > > m_View
World entities view.
virtual void Render(TimeStep &ts, FrameInfo &frameInfo) override
The interface is inherited from Renderer.
BasePassRenderer Class. This class defines the base pass render behaves.
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
RendererType m_RendererType
The renderer type of current world.
Definition FrameInfo.h:99
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
MeshComponent Class. This class defines the specific behaves of MeshComponent.
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.
DGCLayoutBuilder & AddDrawMeshTaskInput()
Add Draw Mesh Task Command to Input.
DGCLayoutBuilder & AddShaderGroupInput()
Add Binding Shader Group Command to Input.
void Build() const
Create GDC Layout.
DGCLayoutBuilder & AddPushConstantInput()
Add Binding PushConstant Command to Input.
DescriptorSetBuilder & AddPushConstant(uint32_t size)
Set VkPushConstantRange by a specific push constant struct.
virtual void BeginNextSubPass(const std::string &subPassName)
End a preview sub pass and stat next sub pass.
Definition Renderer.cpp:765
void Await(std::function< void(const VkCommandBuffer &cmdBuffer)> func) const
Await Async Commands.
Definition Renderer.cpp:583
void BeginRenderPassAsync()
Begin this Renderer's RenderPass Async.
Definition Renderer.cpp:925
virtual void EndRenderPass()
End this Renderer's RenderPass.
Definition Renderer.cpp:981
This class helps to bind pipeline and bind buffer. Only instanced during Render().
Definition Renderer.h:985
virtual void OnMeshAddedWorld()
Definition Renderer.cpp:86
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
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
SkyBoxComponent Class. This class defines the specific behaves of SkyBoxComponent.
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.
VulkanDescriptorPool Class. This class is the wrapper of VkDescriptorPool.
VulkanDeviceGeneratedCommandsNV Class. This class defines the VulkanDeviceGeneratedCommandsNV behaves...
VulkanInstance Class. This class defines the VulkanDevice behave. This class is just a wrapper of vkd...
constexpr bool m_IsUseDGC
Use DGC or not.
RendererType
Definition FrameInfo.h:22
std::vector< SpicesShader::MeshDesc > descs
This struct contains all Vulkan object in used global.
Definition VulkanUtils.h:74