TextureCache: Add B10G11R11 to D24S8 converter.
This commit is contained in:
parent
6f896d1fae
commit
1d5e6a51d7
5 changed files with 84 additions and 13 deletions
|
@ -11,6 +11,7 @@ set(SHADER_FILES
|
|||
block_linear_unswizzle_2d.comp
|
||||
block_linear_unswizzle_3d.comp
|
||||
convert_abgr8_to_d24s8.frag
|
||||
convert_b10g11r11_to_d24s8.frag
|
||||
convert_d24s8_to_abgr8.frag
|
||||
convert_d24s8_to_b10g11r11.frag
|
||||
convert_d24s8_to_r16g16.frag
|
||||
|
|
19
src/video_core/host_shaders/convert_b10g11r11_to_d24s8.frag
Normal file
19
src/video_core/host_shaders/convert_b10g11r11_to_d24s8.frag
Normal file
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2021 yuzu Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#version 450
|
||||
// #extension GL_ARB_shader_stencil_export : require
|
||||
|
||||
layout(binding = 0) uniform sampler2D color_texture;
|
||||
|
||||
void main() {
|
||||
ivec2 coord = ivec2(gl_FragCoord.xy);
|
||||
vec4 color = texelFetch(color_texture, coord, 0).rgba;
|
||||
uint depth_stencil_unorm = (uint(color.b * (exp2(10) - 1.0f)) << 22)
|
||||
| (uint(color.g * (exp2(11) - 1.0f)) << 11)
|
||||
| (uint(color.r * (exp2(11) - 1.0f)));
|
||||
|
||||
gl_FragDepth = float(depth_stencil_unorm >> 8) / (exp2(24.0) - 1.0f);
|
||||
// gl_FragStencilRefARB = int(depth_stencil_unorm & 0x00FF);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue