|
|
@ -23,7 +23,16 @@ static std::optional<vk::BorderColor> TryConvertBorderColor(std::array<float, 4> |
|
|
} else if (color == std::array<float, 4>{1, 1, 1, 1}) { |
|
|
} else if (color == std::array<float, 4>{1, 1, 1, 1}) { |
|
|
return vk::BorderColor::eFloatOpaqueWhite; |
|
|
return vk::BorderColor::eFloatOpaqueWhite; |
|
|
} else { |
|
|
} else { |
|
|
return {}; |
|
|
|
|
|
|
|
|
if (color[0] + color[1] + color[2] > 1.35f) { |
|
|
|
|
|
// If color elements are brighter than roughly 0.5 average, use white border
|
|
|
|
|
|
return vk::BorderColor::eFloatOpaqueWhite; |
|
|
|
|
|
} else { |
|
|
|
|
|
if (color[3] > 0.5f) { |
|
|
|
|
|
return vk::BorderColor::eFloatOpaqueBlack; |
|
|
|
|
|
} else { |
|
|
|
|
|
return vk::BorderColor::eFloatTransparentBlack; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -37,8 +46,6 @@ UniqueSampler VKSamplerCache::CreateSampler(const Tegra::Texture::TSCEntry& tsc) |
|
|
|
|
|
|
|
|
const auto border_color{tsc.GetBorderColor()}; |
|
|
const auto border_color{tsc.GetBorderColor()}; |
|
|
const auto vk_border_color{TryConvertBorderColor(border_color)}; |
|
|
const auto vk_border_color{TryConvertBorderColor(border_color)}; |
|
|
UNIMPLEMENTED_IF_MSG(!vk_border_color, "Unimplemented border color {} {} {} {}", |
|
|
|
|
|
border_color[0], border_color[1], border_color[2], border_color[3]); |
|
|
|
|
|
|
|
|
|
|
|
constexpr bool unnormalized_coords{false}; |
|
|
constexpr bool unnormalized_coords{false}; |
|
|
|
|
|
|
|
|
|