yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

lucy96chenSplit render-vk.h/.cpp into a set of smaller files (#2244)43e1b7cdc

master
1.2 KiB56 linesraw
1// vk-framebuffer.h
2#pragma once
3
4#include "vk-base.h"
5
6namespace gfx
7{
8
9using namespace Slang;
10
11namespace vk
12{
13
14enum
15{
16    kMaxRenderTargets = 8,
17    kMaxTargets = kMaxRenderTargets + 1,
18};
19
20class FramebufferLayoutImpl : public FramebufferLayoutBase
21{
22public:
23    VkRenderPass m_renderPass;
24    DeviceImpl* m_renderer;
25    Array<VkAttachmentDescription, kMaxTargets> m_targetDescs;
26    Array<VkAttachmentReference, kMaxRenderTargets> m_colorReferences;
27    VkAttachmentReference m_depthReference;
28    bool m_hasDepthStencilTarget;
29    uint32_t m_renderTargetCount;
30    VkSampleCountFlagBits m_sampleCount = VK_SAMPLE_COUNT_1_BIT;
31
32public:
33    ~FramebufferLayoutImpl();
34    Result init(DeviceImpl* renderer, const IFramebufferLayout::Desc& desc);
35};
36
37class FramebufferImpl : public FramebufferBase
38{
39public:
40    VkFramebuffer m_handle;
41    ShortList<ComPtr<IResourceView>> renderTargetViews;
42    ComPtr<IResourceView> depthStencilView;
43    uint32_t m_width;
44    uint32_t m_height;
45    BreakableReference<DeviceImpl> m_renderer;
46    VkClearValue m_clearValues[kMaxTargets];
47    RefPtr<FramebufferLayoutImpl> m_layout;
48
49public:
50    ~FramebufferImpl();
51
52    Result init(DeviceImpl* renderer, const IFramebuffer::Desc& desc);
53};
54
55} // namespace vk
56} // namespace gfx