ChocolateBird/shaders/hex2font.gdshader

21 lines
699 B
Plaintext

shader_type canvas_item;
uniform sampler2D glyph_atlas : hint_normal;
uniform vec2 tilemap_size = vec2(32.0, 20.0); // Update this to match the texture size
// tile_atlas hardcoded to 64x4 tiles for now
void fragment() {
// GLES2
vec2 xy = UV * tilemap_size; // Texel-space coord of our texture
float t = texture(TEXTURE, UV).r;
int tile_idx = int(t * 255.0); // Luminosity channel (any RGB channel works)
// Convert tile_idx to a texel coordinate, then to a UV coordinate
ivec2 tile_xy = ivec2(tile_idx%64, tile_idx/64);
vec2 tile_uv = vec2(tile_xy)/64.0;
// Get sub-tile UV
vec2 sub_tile_uv = fract(xy);
vec2 uv = tile_uv + (sub_tile_uv/64.0);
COLOR = texture(glyph_atlas, uv);
}