Pixel-Composer/shaders/sh_palette_shift/sh_palette_shift.fsh
2024-08-25 15:18:22 +07:00

30 lines
580 B
GLSL

//
// Simple passthrough fragment shader
//
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
#define PALETTE_LIMIT 1024
uniform vec4 palette[PALETTE_LIMIT];
uniform float paletteAmount;
uniform float shift;
void main() {
vec4 c = texture2D( gm_BaseTexture, v_vTexcoord );
float minDist = 999.;
float index = 0.;
for(float i = 0.; i < paletteAmount; i++) {
float _dist = distance(c.rgb, palette[int(i)].rgb);
if(_dist < minDist) {
minDist = _dist;
index = i;
}
}
index = mod(index + shift, paletteAmount);
gl_FragColor = palette[int(index)];
}