diff options
author | Bojidar Marinov <bojidar.marinov.bg@gmail.com> | 2017-08-18 13:57:03 +0300 |
---|---|---|
committer | Bojidar Marinov <bojidar.marinov.bg@gmail.com> | 2017-08-29 14:51:35 +0300 |
commit | 92a42668f2318c737128d228c32b4b5fd6208fc1 (patch) | |
tree | 4331bc7867f67b33dc3748a058c0f38c8c37162d /drivers/gles3/shaders | |
parent | e2c1792d06ab751a033a1e83802875dd4a2f95de (diff) |
Implement texture UV transpose in the gles3 renderer
Now tilemap rotations work again \o/
Diffstat (limited to 'drivers/gles3/shaders')
-rw-r--r-- | drivers/gles3/shaders/canvas.glsl | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gles3/shaders/canvas.glsl b/drivers/gles3/shaders/canvas.glsl index f0dc14c35a..79e17eb14c 100644 --- a/drivers/gles3/shaders/canvas.glsl +++ b/drivers/gles3/shaders/canvas.glsl @@ -116,9 +116,12 @@ void main() { #ifdef USE_TEXTURE_RECT - - uv_interp = src_rect.xy + abs(src_rect.zw) * vertex; - highp vec4 outvec = vec4(dst_rect.xy + dst_rect.zw * mix(vertex,vec2(1.0,1.0)-vertex,lessThan(src_rect.zw,vec2(0.0,0.0))),0.0,1.0); + if (dst_rect.z < 0) { // Transpose is encoded as negative dst_rect.z + uv_interp = src_rect.xy + abs(src_rect.zw) * vertex.yx; + } else { + uv_interp = src_rect.xy + abs(src_rect.zw) * vertex; + } + highp vec4 outvec = vec4(dst_rect.xy + abs(dst_rect.zw) * mix(vertex,vec2(1.0,1.0)-vertex,lessThan(src_rect.zw,vec2(0.0,0.0))),0.0,1.0); #else uv_interp = uv_attrib; |