mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05: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();
 | 
			
		||||
	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…
	
	Add table
		Add a link
		
	
		Reference in a new issue