mirror of https://github.com/Minestom/Minestom.git
32 lines
870 B
GLSL
32 lines
870 B
GLSL
#version 330
|
|
|
|
in vec2 fragCoords;
|
|
out vec4 fragColor;
|
|
|
|
uniform sampler2D frame;
|
|
uniform sampler2D palette;
|
|
uniform float paletteSize;
|
|
|
|
void main() {
|
|
vec2 uv = fragCoords;
|
|
uv.y = -uv.y;
|
|
vec3 fragmentColor = texture(frame, uv).rgb;
|
|
|
|
// render in map colors
|
|
int closest = 0;
|
|
uint closestDistance = uint(2147483647);
|
|
for(int i = 4; i < paletteSize; i++) {
|
|
vec3 mapColor = texture(palette, vec2((i+0.5f)/paletteSize, 0.0)).rgb;
|
|
int dr = int((mapColor.r - fragmentColor.r)*255);
|
|
int dg = int((mapColor.g - fragmentColor.g)*255);
|
|
int db = int((mapColor.b - fragmentColor.b)*255);
|
|
|
|
uint d = uint(dr*dr)+uint(dg*dg)+uint(db*db);
|
|
if(d < closestDistance) {
|
|
closestDistance = d;
|
|
closest = i;
|
|
}
|
|
}
|
|
|
|
fragColor = vec4(closest/255.0, closest/255.0, closest/255.0, 1.0);
|
|
} |