SpiecsEngine
 
Loading...
Searching...
No Matches
Spices::Renderer Class Referenceabstract

Renderer Class. This class defines the basic behaves of renderer. When we add an new Renderer, we need inherit from this. More...

#include <Renderer.h>

Inheritance diagram for Spices::Renderer:
Spices::BasePassRenderer Spices::ParticleRenderer Spices::PostProcessRenderer Spices::PreRenderer Spices::RayTracingComposeRenderer Spices::RayTracingRenderer Spices::SceneComposeRenderer Spices::SlateRenderer Spices::SpriteRenderer Spices::TestRenderer Spices::ViewportGridRenderer Spices::WorldPickRenderer Spices::WorldPickStage2Renderer

Classes

class  ComputeRenderBehaveBuilder
 This class helps to bind pipeline and bind buffer. Specific for pure Compute Renderer. Only instanced during Render(). More...
 
class  DescriptorSetBuilder
 This Class is a helper for Building Specific Renderer DescriptorSet. Only instanced during CreateDescriptorSets(). More...
 
class  DGCLayoutBuilder
 This Class is a helper for Building GDC Layout. Only instanced during CreateDeviceGeneratedCommandsLayout(). More...
 
class  PipelineBuilder
 This Class is a helper for Building Specific Renderer Pipeline. Only instanced during CreatePipeline(). More...
 
class  RayTracingRenderBehaveBuilder
 This class helps to bind pipeline and bind buffer. Specific for RayTracing Renderer. Only instanced during Render(). More...
 
class  RenderBehaveBuilder
 This class helps to bind pipeline and bind buffer. Only instanced during Render(). More...
 
class  RendererPassBuilder
 This Class is a helper for Building RendererPass. Only instanced during CreateRendererPass(). More...
 

Public Member Functions

 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.
 
virtual ~Renderer ()=default
 Destructor Function. We destroy pipeline layout and free descriptors that holed by this renderer here.
 
 Renderer (const Renderer &)=delete
 Copy Constructor Function.
 
Rendereroperator= (const Renderer &)=delete
 Copy Assignment Operation.
 
virtual void OnSystemInitialize ()
 This interface is called on render system is registered. Initialize the specific renderer's pipeline, render pass. framebuffer, descriptor, and so on...
 
virtual void Render (TimeStep &ts, FrameInfo &frameInfo)=0
 The interface is called every frame. Defines what data needs to be renderer and how to render.
 
virtual void OnWindowResizeOver ()
 This interface is called on Window resized over (registry by swapchain). If the specific renderer uses swapchain image attachment during CreateRenderPass(), this interface needs to override, callOnSlateResize here just will be fine.
 
virtual void OnSlateResize ()
 
virtual void OnMeshAddedWorld ()
 
void RegistryMaterial (const std::string &materialName, const std::string &subPassName)
 Registry material to Specific Renderer.
 
void RegistryDGCPipeline (const std::string &materialName, const std::string &subPassName, VulkanDeviceGeneratedCommandsNV *indirectPtr)
 Registry dgc pipeline to Specific Renderer.
 
template<typename T >
std::shared_ptr< VulkanDeviceGeneratedCommandsNVFillIndirectRenderData (const std::string &subPassName, std::shared_ptr< std::vector< uint32_t > > view)
 Fill in World RenderAble data to IndirectBuffer.
 
template<typename T >
std::shared_ptr< std::vector< uint32_t > > GetEntityWithComponent (World *world)
 Get entities with component in world.
 
std::shared_ptr< RendererPass > & GetPasses ()
 Get RendererPass.
 
std::shared_ptr< MaterialGetDefaultMaterial (const std::string &subPassName) const
 Get default material using sub pass Name.
 
template<typename F >
void IterStatistics (F &&func)
 Iterator the specific RenderPass Statistics in Renderer.
 
void ResetRendererState ()
 Reset Renderer State to disActive.
 

Static Public Attributes

static std::shared_ptr< scl::behave_state_list< void, Renderer::RenderBehaveBuilder *, VkCommandBuffer > > m_StatisticsStateList
 Statistics StateList.
 

Protected Member Functions

virtual void CreateRendererPass ()=0
 The interface is called during OnSystemInitialize(). Create specific render pass.
 
virtual void CreateDescriptorSet ()=0
 This interface is called during OnSystemInitialize(). Create all sub pass descriptorSet.
 
virtual void CreateDeviceGeneratedCommandsLayout ()
 This interface is called during OnSystemInitialize(). Create Device Generated Commands Layout.
 
virtual void CreatePipeline (std::shared_ptr< Material > material, VkPipelineLayout &layout, std::shared_ptr< RendererSubPass > subPass)=0
 Create Specific Material Pipeline.
 
