shader_type canvas_item; //uniform usampler2D tex; uniform sampler2D palette; const float index_scale = 255.0 / 16.0; void fragment() { // GLES3 /*uint color_idx = uint(textureLod(TEXTURE, UV, 0.0).r * 255.0); COLOR = texelFetch(palette, ivec2(int(color_idx), 0), 0); if (color_idx == uint(0)) COLOR.a = 0.0;*/ // GLES2 float color_idx16 = texture(TEXTURE, UV).r * index_scale; float row = trunc(color_idx16) / 16.0; float col = fract(color_idx16); COLOR = texture(palette, vec2(col, row)); COLOR.a = step(0.000001, color_idx16); // Branchless transparency }