Files
vrtue/src/scenes/shader/tile_frag.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));
}