summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_palette16.sc
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_palette16.sc')
-rw-r--r--src/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_palette16.sc11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_palette16.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_palette16.sc
index e87f8a76315..98f13186663 100644
--- a/src/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_palette16.sc
+++ b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_palette16.sc
@@ -15,7 +15,14 @@ uniform vec4 u_inv_tex_size1;
void main()
{
- vec4 srcpix = texture2D(s_tex, v_texcoord0.xy);
- vec2 palette_uv = (srcpix.bg * vec2(256.0, 256.0)) * u_inv_tex_size1.xy;
+ vec2 original_uv = v_texcoord0.xy * u_tex_size0.xy;
+ float mod_val = mod(original_uv.x, 2.0);
+ vec2 rounded_uv = vec2(original_uv.x - mod_val, original_uv.y);
+ vec4 srcpix = texture2D(s_tex, rounded_uv * u_inv_tex_size0.xy + vec2(u_inv_tex_size0.x, 0.0));
+
+ vec2 palette_uv = (srcpix.ra * vec2(256.0, 256.0)) * u_inv_tex_size1.xy;
+ if (mod_val < 1.0)
+ palette_uv = (srcpix.bg * vec2(256.0, 256.0)) * u_inv_tex_size1.xy;
+
gl_FragColor = vec4(texture2D(s_pal, palette_uv).rgb, 1.0) * v_color0;
}