diff options
Diffstat (limited to 'cwd')
-rw-r--r-- | cwd/shaders/face.fs | 4 | ||||
-rw-r--r-- | cwd/shaders/face.vs | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/cwd/shaders/face.fs b/cwd/shaders/face.fs index a4e020c..62a2d37 100644 --- a/cwd/shaders/face.fs +++ b/cwd/shaders/face.fs @@ -2,12 +2,12 @@ in VS_OUT { vec2 UvPosition; - vec2 Texture; + vec3 Texture; vec3 Color; vec2 Light; } fs_in; -uniform sampler2D textureAtlas; +uniform sampler2DArray textureAtlas; uniform vec2 windowSize; uniform float DayTime; diff --git a/cwd/shaders/face.vs b/cwd/shaders/face.vs index 5431ff2..9c40846 100644 --- a/cwd/shaders/face.vs +++ b/cwd/shaders/face.vs @@ -5,10 +5,11 @@ layout (location = 7) in vec4 Texture; layout (location = 8) in mat4 model; layout (location = 12) in vec3 color; layout (location = 13) in vec2 light; +layout (location = 14) in float TextureLayer; out VS_OUT { vec2 UvPosition; - vec2 Texture; + vec3 Texture; vec3 Color; vec2 Light; } vs_out; @@ -17,14 +18,15 @@ out VS_OUT { //uniform mat4 projection; uniform mat4 projView; -vec2 TransformTextureCoord(vec4 TextureAtlasCoords, vec2 UvCoords) { +vec3 TransformTextureCoord(vec4 TextureAtlasCoords, vec2 UvCoords, float Layer) { float x = TextureAtlasCoords.x; float y = TextureAtlasCoords.y; float w = TextureAtlasCoords.z; float h = TextureAtlasCoords.w; vec2 A = vec2(x, 1 - y - h); vec2 B = vec2(x + w, 1 - y); - return A + UvCoords * (B - A); + vec2 transformed = A + UvCoords * (B - A); + return vec3(transformed.x, transformed.y, Layer); } void main() @@ -33,7 +35,7 @@ void main() gl_Position = projView * model * sourcePosition; vs_out.UvPosition = vec2(UvCoordinates.x,UvCoordinates.y); - vs_out.Texture = TransformTextureCoord(Texture,UvCoordinates); + vs_out.Texture = TransformTextureCoord(Texture,UvCoordinates,TextureLayer); vs_out.Color = color; vs_out.Light = light; } |