4#include "LkEngine/Renderer/Texture.h"
11 enum class EFramebufferTextureFormat
20 Depth = DEPTH24STENCIL8
23 enum class EFramebufferBlendMode
27 SrcAlphaOneMinusSrcAlpha,
32 enum class EAttachmentLoadOp
43 : ImageFormat(InImageFormat) {}
45 EImageFormat ImageFormat{};
47 EFramebufferBlendMode BlendMode = EFramebufferBlendMode::SrcAlphaOneMinusSrcAlpha;
48 EAttachmentLoadOp LoadOp = EAttachmentLoadOp::Inherit;
55 : Attachments(InAttachments) {}
57 std::vector<FFramebufferTextureSpecification> Attachments{};
65 glm::vec4 ClearColor = { 0.0f, 0.0f, 0.0f, 1.0f };
66 float DepthClearValue = 0.0f;
67 bool ClearColorOnLoad =
true;
68 bool ClearDepthOnLoad =
true;
73 EFramebufferBlendMode BlendMode = EFramebufferBlendMode::None;
75 bool SwapChainTarget =
false;
76 bool Transfer =
false;
83 std::vector<uint32_t> ExistingImageLayers;
85 std::map<uint32_t, TObjectPtr<LImage>> ExistingImages;
87 std::string DebugName;
99 virtual void Invalidate() = 0;
100 virtual void Resize(
const uint32_t NewWidth,
const uint32_t NewHeight,
const bool bForceRecreate =
false) = 0;
101 virtual void AddResizeCallback(
const FResizeCallback& Func) = 0;
105 virtual size_t GetColorAttachmentCount()
const = 0;
106 virtual bool HasDepthAttachment()
const = 0;
108 virtual void Bind()
const = 0;
109 virtual void Unbind()
const = 0;
110 virtual void BindTexture(
const uint32_t AttachmentIndex = 0,
const uint32_t TextureSlot = 0)
const = 0;
112 virtual void Clear() = 0;
113 virtual int ReadPixel(
const uint32_t AttachmentIndex,
const int PosX,
const int PosY) = 0;
114 virtual void ClearAttachment(
const uint32_t AttachmentIndex,
int value) = 0;
115 virtual LRendererID GetColorAttachmentRendererID(
const uint32_t Index = 0)
const = 0;
119 virtual uint32_t GetWidth()
const = 0;
120 virtual uint32_t GetHeight()
const = 0;
121 virtual uint64_t GetSize()
const = 0;
126 static void TargetSwapChain();
135 FORCEINLINE
static constexpr const char* ToString(
const EFramebufferTextureFormat Format)
139 case EFramebufferTextureFormat::RGBA8:
return "RGBA8";
140 case EFramebufferTextureFormat::RED_INTEGER:
return "RED_INTEGER";
141 case EFramebufferTextureFormat::DEPTH24STENCIL8:
return "DEPTH24STENCIL8";
142 case EFramebufferTextureFormat::None:
return "None";
145 LK_CORE_ASSERT(
false,
"Invalid FramebufferTextureFormat");
Definition Framebuffer.h:95
Definition ObjectPtr.h:102
#define LCLASS(Class)
Definition CoreMacros.h:226
uint32_t LRendererID
Definition CoreTypes.h:30
Definition Framebuffer.h:52
Definition Framebuffer.h:61
Definition Framebuffer.h:40