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 12b4e85600..b81a540561 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); - 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); + 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); 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 b06768fe31..6a457981d1 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); - 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); + 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); color.rgba = vec4(components) / (exp2(8.0) - 1.0); }