Files
Seele/src/Engine/Graphics/RenderPass/RenderPass.h
T

51 lines
1.4 KiB
C++
Raw Normal View History

2021-05-06 17:02:10 +02:00
#pragma once
#include "MinimalEngine.h"
#include "Math/Math.h"
2022-11-17 16:47:42 +01:00
#include "RenderGraphResources.h"
#include "Component/Camera.h"
2023-10-24 15:01:09 +02:00
#include "Scene/Scene.h"
#include "Material/MaterialInstance.h"
#include "Graphics/VertexData.h"
2021-05-06 17:02:10 +02:00
namespace Seele
{
2021-09-23 10:10:39 +02:00
DECLARE_NAME_REF(Gfx, Viewport)
DECLARE_NAME_REF(Gfx, Graphics)
2021-05-06 17:02:10 +02:00
DECLARE_NAME_REF(Gfx, RenderPass)
class RenderPass
{
public:
2023-11-05 10:36:01 +01:00
RenderPass(Gfx::PGraphics graphics, PScene scene);
RenderPass(RenderPass&&) = default;
RenderPass& operator=(RenderPass&&) = default;
virtual ~RenderPass();
virtual void beginFrame(const Component::Camera& cam);
2022-04-15 23:45:44 +02:00
virtual void render() = 0;
virtual void endFrame() = 0;
2021-05-06 17:02:10 +02:00
virtual void publishOutputs() = 0;
virtual void createRenderPass() = 0;
2023-11-05 10:36:01 +01:00
void setResources(PRenderGraphResources _resources);
void setViewport(Gfx::PViewport _viewport);
2021-05-06 17:02:10 +02:00
protected:
2021-10-13 15:20:30 +02:00
struct ViewParameter
2021-05-06 17:02:10 +02:00
{
2023-01-21 18:43:21 +01:00
Matrix4 viewMatrix;
Matrix4 projectionMatrix;
2024-02-23 08:31:21 +01:00
Matrix4 inverseProjection;
2023-01-21 18:43:21 +01:00
Vector4 cameraPosition;
Vector2 screenDimensions;
2021-05-10 23:57:55 +02:00
} viewParams;
2021-10-01 19:55:04 +02:00
PRenderGraphResources resources;
2023-11-05 10:36:01 +01:00
Gfx::ODescriptorLayout viewParamsLayout;
2023-11-08 23:27:21 +01:00
Gfx::OUniformBuffer viewParamsBuffer;
2023-11-05 10:36:01 +01:00
Gfx::PDescriptorSet viewParamsSet;
Gfx::ORenderPass renderPass;
2021-09-23 10:10:39 +02:00
Gfx::PGraphics graphics;
Gfx::PViewport viewport;
2023-10-24 15:01:09 +02:00
PScene scene;
2021-05-06 17:02:10 +02:00
};
2023-10-24 15:01:09 +02:00
template<typename RP>
concept RenderPassType = std::derived_from<RP, RenderPass>;
2021-10-01 19:55:04 +02:00
2021-05-06 17:02:10 +02:00
} // namespace Seele