SpiecsEngine
 
Loading...
Searching...
No Matches

◆ Texture2D() [2/3]

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

Constructor Function. Used for create render resource.

Parameters
[in]infoRendererResourceCreateInfo.

Definition at line 15 of file Texture2D.cpp.

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