SpiecsEngine
 
Loading...
Searching...
No Matches

◆ Texture2DCube() [2/3]

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

Constructor Function. Used for create render resource.

Parameters
[in]infoRendererResourceCreateInfo.

Definition at line 15 of file Texture2DCube.cpp.

16 {
17 m_ResourcePath = "NONE";
18
19 uint32_t w = std::max(1.0f, glm::max(info.width, 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 w,
29 6,
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_CREATE_CUBE_COMPATIBLE_BIT,
39 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
40 1
41 );
42
43 auto resourceptr = GetResource<VulkanImage>();
44 resourceptr->CreateImageView(info.description.format, VK_IMAGE_VIEW_TYPE_CUBE, VK_IMAGE_ASPECT_COLOR_BIT);
45
46 if (info.usage & VK_IMAGE_USAGE_STORAGE_BIT)
47 {
48 resourceptr->TransitionImageLayout(
49 info.description.format,
50 VK_IMAGE_LAYOUT_UNDEFINED,
51 VK_IMAGE_LAYOUT_GENERAL
52 );
53 }
54
55 resourceptr->CreateSampler();
56 }
57 else
58 {
59 m_Resource = std::make_shared<VulkanImage>(
61 info.name,
62 VK_IMAGE_TYPE_2D,
63 w,
64 w,
65 6,
66 info.description.samples,
67 info.description.format,
68 VK_IMAGE_TILING_OPTIMAL,
69 info.usage |
70 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | // Can be used for DepthAttachment.
71 VK_IMAGE_USAGE_SAMPLED_BIT | // Can be used for ShaderRead.
72 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, // Can be used for InputAttachment.
73 VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
74 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
75 1
76 );
77
78 auto resourceptr = GetResource<VulkanImage>();
79 resourceptr->CreateImageView(info.description.format, VK_IMAGE_VIEW_TYPE_CUBE, VK_IMAGE_ASPECT_DEPTH_BIT);
80
81 resourceptr->TransitionImageLayout(
82 info.description.format,
83 VK_IMAGE_LAYOUT_UNDEFINED,
84 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
85 );
86
87 resourceptr->CreateSampler();
88 }
89 }
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::isDepthResource, and Spices::Texture::m_ResourcePath.