diff --git a/src/video_core/host_shaders/convert_d24s8_to_abgr8.frag b/src/video_core/host_shaders/convert_d24s8_to_abgr8.frag index b81a540561..12b4e85600 100644 --- a/src/video_core/host_shaders/convert_d24s8_to_abgr8.frag +++ b/src/video_core/host_shaders/convert_d24s8_to_abgr8.frag @@ -1,11 +1,11 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #version 450 -precision mediump int; -precision highp float; - layout(binding = 0) uniform sampler2D depth_tex; layout(binding = 1) uniform usampler2D stencil_tex; @@ -13,10 +13,10 @@ layout(location = 0) out vec4 color; void main() { ivec2 coord = ivec2(gl_FragCoord.xy); - highp uint depth_val = - uint(textureLod(depth_tex, coord, 0).r * (exp2(32.0) - 1.0)); - lowp uint stencil_val = textureLod(stencil_tex, coord, 0).r; - highp uvec4 components = - uvec4(stencil_val, (uvec3(depth_val) >> uvec3(24u, 16u, 8u)) & 0x000000FFu); + uint depth_val = + uint(roundEven(clamp(textureLod(depth_tex, coord, 0).r, 0.0, 1.0) * (exp2(24.0) - 1.0))); + uint stencil_val = textureLod(stencil_tex, coord, 0).r; + uvec4 components = + uvec4(stencil_val, (uvec3(depth_val) >> uvec3(16u, 8u, 0u)) & 0x000000FFu); color.abgr = vec4(components) / (exp2(8.0) - 1.0); } diff --git a/src/video_core/host_shaders/convert_s8d24_to_abgr8.frag b/src/video_core/host_shaders/convert_s8d24_to_abgr8.frag index 6a457981d1..b06768fe31 100644 --- a/src/video_core/host_shaders/convert_s8d24_to_abgr8.frag +++ b/src/video_core/host_shaders/convert_s8d24_to_abgr8.frag @@ -1,11 +1,11 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #version 450 -precision mediump int; -precision highp float; - layout(binding = 0) uniform sampler2D depth_tex; layout(binding = 1) uniform usampler2D stencil_tex; @@ -13,10 +13,10 @@ layout(location = 0) out vec4 color; void main() { ivec2 coord = ivec2(gl_FragCoord.xy); - highp uint depth_val = - uint(textureLod(depth_tex, coord, 0).r * (exp2(32.0) - 1.0)); - lowp uint stencil_val = textureLod(stencil_tex, coord, 0).r; - highp uvec4 components = - uvec4((uvec3(depth_val) >> uvec3(24u, 16u, 8u)) & 0x000000FFu, stencil_val); + uint depth_val = + uint(roundEven(clamp(textureLod(depth_tex, coord, 0).r, 0.0, 1.0) * (exp2(24.0) - 1.0))); + uint stencil_val = textureLod(stencil_tex, coord, 0).r; + uvec4 components = + uvec4((uvec3(depth_val) >> uvec3(16u, 8u, 0u)) & 0x000000FFu, stencil_val); color.rgba = vec4(components) / (exp2(8.0) - 1.0); }