SpiecsEngine
 
Loading...
Searching...
No Matches

◆ AddStorageTextureMipmaps()

Renderer::DescriptorSetBuilder & Spices::Renderer::DescriptorSetBuilder::AddStorageTextureMipmaps ( uint32_t set,
uint32_t binding,
VkShaderStageFlags stageFlags,
const std::string & textureName,
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM,
TextureType type = TextureType::Texture2D,
std::function< void(RendererResourceCreateInfo &)> func = nullptr )

Add the storage texture set binding with mipmap to descriptor set layout.

Parameters
[in]setWhich set this texture wil use.
[in]bindingWhich binding this texture wil use.
[in]stageFlagsWhich buffer stage this buffer will use.
[in]textureNameTexture's Name.
[in]formatTexture Format, used in init.
[in]typeTexture's type, used in init.
[in]funcFunction of define specific RendererResourceCreateInfo.
Returns
Returns this reference.

fill in imageInfos.

Registy descriptor and add binging to it.

fill in imageInfos.

Registy descriptor and add binging to it.

Definition at line 1701 of file Renderer.cpp.

1710 {
1712
1716 RendererResourceCreateInfo info;
1717 info.name = textureName;
1718 info.type = type;
1719 info.width = m_Renderer->m_Device->GetSwapChainSupport().surfaceSize.width;
1720 info.height = m_Renderer->m_Device->GetSwapChainSupport().surfaceSize.height;
1721 info.description.samples = VK_SAMPLE_COUNT_1_BIT;
1722 info.description.format = format;
1723 info.usage = VK_IMAGE_USAGE_STORAGE_BIT;
1724
1725 if (func)
1726 {
1727 func(info);
1728 }
1729
1730 for(int i = 0; i < info.mipLevel; i++)
1731 {
1732 VkDescriptorImageInfo* imageInfo = m_Renderer->m_RendererResourcePool->AccessResource(info, i);
1733 imageInfo->imageLayout = VK_IMAGE_LAYOUT_GENERAL;
1734
1735 m_ImageInfos[set][binding].push_back(*imageInfo);
1736 }
1737
1741 const auto descriptorSet = DescriptorSetManager::Registry(m_DescriptorSetId, set);
1742 descriptorSet->AddBinding(binding, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, stageFlags, static_cast<uint32_t>(info.mipLevel));
1743
1744 return *this;
1745 }
#define SPICES_PROFILE_ZONE
static std::shared_ptr< VulkanDescriptorSet > Registry(const String2 &name, uint32_t set)
Registry a VulkanDescriptorSet, create one if find none.
std::unordered_map< uint32_t, std::unordered_map< uint32_t, std::vector< VkDescriptorImageInfo > > > m_ImageInfos
DescriptorSet Image type binging info. [set] - [binding] - [info].
Definition Renderer.h:742
String2 m_DescriptorSetId
The Descriptor Set Manager ID descriptorSet belongs to.
Definition Renderer.h:730
Renderer * m_Renderer
Specific Renderer pointer. Passed while this class instanced.
Definition Renderer.h:720
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

References Spices::RendererResourceCreateInfo::height, m_DescriptorSetId, m_Renderer, Spices::RendererResourceCreateInfo::mipLevel, Spices::RendererResourceCreateInfo::name, Spices::RendererResourceCreateInfo::type, and Spices::RendererResourceCreateInfo::width.