SpiecsEngine
 
Loading...
Searching...
No Matches

◆ CreateSampler()

void Spices::VulkanImage::CreateSampler ( )

Create a Sampler.

Instance a VkSamplerCreateInfo.

Get VkPhysicalDeviceProperties.

Create Sampler.

Instance a VkSamplerCreateInfo.

Get VkPhysicalDeviceProperties.

Create Sampler.

Definition at line 758 of file VulkanImage.cpp.

759 {
761
765 VkSamplerCreateInfo samplerInfo{};
766 samplerInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
767 samplerInfo.magFilter = VK_FILTER_LINEAR;
768 samplerInfo.minFilter = VK_FILTER_LINEAR;
769 samplerInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
770 samplerInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
771 samplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
772 samplerInfo.anisotropyEnable = VK_TRUE;
773
777 VkPhysicalDeviceProperties properties{};
778 vkGetPhysicalDeviceProperties(m_VulkanState.m_PhysicalDevice, &properties);
779
780 samplerInfo.maxAnisotropy = properties.limits.maxSamplerAnisotropy;
781 samplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK;
782 samplerInfo.unnormalizedCoordinates = VK_FALSE;
783 samplerInfo.compareEnable = VK_FALSE;
784 samplerInfo.compareOp = VK_COMPARE_OP_ALWAYS;
785
786 samplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
787 samplerInfo.mipLodBias = 0.0f;
788 samplerInfo.minLod = 0;
789 samplerInfo.maxLod = static_cast<float>(m_MipLevels);
790
794 VK_CHECK(vkCreateSampler(m_VulkanState.m_Device, &samplerInfo, nullptr, &m_TextureSampler))
795 DEBUGUTILS_SETOBJECTNAME(VK_OBJECT_TYPE_SAMPLER, reinterpret_cast<uint64_t>(m_TextureSampler), m_VulkanState.m_Device, "ImageSampler")
796 }
#define SPICES_PROFILE_ZONE
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
Definition VulkanUtils.h:68
VkSampler m_TextureSampler
The image sampler.
uint32_t m_MipLevels
Image mipmaps num.
VulkanState & m_VulkanState
The global VulkanState Referenced from VulkanRenderBackend.
VkPhysicalDevice m_PhysicalDevice
Definition VulkanUtils.h:95