diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-10-17 03:49:18 +0200 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-10-23 23:46:29 +0200 |
commit | ad8afaf1ef0c2f6c9ecb4e3670d4a3e4192ab0a9 (patch) | |
tree | e93207716a8e07773b4cf61b2d6fe288ec4edec2 | |
parent | Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan. (diff) | |
download | yuzu-ad8afaf1ef0c2f6c9ecb4e3670d4a3e4192ab0a9.tar yuzu-ad8afaf1ef0c2f6c9ecb4e3670d4a3e4192ab0a9.tar.gz yuzu-ad8afaf1ef0c2f6c9ecb4e3670d4a3e4192ab0a9.tar.bz2 yuzu-ad8afaf1ef0c2f6c9ecb4e3670d4a3e4192ab0a9.tar.lz yuzu-ad8afaf1ef0c2f6c9ecb4e3670d4a3e4192ab0a9.tar.xz yuzu-ad8afaf1ef0c2f6c9ecb4e3670d4a3e4192ab0a9.tar.zst yuzu-ad8afaf1ef0c2f6c9ecb4e3670d4a3e4192ab0a9.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 04ecc034d..30b47a7a0 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -633,10 +633,12 @@ void RasterizerVulkan::UpdateDepthBias(Tegra::Engines::Maxwell3D::Regs& regs) { regs.zeta.format == Tegra::DepthFormat::D24S8_UNORM || regs.zeta.format == Tegra::DepthFormat::D24C8_UNORM; if (is_d24 && !device.SupportsD24DepthBuffer()) { - const double f = static_cast<double>(1ULL << (32 - 24)) / (static_cast<double>(0x1.ep+127)); - units = static_cast<float>(static_cast<double>(units) * f); + // the base formulas can be obtained from here: + // https://docs.microsoft.com/en-us/windows/win32/direct3d11/d3d10-graphics-programming-guide-output-merger-stage-depth-bias + const double rescale_factor = + static_cast<double>(1ULL << (32 - 24)) / (static_cast<double>(0x1.ep+127)); + units = static_cast<float>(static_cast<double>(units) * rescale_factor); } - scheduler.Record([constant = units, clamp = regs.polygon_offset_clamp, factor = regs.polygon_offset_factor](vk::CommandBuffer cmdbuf) { cmdbuf.SetDepthBias(constant, clamp, factor); |