Pixel-Composer/shaders/sh_palette_shift/sh_palette_shift.fsh

34 lines
644 B
Plaintext
Raw Normal View History

2023-07-18 17:51:40 +02:00
//
// Simple passthrough fragment shader
//
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
2024-09-10 05:40:05 +02:00
#ifdef _YY_HLSL11_
#define PALETTE_LIMIT 1024
#else
#define PALETTE_LIMIT 256
#endif
2024-08-25 10:18:22 +02:00
uniform vec4 palette[PALETTE_LIMIT];
2023-07-18 17:51:40 +02:00
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)];
}