Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
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
26
namespace
Grindstone
{
27
namespace
GraphicsAPI
{
28
class
Buffer
;
29
class
Framebuffer
;
30
class
Image
;
31
class
VertexArrayObject
;
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,
49
Grindstone::Renderer::RenderGraphBuilder
& renderGraphBuilder,
50
Grindstone::Renderer::RenderGraphBuilderResourceRef
colorImageRef,
51
Grindstone::Renderer::RenderGraphBuilderResourceRef
depthImageRef
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;
64
Grindstone::Math::IntRect2D
renderArea;
65
66
std::vector<Grindstone::Rendering::GeometryRenderStats> renderStats;
67
Grindstone::AssetReference<Grindstone::TextureAsset>
brdfLut;
68
69
GraphicsAPI::Buffer
* vertexBuffer;
70
GraphicsAPI::Buffer
* indexBuffer;
71
GraphicsAPI::VertexArrayObject
* planePostProcessVao =
nullptr
;
72
73
Grindstone::Renderer::DeferredRenderMode renderMode;
74
75
Grindstone::Renderer::SkinningPass
skinning;
76
Grindstone::Renderer::ShadowPass
shadows;
77
Grindstone::Renderer::GbufferPass
gbuffer;
78
Grindstone::Renderer::LightingPass
lighting;
79
Grindstone::Renderer::ScreenSpaceReflectionsPass
ssr;
80
Grindstone::Renderer::SmaaPass
smaa;
81
Grindstone::Renderer::ScreenSpaceAmbientOcclusionPass
ssao;
82
Grindstone::Renderer::BlurPass
blur;
83
Grindstone::Renderer::DepthOfFieldPass
dof;
84
Grindstone::Renderer::BloomPass
bloom;
85
Grindstone::Renderer::TonemapPass
tonemap;
86
Grindstone::Renderer::DebugPass
debug;
87
};
88
}
Grindstone::BaseRenderer
Definition
BaseRenderer.hpp:22
Grindstone::GraphicsAPI::Buffer
Definition
Buffer.hpp:49
Grindstone::GraphicsAPI::CommandBuffer
Definition
CommandBuffer.hpp:109
Grindstone::GraphicsAPI::ComputePipeline
Definition
ComputePipeline.hpp:19
Grindstone::GraphicsAPI::Framebuffer
Definition
Framebuffer.hpp:16
Grindstone::GraphicsAPI::GraphicsPipeline
Definition
GraphicsPipeline.hpp:20
Grindstone::GraphicsAPI::Image
Definition
Image.hpp:49
Grindstone::GraphicsAPI::RenderPass
Definition
RenderPass.hpp:10
Grindstone::GraphicsAPI::VertexArrayObject
Definition
VertexArrayObject.hpp:9
Grindstone::Renderer::BloomPass
Definition
BloomPass.hpp:8
Grindstone::Renderer::BlurPass
Definition
BlurPass.hpp:8
Grindstone::Renderer::DebugPass
Definition
DebugPass.hpp:31
Grindstone::Renderer::DepthOfFieldPass
Definition
DepthOfFieldPass.hpp:8
Grindstone::Renderer::GbufferPass
Definition
GbufferPass.hpp:16
Grindstone::Renderer::LightingPass
Definition
LightingPass.hpp:14
Grindstone::Renderer::RenderGraphBuilder
Definition
RenderGraphBuilder.hpp:12
Grindstone::Renderer::ScreenSpaceAmbientOcclusionPass
Definition
ScreenSpaceAmbientOcclusionPass.hpp:17
Grindstone::Renderer::ScreenSpaceReflectionsPass
Definition
ScreenSpaceReflectionsPass.hpp:10
Grindstone::Renderer::ShadowPass
Definition
ShadowPass.hpp:16
Grindstone::Renderer::SkinningPass
Definition
SkinningPass.hpp:8
Grindstone::Renderer::SmaaPass
Definition
SmaaPass.hpp:15
Grindstone::Renderer::TonemapPass
Definition
TonemapPass.hpp:32
Grindstone::WorldContextSet
Definition
WorldContextSet.hpp:11
Grindstone::GraphicsAPI
Definition
Buffer.hpp:9
Grindstone
Definition
ArchiveContentFile.hpp:8
Grindstone::AssetReference
Definition
AssetReference.hpp:45
Grindstone::BaseRenderer::RenderMode
Definition
BaseRenderer.hpp:24
Grindstone::Events::BaseEvent
Definition
BaseEvent.hpp:7
Grindstone::Math::IntRect2D
Definition
Rect.hpp:33
Grindstone::Renderer::RenderGraphBuilderResourceRef
Definition
RenderGraphResourceRef.hpp:51
Grindstone::Rendering::GeometryRenderStats
Definition
GeometryRenderingStats.hpp:6
plugins
Grindstone.Renderer.Deferred
include
DeferredRenderer.hpp
Generated by
1.17.0