void CreateDefaultMaterial ()
 Create Specific Renderer Default Material.
 
void CreateDGCMaterial (const std::string &subPass, VulkanDeviceGeneratedCommandsNV *indirectPtr)
 Create Specific Renderer DGC Material.
 
VkPipelineLayout CreatePipelineLayout (const std::vector< VkDescriptorSetLayout > &rowSetLayouts, const std::shared_ptr< RendererSubPass > &subPass) const
 Create Pipeline Layout with material's descriptorset and renderer's descriptor set.
 
virtual void CreateDeviceGeneratedCommandsPipeline (const std::string &pipelineName, const std::string &materialName, VkPipelineLayout &layout, std::shared_ptr< RendererSubPass > subPass, VulkanDeviceGeneratedCommandsNV *indirectPtr)
 Create device generated command Pipeline.
 
template<typename F >
std::future< VkCommandBuffer > SubmitCmdsParallel (VkCommandBuffer primaryCmdBuffer, uint32_t subPass, F &&func)
 Submit a group of commands to secondary command buffer, and execute all of them.
 
template<typename T , typename F >
void IterWorldComp (FrameInfo &frameInfo, F func)
 Iterator the specific Component in World.
 
template<typename T , typename F >
void IterWorldCompWithBreak (FrameInfo &frameInfo, F func)
 Iterator the specific Component in World With break.
 
template<typename T , typename F >
void IterWorldCompWithRange (FrameInfo &frameInfo, const std::vector< uint32_t > &ranges, F func)
 Iterator the specific Component in World With range.
 
template<typename T , typename F >
void IterWorldCompWithRange (FrameInfo &frameInfo, const std::vector< uint32_t > &ranges, uint32_t floor, uint32_t ceil, F func)
 Iterator the specific Component in World With range.
 
template<typename T , typename F >
void IterWorldCompWithBreakWithRange (FrameInfo &frameInfo, const std::vector< uint32_t > &ranges, F func)
 Iterator the specific Component in World With break With range.
 
template<typename T , typename F >
void IterWorldCompWithBreakWithRange (FrameInfo &frameInfo, const std::vector< uint32_t > &ranges, uint32_t floor, uint32_t ceil, F func)
 Iterator the specific Component in World With break With range.
 
std::tuple< glm::mat4, glm::mat4, unsigned int, float > GetActiveCameraMatrix (FrameInfo &frameInfo)
 Get The activated camera entity's view matrix and projection matrix.
 
void GetDirectionalLight (FrameInfo &frameInfo, std::array< SpicesShader::DirectionalLight, SpicesShader::DIRECTIONALLIGHT_BUFFER_MAXNUM > &dLightBuffer)
 Get DirectionalLightComponent's render data in World.
 
void GetDirectionalLightMatrix (FrameInfo &frameInfo, std::array< glm::mat4, MAX_DIRECTIONALLIGHT_NUM > &directionalLight)
 
void GetPointLight (FrameInfo &frameInfo, std::array< SpicesShader::PointLight, SpicesShader::POINTLIGHT_BUFFER_MAXNUM > &pLightBuffer)
 Get PointLightComponent's render data in World.
 

Protected Attributes

VulkanStatem_VulkanState
 This variable is passed while renderer instanced.
 
std::shared_ptr< VulkanDescriptorPoolm_DescriptorPool
 This variable is passed while renderer instanced.
 
std::shared_ptr< VulkanDevicem_Device
 VulkanDevice , Passed by instanced.
 
std::shared_ptr< RendererResourcePoolm_RendererResourcePool
 RendererResourcePool, Passed by instanced.
 
std::shared_ptr< RendererPassm_Pass
 RendererPass.
 
std::string m_RendererName
 Specific renderer name, Passed by instanced.
 
scl::thread_unordered_map< std::string, std::shared_ptr< VulkanPipeline > > m_Pipelines
 Renderer stored material pipelines.
 
DescriptorSetManager::DescriptorSetCombineFlags m_DescriptorSetCombine
 Combination of DescriptorSet.
 
bool m_IsLoadDefaultMaterial
 Whether should load a default renderer material.
 
bool m_IsActive
 Whether this renderer is active(submit commands in RendererBehaveBuilder).
 
std::unordered_map< std::string, std::shared_ptr< VulkanDeviceGeneratedCommandsNV > > m_DGCData
 Data of dgc DGC Draw.
 
std::shared_ptr< RendererCachem_RenderCache
 RendererCache.
 

Friends

class DescriptorSetBuilder
 Allow this class access all data.
 
class RendererPassBuilder
 
class DGCLayoutBuilder
 

Detailed Description

Renderer Class. This class defines the basic behaves of renderer. When we add an new Renderer, we need inherit from this.

Definition at line 56 of file Renderer.h.


The documentation for this class was generated from the following files: