Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
DeferredRenderer.hpp
1#pragma once
2
3#include <vector>
4#include <glm/glm.hpp>
5
6#include <Common/ResourcePipeline/Uuid.hpp>
7#include <EngineCore/Assets/PipelineSet/GraphicsPipelineAsset.hpp>
8#include <EngineCore/Assets/PipelineSet/ComputePipelineAsset.hpp>
9#include <EngineCore/Assets/AssetReference.hpp>
10#include <EngineCore/Rendering/BaseRenderer.hpp>
11
12#include <Grindstone.Renderer.Deferred/include/Passes/SmaaPass.hpp>
13#include <Grindstone.Renderer.Deferred/include/Passes/BloomPass.hpp>
14#include <Grindstone.Renderer.Deferred/include/Passes/BlurPass.hpp>
15#include <Grindstone.Renderer.Deferred/include/Passes/DebugPass.hpp>
16#include <Grindstone.Renderer.Deferred/include/Passes/DepthOfFieldPass.hpp>
17#include <Grindstone.Renderer.Deferred/include/Passes/ForwardPass.hpp>
18#include <Grindstone.Renderer.Deferred/include/Passes/GbufferPass.hpp>
19#include <Grindstone.Renderer.Deferred/include/Passes/LightingPass.hpp>
20#include <Grindstone.Renderer.Deferred/include/Passes/ScreenSpaceAmbientOcclusionPass.hpp>
21#include <Grindstone.Renderer.Deferred/include/Passes/ScreenSpaceReflectionsPass.hpp>
22#include <Grindstone.Renderer.Deferred/include/Passes/ShadowPass.hpp>
23#include <Grindstone.Renderer.Deferred/include/Passes/TonemapPass.hpp>
24#include <Grindstone.Renderer.Deferred/include/Passes/SkinningPass.hpp>
25
26namespace Grindstone {
27 namespace GraphicsAPI {
28 class Buffer;
29 class Framebuffer;
30 class Image;
32 class GraphicsPipeline;
33 class ComputePipeline;
34 class CommandBuffer;
35 };
36
37 class DeferredRenderer : public BaseRenderer {
38 public:
39 DeferredRenderer(GraphicsAPI::RenderPass* targetRenderPass);
40 virtual ~DeferredRenderer();
41 virtual bool OnWindowResize(Events::BaseEvent*) override;
42 virtual void Resize(uint32_t width, uint32_t height) override;
43 virtual void Render(
44 GraphicsAPI::CommandBuffer* commandBuffer,
45 Grindstone::WorldContextSet& worldContextSet,
46 glm::mat4 projectionMatrix,
47 glm::mat4 viewMatrix,
48 glm::vec3 eyePos,
52 ) override;
53
54 virtual uint16_t GetRenderModeCount() const override;
55 virtual const RenderMode* GetRenderModes() const override;
56 virtual void SetRenderMode(uint16_t mode) override;
57 virtual std::vector<Grindstone::Rendering::GeometryRenderStats> GetRenderingStats() override;
58 virtual void PushRenderingStats(const Grindstone::Rendering::GeometryRenderStats& stats) override;
59
60 private:
61
62 uint32_t framebufferWidth = 0u;
63 uint32_t framebufferHeight = 0u;
65
66 std::vector<Grindstone::Rendering::GeometryRenderStats> renderStats;
68
69 GraphicsAPI::Buffer* vertexBuffer;
70 GraphicsAPI::Buffer* indexBuffer;
71 GraphicsAPI::VertexArrayObject* planePostProcessVao = nullptr;
72
73 Grindstone::Renderer::DeferredRenderMode renderMode;
74
87 };
88}
Definition BaseRenderer.hpp:22
Definition Buffer.hpp:49
Definition CommandBuffer.hpp:109
Definition ComputePipeline.hpp:19
Definition Framebuffer.hpp:16
Definition GraphicsPipeline.hpp:20
Definition Image.hpp:49
Definition RenderPass.hpp:10
Definition VertexArrayObject.hpp:9
Definition BloomPass.hpp:8
Definition BlurPass.hpp:8
Definition DebugPass.hpp:31
Definition DepthOfFieldPass.hpp:8
Definition GbufferPass.hpp:16
Definition LightingPass.hpp:14
Definition RenderGraphBuilder.hpp:12
Definition ScreenSpaceAmbientOcclusionPass.hpp:17
Definition ScreenSpaceReflectionsPass.hpp:10
Definition ShadowPass.hpp:16
Definition SkinningPass.hpp:8
Definition SmaaPass.hpp:15
Definition TonemapPass.hpp:32
Definition WorldContextSet.hpp:11
Definition Buffer.hpp:9
Definition ArchiveContentFile.hpp:8
Definition AssetReference.hpp:45
Definition BaseRenderer.hpp:24
Definition BaseEvent.hpp:7
Definition Rect.hpp:33
Definition RenderGraphResourceRef.hpp:51
Definition GeometryRenderingStats.hpp:6