29 lines
578 B
GLSL
29 lines
578 B
GLSL
#version 150
|
|
|
|
#define MILLIS_PER_TILE 4000u
|
|
|
|
in vec2 v_uv;
|
|
flat in uint v_tileidx;
|
|
out vec4 pixcolor;
|
|
uniform sampler2DArray t_tiles;
|
|
uniform b_constants {
|
|
uvec4 anim;
|
|
float R1;
|
|
float R2;
|
|
float R3;
|
|
};
|
|
uniform b_locals {
|
|
uint millis;
|
|
float treadmill_x;
|
|
float treadmill_y;
|
|
};
|
|
|
|
void main() {
|
|
vec2 anim_uv = v_uv;
|
|
if (v_tileidx < 128u && bool(anim[v_tileidx / 32u] & 1u << v_tileidx % 32u)) {
|
|
anim_uv = vec2(v_uv.x, v_uv.y + float(millis % MILLIS_PER_TILE) / MILLIS_PER_TILE);
|
|
}
|
|
|
|
pixcolor = texture(t_tiles, vec3(anim_uv.x, 1.0 - anim_uv.y, v_tileidx));
|
|
}
|