mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-02 03:45:58 +01: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
2 changed files with 31 additions and 3 deletions
|
@ -142,7 +142,7 @@ static bool wlr_gles2_render_surface(struct wlr_renderer_state *state,
|
||||||
}
|
}
|
||||||
gles2_flush_errors();
|
gles2_flush_errors();
|
||||||
wlr_surface_bind(surface);
|
wlr_surface_bind(surface);
|
||||||
GL_CALL(glUniformMatrix4fv(0, 1, GL_TRUE, *matrix));
|
GL_CALL(glUniformMatrix4fv(0, 1, GL_FALSE, *matrix));
|
||||||
draw_quad();
|
draw_quad();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,22 @@ const GLchar quad_vertex_src[] =
|
||||||
"attribute vec2 texcoord;"
|
"attribute vec2 texcoord;"
|
||||||
"varying vec4 v_color;"
|
"varying vec4 v_color;"
|
||||||
"varying vec2 v_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() {"
|
"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_color = color;"
|
||||||
" v_texcoord = texcoord;"
|
" v_texcoord = texcoord;"
|
||||||
"}";
|
"}";
|
||||||
|
@ -41,8 +55,22 @@ const GLchar vertex_src[] =
|
||||||
"attribute vec2 pos;"
|
"attribute vec2 pos;"
|
||||||
"attribute vec2 texcoord;"
|
"attribute vec2 texcoord;"
|
||||||
"varying vec2 v_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() {"
|
"void main() {"
|
||||||
" gl_Position = proj * vec4(pos, 0.0, 1.0);"
|
" gl_Position = transpose(proj) * vec4(pos, 0.0, 1.0);"
|
||||||
" v_texcoord = texcoord;"
|
" v_texcoord = texcoord;"
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue