diff --git a/gldefs.txt b/gldefs.txt index 65ac1f2..865cef0 100644 --- a/gldefs.txt +++ b/gldefs.txt @@ -174,6 +174,7 @@ HardwareShader postprocess scene { Name "mfx_palette" Shader "shaders/glsl/mfx_palette.fp" 330 + Texture DitherTexture "textures/mfxdither.png" Texture PalLUTTexture "textures/mfxpal.png" Uniform vec2 sfact Uniform float palsat diff --git a/shaders/glsl/mfx_palette.fp b/shaders/glsl/mfx_palette.fp index 4b5daaf..046aafb 100644 --- a/shaders/glsl/mfx_palette.fp +++ b/shaders/glsl/mfx_palette.fp @@ -1,51 +1,33 @@ /* RetroFX palette reduction from MariENB - (C)2012-2021 Marisa Kirisame + (C)2012-2022 Marisa Kirisame */ vec3 rgb2hsv( vec3 c ) { - vec4 K = vec4(0.0,-1.0/3.0,2.0/3.0,-1.0); + vec4 K = vec4(0.,-1./3.,2./3.,-1.); vec4 p = (c.g= 1.0 ) res.r += paldither; - if ( res.g >= 1.0 ) res.g += paldither; - if ( res.b >= 1.0 ) res.b += paldither; - res.rgb += paldither*dither8[int(coord.x*sfact.x)%8+int(coord.y*sfact.y)%8*8]-0.5*paldither; + ivec2 dcoord = ivec2(int(coord.x*sfact.x)%8,int(coord.y*sfact.y)%8); + res.rgb += paldither*texelFetch(DitherTexture,dcoord,0).x-.5*paldither; vec3 lc = clamp(floor(res.rgb*64),0,63); ivec2 lcoord = ivec2(lc.r,lc.g+lc.b*64); lcoord.x += 64*palnum; diff --git a/textures/mfxdither.png b/textures/mfxdither.png new file mode 100644 index 0000000..6b32e3e Binary files /dev/null and b/textures/mfxdither.png differ diff --git a/zscript/mfx_menu.zsc b/zscript/mfx_menu.zsc index e80e3cd..69c1263 100644 --- a/zscript/mfx_menu.zsc +++ b/zscript/mfx_menu.zsc @@ -159,11 +159,22 @@ Class OptionMenuItemMFXSlider : OptionMenuItemSlider // passes shift/alt presses to MFXSliders Class MFXOptionMenu : OptionMenu { + private void UpdatePresetNames() + { + for ( int i=0; i