SpiecsEngine
 
Loading...
Searching...
No Matches
PreRenderer.h
Go to the documentation of this file.
1/**
2* @file PreRenderer.h.
3* @brief The PreRenderer Class Definitions.
4* @author Spices.
5*/
6
7#pragma once
8
9#include "Core/Core.h"
10#include "Render/Renderer/Renderer.h"
11
12namespace Spices {
13
14 /**
15 * @brief PreRenderer Class.
16 * This class defines the global descriptor set.
17 */
18 class PreRenderer : public Renderer
19 {
20 public:
21
22 /**
23 * @brief Constructor Function.
24 * Init member variables.
25 * @param[in] rendererName The name of this Renderer.
26 * @param[in] vulkanState The core vulkan objects that in use.
27 * @param[in] descriptorPool The DescriptorPool.
28 * @param[in] device The VulkanDevice, used for format query.
29 * @param[in] rendererResourcePool The RendererResourcePool, RT Pool.
30 */
32 const std::string& rendererName ,
33 VulkanState& vulkanState ,
34 const std::shared_ptr<VulkanDescriptorPool>& descriptorPool ,
35 const std::shared_ptr<VulkanDevice>& device ,
36 const std::shared_ptr<RendererResourcePool>& rendererResourcePool
37 )
38 : Renderer(rendererName, vulkanState, descriptorPool, device, rendererResourcePool, false)
39 {}
40
41 /**
42 * @brief Destructor Function.
43 */
44 virtual ~PreRenderer() override;
45
46 /**
47 * @brief The interface is inherited from Renderer.
48 * @param[in] ts TimeStep.
49 * @param[in] frameInfo The current frame data.
50 */
51 virtual void Render(TimeStep& ts, FrameInfo& frameInfo) override;
52
53 private:
54
55 /**
56 * @brief The interface is inherited from Renderer.
57 * Create specific render pass.
58 */
59 virtual void CreateRendererPass() override;
60
61 /**
62 * @brief The interface is inherited from Renderer.
63 * Create specific descriptor set for sub pass.
64 */
65 virtual void CreateDescriptorSet() override;
66
67 /**
68 * @brief The interface is inherited from Renderer.
69 * Create Material Specific Pipeline.
70 * @param[in] material Registry material.
71 * @param[in] layout VkPipelineLayout.
72 * @param[in] subPass Handled subPass.
73 */
74 virtual void CreatePipeline(
75 std::shared_ptr<Material> material ,
76 VkPipelineLayout& layout ,
77 std::shared_ptr<RendererSubPass> subPass
78 ) override;
79 };
80}
#define SPICES_PROFILE_ZONE
static void UnLoadForce(const std::string &name)
Forcing UnLoad a VulkanDescriptorSet.
This Class manages all descriptor sets this project.
uint32_t m_FrameIndex
FrameIndex, varying during 0 - (MaxFrameInFlight - 1). Used almost anywhere.
Definition FrameInfo.h:69
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
virtual void CreateRendererPass() override
The interface is inherited from Renderer. Create specific render pass.
virtual ~PreRenderer() override
Destructor Function.
PreRenderer(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.
Definition PreRenderer.h:31
virtual void Render(TimeStep &ts, FrameInfo &frameInfo) override
The interface is inherited from Renderer.
virtual void CreateDescriptorSet() override
The interface is inherited from Renderer. Create specific descriptor set for sub 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.
PreRenderer Class. This class defines the global descriptor set.
Definition PreRenderer.h:19
Basic interface of Queries.
Definition Querier.h:17
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.
virtual void BeginRenderPass()
Begin this Renderer's RenderPass.
Definition Renderer.cpp:840
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
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.
std::string m_RendererName
Specific renderer name, Passed by instanced.
Definition Renderer.h:2017
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
Renderer Class. This class defines the basic behaves of renderer. When we add an new Renderer,...
Definition Renderer.h:57
const float & ft() const
Get time step during frames.
Definition TimeStep.h:51
const float & gt() const
Get time step since Engine Start.
Definition TimeStep.h:57
This Class handles our engine time step during frames. Global Unique.
Definition TimeStep.h:22
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