SpiecsEngine
 
Loading...
Searching...
No Matches

◆ AddDepthAttachment() [2/2]

template<typename T >
Renderer::RendererPassBuilder & Spices::Renderer::RendererPassBuilder::AddDepthAttachment ( const std::string & attachmentName,
const TextureType & type,
T func )

Instance a VkAttachmentDescription.

Write in data.

Parameters
[inattachmentDescription VkAttachmentDescription.

Instance a VkClearValue. Though we reverse z depth, clear buffer with 0.0f here.

Instance a RendererResourceCreateInfo.

Get layers.

Instance a VkAttachmentReference.

Definition at line 2900 of file Renderer.h.

2905 {
2907
2911 VkAttachmentDescription depthAttachment{};
2913 depthAttachment.samples = VK_SAMPLE_COUNT_1_BIT;
2914 depthAttachment.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
2915 depthAttachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
2916 depthAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
2917 depthAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
2918 depthAttachment.initialLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
2919 depthAttachment.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
2920
2925 func(depthAttachment);
2926
2931 VkClearValue clearValue{};
2932 clearValue.depthStencil = { 0.0f, 0 };
2933
2937 RendererResourceCreateInfo Info;
2938 Info.name = attachmentName;
2939 Info.type = type;
2940 Info.description = depthAttachment;
2941 Info.width = m_Renderer->m_Device->GetSwapChainSupport().surfaceSize.width;
2942 Info.height = m_Renderer->m_Device->GetSwapChainSupport().surfaceSize.height;
2943 Info.isDepthResource = true;
2944
2945 const VkImageView& view = m_Renderer->m_RendererResourcePool->AccessResource(Info)->imageView;
2946
2950 uint32_t layers = 1;
2951 switch (type)
2952 {
2954 layers = m_Renderer->m_RendererResourcePool->AccessRowResource(Info.name)->GetLayers();
2955 break;
2957 layers = 6;
2958 break;
2959 default:
2960 break;
2961 }
2962
2963 const uint32_t index = m_Renderer->m_Pass->AddAttachment(attachmentName, depthAttachment, clearValue, layers, view);
2964
2968 VkAttachmentReference depthAttachmentRef{};
2969 depthAttachmentRef.attachment = index;
2970 depthAttachmentRef.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
2971
2972 m_HandledRendererSubPass->AddDepthAttachmentReference(depthAttachmentRef);
2973
2974 return *this;
2975 }
#define SPICES_PROFILE_ZONE
std::shared_ptr< RendererSubPass > m_HandledRendererSubPass
Handled Sub pass.
Definition Renderer.h:512
Renderer * m_Renderer
Specific Renderer pointer. Passed while this class instanced.
Definition Renderer.h:507
std::shared_ptr< RendererPass > m_Pass
RendererPass.
Definition Renderer.h:2012
std::shared_ptr< RendererResourcePool > m_RendererResourcePool
RendererResourcePool, Passed by instanced.
Definition Renderer.h:2007
std::shared_ptr< VulkanDevice > m_Device
VulkanDevice , Passed by instanced.
Definition Renderer.h:2002
VulkanState & m_VulkanState
This variable is passed while renderer instanced.
Definition Renderer.h:1992
static VkFormat FindDepthFormat(const VkPhysicalDevice &physicalDevice)
Check whether Depth Image's Format is supported by physical device.
VkPhysicalDevice m_PhysicalDevice
Definition VulkanUtils.h:95

References Spices::RendererResourceCreateInfo::height, Spices::RendererResourceCreateInfo::isDepthResource, m_Renderer, Spices::RendererResourceCreateInfo::name, Spices::Texture2DArray, Spices::Texture2DCube, Spices::RendererResourceCreateInfo::type, and Spices::RendererResourceCreateInfo::width.