153 auto device =
m_backend->get_context().get_device();
154 auto physical_device =
m_backend->get_context().get_physical_device();
156 vk::SamplerCreateInfo sampler_info {};
165 auto properties = physical_device.getProperties();
166 sampler_info.anisotropyEnable = VK_TRUE;
167 sampler_info.maxAnisotropy = std::min(
169 properties.limits.maxSamplerAnisotropy);
171 sampler_info.anisotropyEnable = VK_FALSE;
172 sampler_info.maxAnisotropy = 1.0F;
175 sampler_info.borderColor = vk::BorderColor::eIntOpaqueBlack;
177 sampler_info.unnormalizedCoordinates = VK_FALSE;
179 sampler_info.compareEnable = VK_FALSE;
180 sampler_info.compareOp = vk::CompareOp::eAlways;
184 ? vk::SamplerMipmapMode::eLinear
185 : vk::SamplerMipmapMode::eNearest;
186 sampler_info.minLod = 0.0F;
187 sampler_info.maxLod = VK_LOD_CLAMP_NONE;
188 sampler_info.mipLodBias = 0.0F;
190 sampler_info.mipmapMode = vk::SamplerMipmapMode::eNearest;
191 sampler_info.minLod = 0.0F;
192 sampler_info.maxLod = 0.0F;
193 sampler_info.mipLodBias = 0.0F;
197 vk::Sampler sampler = device.createSampler(sampler_info);
199 "Created sampler: mag={}, min={}, aniso={}",
200 vk::to_string(sampler_info.magFilter),
201 vk::to_string(sampler_info.minFilter),
202 sampler_info.maxAnisotropy);
204 }
catch (
const vk::SystemError& e) {
206 "Failed to create sampler: {}", e.what());
214 hash ^= std::hash<int> {}(
static_cast<int>(config.
mag_filter)) << 0;
215 hash ^= std::hash<int> {}(
static_cast<int>(config.
min_filter)) << 4;
216 hash ^= std::hash<int> {}(
static_cast<int>(config.
address_mode_u)) << 8;
217 hash ^= std::hash<int> {}(
static_cast<int>(config.
address_mode_v)) << 12;
218 hash ^= std::hash<int> {}(
static_cast<int>(config.
address_mode_w)) << 16;