use texture array instead of atlas for tiles

This commit is contained in:
2016-10-06 18:20:08 -07:00
parent 931bc1b0a8
commit 0275d01b96
3 changed files with 15 additions and 12 deletions

View File

@@ -1,9 +1,11 @@
#version 150
#define MILLIS_PER_TILE 4000u
in vec2 v_uv;
flat in uint v_tileidx;
out vec4 pixcolor;
uniform sampler2D t_atlas;
uniform sampler2DArray t_tiles;
uniform b_constants {
uvec4 anim;
float R1;
@@ -19,8 +21,8 @@ uniform b_locals {
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, float((uint(v_uv.y * 1000.0) + millis / 4u) % 1000u) / 1000.0);
anim_uv = vec2(v_uv.x, v_uv.y + float(millis % MILLIS_PER_TILE) / MILLIS_PER_TILE);
}
vec2 uv = vec2(anim_uv.x, float(v_tileidx) / 256.0 + (1.0 - anim_uv.y) / 256.0);
pixcolor = texture(t_atlas, uv);
pixcolor = texture(t_tiles, vec3(anim_uv.x, 1.0 - anim_uv.y, v_tileidx));
}