Fix samplers with MinFilter Linear or Nearest (fixes New Super Mario Bros U Deluxe black borders)

This commit is contained in:
gdk 2021-12-10 21:29:10 -03:00 committed by riperiperi
parent 5738b66b75
commit adfba37a3f

View file

@ -16,6 +16,15 @@ namespace Ryujinx.Graphics.Vulkan
(Filter minFilter, SamplerMipmapMode mipFilter) = EnumConversion.Convert(info.MinFilter); (Filter minFilter, SamplerMipmapMode mipFilter) = EnumConversion.Convert(info.MinFilter);
float minLod = info.MinLod;
float maxLod = info.MaxLod;
if (info.MinFilter == MinFilter.Nearest || info.MinFilter == MinFilter.Linear)
{
minLod = 0;
maxLod = 0.25f;
}
var borderColor = GetConstrainedBorderColor(info.BorderColor, out var cantConstrain); var borderColor = GetConstrainedBorderColor(info.BorderColor, out var cantConstrain);
var samplerCreateInfo = new Silk.NET.Vulkan.SamplerCreateInfo() var samplerCreateInfo = new Silk.NET.Vulkan.SamplerCreateInfo()
@ -32,8 +41,8 @@ namespace Ryujinx.Graphics.Vulkan
MaxAnisotropy = info.MaxAnisotropy, MaxAnisotropy = info.MaxAnisotropy,
CompareEnable = info.CompareMode == CompareMode.CompareRToTexture, CompareEnable = info.CompareMode == CompareMode.CompareRToTexture,
CompareOp = info.CompareOp.Convert(), CompareOp = info.CompareOp.Convert(),
MinLod = info.MinLod, MinLod = minLod,
MaxLod = info.MaxLod, MaxLod = maxLod,
BorderColor = borderColor, BorderColor = borderColor,
UnnormalizedCoordinates = false // TODO: Use unnormalized coordinates. UnnormalizedCoordinates = false // TODO: Use unnormalized coordinates.
}; };