mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-10-15 02:17:51 +00:00
renderer_opengl: Swizzle BGR textures on copy
OpenGL does not natively support BGR internal formats, which causes many BGR textures to render incorrectly, with Red and Blue channels swapped. This commit aims to address this by swizzling the blue and red channels on texture copies when a BGR format is encountered.
This commit is contained in:
parent
7e7de40f0c
commit
594860b216
5 changed files with 132 additions and 2 deletions
|
@ -5,6 +5,7 @@ set(SHADER_FILES
|
|||
convert_float_to_depth.frag
|
||||
full_screen_triangle.vert
|
||||
opengl_copy_bc4.comp
|
||||
opengl_copy_bgra.comp
|
||||
opengl_present.frag
|
||||
opengl_present.vert
|
||||
pitch_unswizzle.comp
|
||||
|
|
15
src/video_core/host_shaders/opengl_copy_bgra.comp
Normal file
15
src/video_core/host_shaders/opengl_copy_bgra.comp
Normal file
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2021 yuzu Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#version 430 core
|
||||
|
||||
layout (local_size_x = 4, local_size_y = 4) in;
|
||||
|
||||
layout(binding = 0, rgba8) readonly uniform image2DArray bgr_input;
|
||||
layout(binding = 1, rgba8) writeonly uniform image2DArray bgr_output;
|
||||
|
||||
void main() {
|
||||
vec4 color = imageLoad(bgr_input, ivec3(gl_GlobalInvocationID));
|
||||
imageStore(bgr_output, ivec3(gl_GlobalInvocationID), color.bgra);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue