Files
vrtue/src/scenes/shader/tile_frag.glsl

33 lines
679 B
GLSL

#version 150
#define MILLIS_PER_TILE 3000u
in vec2 v_uv;
flat in uint v_tileidx;
in float v_fade;
out vec4 pixcolor;
uniform sampler2DArray t_tiles;
uniform b_constants {
uvec4 anim;
float R1;
float R2;
float R3;
float haze;
vec4 hazecolor;
};
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);
}
vec4 texcolor = texture(t_tiles, vec3(anim_uv.x, 1.0 - anim_uv.y, v_tileidx));
pixcolor = mix(texcolor, hazecolor, v_fade);
}