SpiecsEngine
 
Loading...
Searching...
No Matches

◆ Texture2DArray() [2/3]

Spices::Texture2DArray::Texture2DArray ( const RendererResourceCreateInfo & info)

Constructor Function. Used for create render resource.

Parameters
[in]infoRendererResourceCreateInfo.

Definition at line 14 of file Texture2DArray.cpp.

15 {
16 m_ResourcePath = "NONE";
17
18 uint32_t w = std::max(1.0f, info.width * info.sizeScale);
19 uint32_t h = std::max(1.0f, info.height * info.sizeScale);
20
21 if (!info.isDepthResource)
22 {
23 m_Resource = std::make_shared<VulkanImage>(
25 info.name,
26 VK_IMAGE_TYPE_2D,
27 w,
28 h,
29 info.layer,
30 info.description.samples,
31 info.description.format,
32 VK_IMAGE_TILING_OPTIMAL,
33 info.usage |
34 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | // Can be used for ColorAttachment.
35 VK_IMAGE_USAGE_SAMPLED_BIT | // Can be used for ShaderRead.
36 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | // Can be used for InputAttachment.
37 VK_IMAGE_USAGE_TRANSFER_SRC_BIT | // Can be used for TransferSrc.
38 VK_IMAGE_USAGE_STORAGE_BIT, // Can be used for StorageTexture.
39 0,
40 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
41 info.mipLevel
42 );
43
44 auto resourceptr = GetResource<VulkanImage>();
45 resourceptr->CreateImageView(info.description.format, VK_IMAGE_VIEW_TYPE_2D_ARRAY, VK_IMAGE_ASPECT_COLOR_BIT);
46
47 if (info.usage & VK_IMAGE_USAGE_STORAGE_BIT)
48 {
49 resourceptr->TransitionImageLayout(
50 info.description.format,
51 VK_IMAGE_LAYOUT_UNDEFINED,
52 VK_IMAGE_LAYOUT_GENERAL
53 );
54 }
55
56 resourceptr->CreateSampler();
57 }
58 else
59 {
60 m_Resource = std::make_shared<VulkanImage>(
62 info.name,
63 VK_IMAGE_TYPE_2D,
64 w,
65 h,
66 2,
67 info.description.samples,
68 info.description.format,
69 VK_IMAGE_TILING_OPTIMAL,
70 info.usage |
71 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | // Can be used for DepthAttachment.
72 VK_IMAGE_USAGE_SAMPLED_BIT | // Can be used for ShaderRead.
73 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, // Can be used for InputAttachment.
74 0,
75 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
76 1
77 );
78
79 auto resourceptr = GetResource<VulkanImage>();
80 resourceptr->CreateImageView(info.description.format, VK_IMAGE_VIEW_TYPE_2D_ARRAY, VK_IMAGE_ASPECT_DEPTH_BIT);
81
82 resourceptr->TransitionImageLayout(
83 info.description.format,
84 VK_IMAGE_LAYOUT_UNDEFINED,
85 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
86 );
87
88 resourceptr->CreateSampler();
89 }
90 }
std::string m_ResourcePath
Texture's path in disk.
Definition Texture.h:74
std::any m_Resource
Texture's resource, coule be any kind of type.
Definition Texture.h:68
static VulkanState & GetState()
Get VulkanState in use.

References Spices::RendererResourceCreateInfo::height, Spices::RendererResourceCreateInfo::isDepthResource, Spices::Texture::m_ResourcePath, Spices::RendererResourceCreateInfo::sizeScale, and Spices::RendererResourceCreateInfo::width.