aboutsummaryrefslogtreecommitdiff
path: root/render/gles2/shaders.c
diff options
context:
space:
mode:
Diffstat (limited to 'render/gles2/shaders.c')
-rw-r--r--render/gles2/shaders.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/render/gles2/shaders.c b/render/gles2/shaders.c
index 850c0618..62712230 100644
--- a/render/gles2/shaders.c
+++ b/render/gles2/shaders.c
@@ -9,8 +9,22 @@ const GLchar quad_vertex_src[] =
"attribute vec2 texcoord;"
"varying vec4 v_color;"
"varying vec2 v_texcoord;"
+"mat4 transpose(in mat4 inMatrix) {"
+" vec4 i0 = inMatrix[0];"
+" vec4 i1 = inMatrix[1];"
+" vec4 i2 = inMatrix[2];"
+" vec4 i3 = inMatrix[3];"
+" mat4 outMatrix = mat4("
+" vec4(i0.x, i1.x, i2.x, i3.x),"
+" vec4(i0.y, i1.y, i2.y, i3.y),"
+" vec4(i0.z, i1.z, i2.z, i3.z),"
+" vec4(i0.w, i1.w, i2.w, i3.w)"
+" );"
+""
+" return outMatrix;"
+"}"
"void main() {"
-" gl_Position = proj * vec4(pos, 0.0, 1.0);"
+" gl_Position = transpose(proj) * vec4(pos, 0.0, 1.0);"
" v_color = color;"
" v_texcoord = texcoord;"
"}";
@@ -41,8 +55,22 @@ const GLchar vertex_src[] =
"attribute vec2 pos;"
"attribute vec2 texcoord;"
"varying vec2 v_texcoord;"
+"mat4 transpose(in mat4 inMatrix) {"
+" vec4 i0 = inMatrix[0];"
+" vec4 i1 = inMatrix[1];"
+" vec4 i2 = inMatrix[2];"
+" vec4 i3 = inMatrix[3];"
+" mat4 outMatrix = mat4("
+" vec4(i0.x, i1.x, i2.x, i3.x),"
+" vec4(i0.y, i1.y, i2.y, i3.y),"
+" vec4(i0.z, i1.z, i2.z, i3.z),"
+" vec4(i0.w, i1.w, i2.w, i3.w)"
+" );"
+""
+" return outMatrix;"
+"}"
"void main() {"
-" gl_Position = proj * vec4(pos, 0.0, 1.0);"
+" gl_Position = transpose(proj) * vec4(pos, 0.0, 1.0);"
" v_texcoord = texcoord;"
"}";