diff --git a/src/graphics/host_gpu/renderer/cache/samplerCache.cpp b/src/graphics/host_gpu/renderer/cache/samplerCache.cpp index 259ec463e..ca39ea72f 100644 --- a/src/graphics/host_gpu/renderer/cache/samplerCache.cpp +++ b/src/graphics/host_gpu/renderer/cache/samplerCache.cpp @@ -123,8 +123,11 @@ vk::Sampler SamplerCache::GetSampler(const ShaderSamplerResource& r, bool intege sampler_info.addressModeU = to_vk_address_mode(r.ClampX()); sampler_info.addressModeV = to_vk_address_mode(r.ClampY()); sampler_info.addressModeW = to_vk_address_mode(r.ClampZ()); - sampler_info.mipLodBias = - static_cast(static_cast((r.LodBias() ^ 0x2000u) - 0x2000u)) / 256.0f; + const auto max_lod_bias = m_graphics.GetPhysicalDeviceProperties().limits.maxSamplerLodBias; + sampler_info.mipLodBias = std::clamp( + static_cast(static_cast((r.LodBias() ^ 0x2000u) - 0x2000u)) / 256.0f, + -max_lod_bias, max_lod_bias + ); sampler_info.anisotropyEnable = (aniso ? VK_TRUE : VK_FALSE); sampler_info.maxAnisotropy = aniso_ratio; sampler_info.compareEnable = (r.DepthCompareFunc() != 0 ? VK_TRUE : VK_FALSE);