diff options
Diffstat (limited to 'cwd/shaders/face.vs')
-rw-r--r-- | cwd/shaders/face.vs | 10 |
1 files changed, 6 insertions, 4 deletions
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; } |