yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
43e1b7cdc
master
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{ 16kMaxRenderTargets = 8 , 17kMaxTargets = kMaxRenderTargets + 1 , 18}; 19 20class FramebufferLayoutImpl :public FramebufferLayoutBase 21{ 22public : 23VkRenderPass m_renderPass ; 24DeviceImpl * m_renderer ; 25Array < VkAttachmentDescription ,kMaxTargets > m_targetDescs ; 26Array < VkAttachmentReference ,kMaxRenderTargets > m_colorReferences ; 27VkAttachmentReference m_depthReference ; 28bool m_hasDepthStencilTarget ; 29uint32_t m_renderTargetCount ; 30VkSampleCountFlagBits m_sampleCount = VK_SAMPLE_COUNT_1_BIT ; 31 32public : 33 ~FramebufferLayoutImpl (); 34Result init (DeviceImpl * renderer ,const IFramebufferLayout ::Desc & desc ); 35}; 36 37class FramebufferImpl :public FramebufferBase 38{ 39public : 40VkFramebuffer m_handle ; 41ShortList < ComPtr < IResourceView >>renderTargetViews ; 42ComPtr < IResourceView > depthStencilView ; 43uint32_t m_width ; 44uint32_t m_height ; 45BreakableReference < DeviceImpl > m_renderer ; 46VkClearValue m_clearValues [kMaxTargets ]; 47RefPtr < FramebufferLayoutImpl > m_layout ; 48 49public : 50 ~FramebufferImpl (); 51 52Result init (DeviceImpl * renderer ,const IFramebuffer ::Desc & desc ); 53}; 54 55}// namespace vk 56}// namespace gfx