mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2024-11-21 22:52:20 +00:00
Manually transpose matricies in shader
Since GLES2 doesn't do this for us, it seems, on all platforms.
This commit is contained in:
parent
b18209c904
commit
f252c5a792
@ -142,7 +142,7 @@ static bool wlr_gles2_render_surface(struct wlr_renderer_state *state,
|
||||
}
|
||||
gles2_flush_errors();
|
||||
wlr_surface_bind(surface);
|
||||
GL_CALL(glUniformMatrix4fv(0, 1, GL_TRUE, *matrix));
|
||||
GL_CALL(glUniformMatrix4fv(0, 1, GL_FALSE, *matrix));
|
||||
draw_quad();
|
||||
return true;
|
||||
}
|
||||
|
@ -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;"
|
||||
"}";
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user