35 lines
678 B
GLSL
35 lines
678 B
GLSL
#version 100
|
|
|
|
attribute vec3 position;
|
|
attribute vec2 uv;
|
|
|
|
uniform mat3 model;
|
|
uniform mat4 projection;
|
|
|
|
uniform float icon_index;
|
|
|
|
varying vec2 f_uv;
|
|
varying vec2 f_icon_uv;
|
|
|
|
void
|
|
main ()
|
|
{
|
|
float tex_w = 40.0;
|
|
float tex_h = 80.0;
|
|
|
|
float icon_w = 20.0;
|
|
float icon_h = 20.0;
|
|
|
|
float icons_per_row = tex_w / icon_w;
|
|
|
|
float x = mod (icon_index, icons_per_row);
|
|
float y = floor (icon_index / icons_per_row);
|
|
|
|
vec2 icon_offset = vec2 (x * icon_w / tex_w, y * icon_h / tex_h);
|
|
vec2 icon_size = vec2 (icon_w / tex_w, icon_h / tex_h);
|
|
|
|
f_icon_uv = icon_offset + uv * icon_size;
|
|
f_uv = uv;
|
|
gl_Position = projection * vec4 (model * vec3 (position.xy, 1.0), 1.0);
|
|
}
|