Graphics: Add data-driven pipeline passes

Fix compilation
This commit is contained in:
SirLynix
2023-11-02 16:19:41 +01:00
committed by Jérôme Leclercq
parent 4995364418
commit 8fb6ea728d
41 changed files with 876 additions and 264 deletions

View File

@@ -9,9 +9,11 @@
#include <NazaraUtils/Prerequisites.hpp>
#include <Nazara/Graphics/Config.hpp>
#include <Nazara/Graphics/FramePipelinePassRegistry.hpp>
#include <Nazara/Graphics/Material.hpp>
#include <Nazara/Graphics/MaterialInstance.hpp>
#include <Nazara/Graphics/MaterialPassRegistry.hpp>
#include <Nazara/Graphics/PipelinePassList.hpp>
#include <Nazara/Graphics/TextureSamplerCache.hpp>
#include <Nazara/Renderer/RenderDevice.hpp>
#include <Nazara/Renderer/RenderPassCache.hpp>
@@ -43,7 +45,10 @@ namespace Nz
inline const std::shared_ptr<RenderPipeline>& GetBlitPipeline(bool transparent) const;
inline const std::shared_ptr<RenderPipelineLayout>& GetBlitPipelineLayout() const;
inline const DefaultMaterials& GetDefaultMaterials() const;
inline const std::shared_ptr<PipelinePassList>& GetDefaultPipelinePasses() const;
inline const DefaultTextures& GetDefaultTextures() const;
inline FramePipelinePassRegistry& GetFramePipelinePassRegistry();
inline const FramePipelinePassRegistry& GetFramePipelinePassRegistry() const;
inline MaterialPassRegistry& GetMaterialPassRegistry();
inline const MaterialPassRegistry& GetMaterialPassRegistry() const;
inline MaterialInstanceLoader& GetMaterialInstanceLoader();
@@ -88,21 +93,25 @@ namespace Nz
private:
void BuildBlitPipeline();
void BuildDefaultMaterials();
void BuildDefaultPipelinePasses();
void BuildDefaultTextures();
template<std::size_t N> void RegisterEmbedShaderModule(const UInt8(&content)[N]);
void RegisterMaterialPasses();
void RegisterPipelinePasses();
void RegisterShaderModules();
void SelectDepthStencilFormats();
std::optional<RenderPassCache> m_renderPassCache;
std::optional<TextureSamplerCache> m_samplerCache;
std::shared_ptr<nzsl::FilesystemModuleResolver> m_shaderModuleResolver;
std::shared_ptr<PipelinePassList> m_defaultPipelinePasses;
std::shared_ptr<RenderDevice> m_renderDevice;
std::shared_ptr<RenderPipeline> m_blitPipeline;
std::shared_ptr<RenderPipeline> m_blitPipelineTransparent;
std::shared_ptr<RenderPipelineLayout> m_blitPipelineLayout;
DefaultMaterials m_defaultMaterials;
DefaultTextures m_defaultTextures;
FramePipelinePassRegistry m_pipelinePassRegistry;
MaterialInstanceLoader m_materialInstanceLoader;
MaterialLoader m_materialLoader;
MaterialPassRegistry m_materialPassRegistry;