LkEngine 0.1.2
 
Loading...
Searching...
No Matches
RenderPass.h
1#pragma once
2
4
5#include "UniformBuffer.h"
6#include "Pipeline.h"
7
8
9namespace LkEngine {
10
11 enum class ERenderPassResourceType : uint16_t
12 {
13 None = 0,
14 UniformBuffer,
15 UniformBufferSet,
16 StorageBuffer,
17 StorageBufferSet,
18 Texture2D,
19 TextureCube,
20 Image2D
21 };
22
23 enum class ERenderPassInputType : uint16_t
24 {
25 None = 0,
26 UniformBuffer,
27 StorageBuffer,
28 ImageSampler1D,
29 ImageSampler2D,
30 ImageSampler3D,
31 StorageImage1D,
32 StorageImage2D,
33 StorageImage3D
34 };
35
37 {
38 ERenderPassResourceType Type = ERenderPassResourceType::None;
39 };
40
42 {
43 ERenderPassInputType Type = ERenderPassInputType::None;
44 uint32_t Set = 0;
45 uint32_t Binding = 0;
46 uint32_t Count = 0;
47 std::string Name{};
48 };
49
51 {
52 TObjectPtr<LPipeline> Pipeline{};
53
54 glm::vec4 MarkerColor;
55
56 std::string DebugName{};
57 };
58
59 class LRenderPass : public LObject
60 {
61 public:
62 virtual ~LRenderPass() = default;
63
64 virtual FRenderPassSpecification& GetSpecification() = 0;
65 virtual const FRenderPassSpecification& GetSpecification() const = 0;
66
67 virtual TObjectPtr<LPipeline> GetPipeline() const = 0;
68 virtual TObjectPtr<LFramebuffer> GetTargetFramebuffer() const = 0;
69
70 virtual void SetInput(std::string_view Name, TObjectPtr<LImage> Image) = 0;
71 virtual void SetInput(std::string_view Name, TObjectPtr<LTexture2D> Texture) = 0;
72 virtual void SetInput(std::string_view Name, TObjectPtr<LUniformBuffer> UniformBuffer) = 0;
73
74 virtual TObjectPtr<LImage> GetOutput(const uint32_t Index) = 0;
75 virtual TObjectPtr<LImage> GetDepthOutput() = 0;
76 virtual uint32_t GetFirstSetIndex() const =0;
77
78 virtual bool Validate() = 0;
79 virtual bool IsInvalidated(const uint32_t Set, const uint32_t Binding) const = 0;
80
81 virtual void Bake() = 0;
82 virtual bool Baked() const = 0;
83 virtual void Prepare() = 0;
84
85 virtual void Terminate() = 0;
86
87 static TObjectPtr<LRenderPass> Create(const FRenderPassSpecification& Specification);
88
89 private:
91 };
92
93}
Core header.
Pipeline.
Definition Object.h:46
Definition RenderPass.h:60
Definition ObjectPtr.h:102
#define LCLASS(Class)
Definition CoreMacros.h:226
Definition Asset.h:11
Definition RenderPass.h:42
Definition RenderPass.h:37
Definition RenderPass.h:51