diff options
Diffstat (limited to 'cwd/shaders/face.vs')
-rw-r--r-- | cwd/shaders/face.vs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/cwd/shaders/face.vs b/cwd/shaders/face.vs index 2d3b4b5..dbb8dd8 100644 --- a/cwd/shaders/face.vs +++ b/cwd/shaders/face.vs @@ -17,13 +17,23 @@ out VS_OUT { //uniform mat4 projection; uniform mat4 projView; +vec2 TransformTextureCoord(vec4 TextureAtlasCoords, vec2 UvCoords) { + 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); +} + void main() { vec4 sourcePosition = vec4(position,1.0f); gl_Position = projView * model * sourcePosition; vs_out.UvPosition = vec2(UvCoordinates.x,UvCoordinates.y); - vs_out.Texture = Texture; + vs_out.Texture = TransformTextureCoord(Texture,UvCoordinates); vs_out.Color = color; vs_out.Light = light; } |