shithub: cstory

Download patch

ref: 87da82a500834b9458257ed608f91fb3d392a1cb
parent: 663870ae7659b819412c8b82a6020821522896ca
author: Clownacy <Clownacy@users.noreply.github.com>
date: Wed Sep 23 15:55:45 EDT 2020

Wii U: Offload vertex transformation to GPU

--- a/src/Backends/Rendering/WiiU.cpp
+++ b/src/Backends/Rendering/WiiU.cpp
@@ -313,14 +313,14 @@
 	VertexBufferSlot *vertex_buffer_slot = (VertexBufferSlot*)GX2RLockBufferEx(&vertex_buffer, (GX2RResourceFlags)0);
 
 	// Set buffer to (4:3) full-screen
-	vertex_buffer_slot->vertices[0].position.x = -12.0f / 16.0f;
-	vertex_buffer_slot->vertices[0].position.y = -1.0f;
-	vertex_buffer_slot->vertices[1].position.x =  12.0f / 16.0f;
-	vertex_buffer_slot->vertices[1].position.y = -1.0f;
-	vertex_buffer_slot->vertices[2].position.x =  12.0f / 16.0f;
-	vertex_buffer_slot->vertices[2].position.y =  1.0f;
-	vertex_buffer_slot->vertices[3].position.x = -12.0f / 16.0f;
-	vertex_buffer_slot->vertices[3].position.y =  1.0f;
+	vertex_buffer_slot->vertices[0].position.x = -12.0f / 16.0f + 1.0f;
+	vertex_buffer_slot->vertices[0].position.y = -2.0f;
+	vertex_buffer_slot->vertices[1].position.x = 12.0f / 16.0f + 1.0f;
+	vertex_buffer_slot->vertices[1].position.y = -2.0f;
+	vertex_buffer_slot->vertices[2].position.x = 12.0f / 16.0f + 1.0f;
+	vertex_buffer_slot->vertices[2].position.y = 0.0f;
+	vertex_buffer_slot->vertices[3].position.x = -12.0f / 16.0f + 1.0f;
+	vertex_buffer_slot->vertices[3].position.y = 0.0f;
 
 	// Set buffer to full-texture
 	vertex_buffer_slot->vertices[0].texture.x = 0.0f;
@@ -337,7 +337,7 @@
 	// Disable blending
 	GX2SetColorControl(GX2_LOGIC_OP_COPY, 0, FALSE, TRUE);
 
-	const float texture_coordinate_transform[2] = {1.0f, 1.0f};
+	const float plain_vec4[4] = {1.0f, 1.0f, 1.0f, 1.0f};
 
 	// Start drawing
 	WHBGfxBeginRender();
@@ -358,7 +358,8 @@
 	GX2SetPixelShader(shader_group_texture.pixelShader);
 
 	// Set shader uniforms
-	GX2SetVertexUniformReg(shader_group_texture.vertexShader->uniformVars[0].offset, 2, (uint32_t*)&texture_coordinate_transform);
+	GX2SetVertexUniformReg(shader_group_texture.vertexShader->uniformVars[0].offset, 4, (uint32_t*)plain_vec4);
+	GX2SetVertexUniformReg(shader_group_texture.vertexShader->uniformVars[1].offset, 4, (uint32_t*)plain_vec4);
 
 	// Bind a few things
 	GX2SetPixelSampler(&sampler, shader_group_texture.pixelShader->samplerVars[0].location);
@@ -387,7 +388,8 @@
 	GX2SetPixelShader(shader_group_texture.pixelShader);
 
 	// Set shader uniforms
-	GX2SetVertexUniformReg(shader_group_texture.vertexShader->uniformVars[0].offset, 2, (uint32_t*)&texture_coordinate_transform);
+	GX2SetVertexUniformReg(shader_group_texture.vertexShader->uniformVars[0].offset, 4, (uint32_t*)plain_vec4);
+	GX2SetVertexUniformReg(shader_group_texture.vertexShader->uniformVars[1].offset, 4, (uint32_t*)plain_vec4);
 
 	// Bind a few things
 	GX2SetPixelSampler(&sampler, shader_group_texture.pixelShader->samplerVars[0].location);
@@ -560,8 +562,10 @@
 		GX2SetPixelShader(shader->pixelShader);
 
 		// Set shader uniforms (for some reason this vec2 needs padding to a vec4)
+		const float vertex_coordinate_transform[4] = {2.0f / destination_surface->texture.surface.width, -2.0f / destination_surface->texture.surface.height, 1.0f, 1.0f};
 		const float texture_coordinate_transform[4] = {1.0f / source_surface->texture.surface.width, 1.0f / source_surface->texture.surface.height, 1.0f, 1.0f};
-		GX2SetVertexUniformReg(shader_group_glyph.vertexShader->uniformVars[0].offset, 4, (uint32_t*)texture_coordinate_transform);
+		GX2SetVertexUniformReg(shader_group_glyph.vertexShader->uniformVars[0].offset, 4, (uint32_t*)vertex_coordinate_transform);
+		GX2SetVertexUniformReg(shader_group_glyph.vertexShader->uniformVars[1].offset, 4, (uint32_t*)texture_coordinate_transform);
 
 		// Bind misc. data
 		GX2SetPixelSampler(&sampler, shader->pixelShader->samplerVars[0].location);
@@ -578,10 +582,10 @@
 	if (vertex_buffer_slot != NULL)
 	{
 		// Set vertex position buffer
-		const float vertex_left = x * 2.0f / destination_surface->texture.surface.width - 1.0f;
-		const float vertex_top = y * -2.0f / destination_surface->texture.surface.height + 1.0f;
-		const float vertex_right = (x + (rect->right - rect->left)) * 2.0f / destination_surface->texture.surface.width - 1.0f;
-		const float vertex_bottom = (y + (rect->bottom - rect->top)) * -2.0f / destination_surface->texture.surface.height + 1.0f;
+		const float vertex_left = x;
+		const float vertex_top = y;
+		const float vertex_right = x + (rect->right - rect->left);
+		const float vertex_bottom = y + (rect->bottom - rect->top);
 
 		vertex_buffer_slot->vertices[0].position.x = vertex_left;
 		vertex_buffer_slot->vertices[0].position.y = vertex_top;
@@ -641,6 +645,10 @@
 		GX2SetVertexShader(shader_group_colour_fill.vertexShader);
 		GX2SetPixelShader(shader_group_colour_fill.pixelShader);
 
+		// Set shader uniforms (for some reason this vec2 needs padding to a vec4)
+		const float vertex_coordinate_transform[4] = {2.0f / surface->texture.surface.width, -2.0f / surface->texture.surface.height, 1.0f, 1.0f};
+		GX2SetVertexUniformReg(shader_group_colour_fill.vertexShader->uniformVars[0].offset, 4, (uint32_t*)vertex_coordinate_transform);
+
 		// Bind misc. data
 		GX2RSetAttributeBuffer(&vertex_buffer, 0, sizeof(Vertex), offsetof(Vertex, position));
 
@@ -653,10 +661,10 @@
 	if (vertex_buffer_slot != NULL)
 	{
 		// Set vertex position buffer
-		const float vertex_left = rect->left * 2.0f / surface->texture.surface.width - 1.0f;
-		const float vertex_top = rect->top * -2.0f / surface->texture.surface.height + 1.0f;
-		const float vertex_right = rect->right * 2.0f / surface->texture.surface.width - 1.0f;
-		const float vertex_bottom = rect->bottom * -2.0f / surface->texture.surface.height + 1.0f;
+		const float vertex_left = rect->left;
+		const float vertex_top = rect->top;
+		const float vertex_right = rect->right;
+		const float vertex_bottom = rect->bottom;
 
 		vertex_buffer_slot->vertices[0].position.x = vertex_left;
 		vertex_buffer_slot->vertices[0].position.y = vertex_top;
@@ -767,8 +775,10 @@
 		GX2SetPixelShader(shader_group_glyph.pixelShader);
 
 		// Set shader uniforms (for some reason this vec2 needs padding to a vec4)
+		const float vertex_coordinate_transform[4] = {2.0f / glyph_destination_surface->texture.surface.width, -2.0f / glyph_destination_surface->texture.surface.height, 1.0f, 1.0f};
 		const float texture_coordinate_transform[4] = {1.0f / atlas->texture.surface.width, 1.0f / atlas->texture.surface.height, 1.0f, 1.0f};
-		GX2SetVertexUniformReg(shader_group_glyph.vertexShader->uniformVars[0].offset, 4, (uint32_t*)texture_coordinate_transform);
+		GX2SetVertexUniformReg(shader_group_glyph.vertexShader->uniformVars[0].offset, 4, (uint32_t*)vertex_coordinate_transform);
+		GX2SetVertexUniformReg(shader_group_glyph.vertexShader->uniformVars[1].offset, 4, (uint32_t*)texture_coordinate_transform);
 
 		// Bind misc. data
 		GX2SetPixelSampler(&sampler, shader_group_glyph.pixelShader->samplerVars[0].location);
@@ -788,10 +798,10 @@
 	if (vertex_buffer_slot != NULL)
 	{
 		// Set vertex position buffer
-		const float vertex_left = x * 2.0f / glyph_destination_surface->texture.surface.width - 1.0f;
-		const float vertex_top = y * -2.0f / glyph_destination_surface->texture.surface.height + 1.0f;
-		const float vertex_right = (x + glyph_width) * 2.0f / glyph_destination_surface->texture.surface.width - 1.0f;
-		const float vertex_bottom = (y + glyph_height) * -2.0f / glyph_destination_surface->texture.surface.height + 1.0f;
+		const float vertex_left = x;
+		const float vertex_top = y;
+		const float vertex_right = x + glyph_width;
+		const float vertex_bottom = y + glyph_height;
 
 		vertex_buffer_slot->vertices[0].position.x = vertex_left;
 		vertex_buffer_slot->vertices[0].position.y = vertex_top;
--- a/src/Backends/Rendering/WiiUShaders/colour_fill.gsh.h
+++ b/src/Backends/Rendering/WiiUShaders/colour_fill.gsh.h
@@ -1,23 +1,25 @@
-71,102,120,50,0,0,0,32,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,3,0,0,1,144,0,0,0,0,0,0,0,0,
+71,102,120,50,0,0,0,32,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,3,0,0,1,192,0,0,0,0,0,0,0,0,
 0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,255,255,255,254,
 0,0,0,1,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,
 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,
-0,0,0,255,0,0,0,0,0,0,0,14,0,0,0,16,0,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,1,208,96,1,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,68,0,0,0,9,0,0,0,0,
-0,0,0,0,105,110,112,117,116,95,118,101,114,116,101,120,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,0,208,96,1,8,202,112,1,52,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,96,208,96,0,0,0,0,0,28,
-208,96,1,68,0,0,0,0,0,0,0,2,208,96,1,96,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,5,0,0,1,8,0,0,0,1,0,0,0,0,0,0,0,0,0,0,128,9,60,160,0,0,136,6,0,148,
-0,64,0,0,255,15,0,148,32,0,0,0,0,0,0,160,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,255,0,0,0,0,0,0,0,14,0,0,0,16,0,0,1,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,1,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,1,208,96,1,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,88,0,0,0,9,0,0,0,1,
+0,0,0,0,255,255,255,255,202,112,1,108,0,0,0,9,0,0,0,0,0,0,0,0,118,101,114,116,101,120,95,116,114,97,110,115,102,111,114,109,0,0,0,0,105,110,112,117,116,95,118,101,114,116,101,120,95,99,111,111,114,100,105,110,
+97,116,101,115,0,0,0,0,208,96,0,232,208,96,1,8,202,112,1,52,202,112,1,72,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,136,208,96,0,0,0,0,0,48,208,96,1,88,0,0,0,0,0,0,0,4,208,96,1,136,
+66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,5,0,0,1,64,0,0,0,1,0,0,0,0,0,0,0,0,0,0,128,9,32,0,0,0,0,0,24,160,60,160,0,0,136,6,0,148,0,64,0,0,255,15,0,148,
+39,0,0,0,0,0,0,160,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,13,0,0,66,76,75,123,0,0,0,32,
-0,0,0,1,0,0,0,0,0,0,0,6,0,0,1,52,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,2,20,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,160,0,128,0,0,0,1,0,32,0,128,0,0,32,1,8,0,0,144,12,32,64,1,12,0,128,144,12,32,96,
+254,164,31,2,16,0,32,0,254,160,159,128,16,0,32,32,0,0,128,63,0,0,128,63,0,0,0,128,0,13,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,6,0,0,1,52,0,0,0,2,0,0,0,0,
+0,0,0,1,0,0,0,2,20,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,0,0,0,1,32,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-202,112,0,252,0,0,0,11,0,0,0,1,0,0,0,0,255,255,255,255,99,111,108,111,117,114,0,0,208,96,0,188,202,112,0,232,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,4,208,96,0,0,0,0,0,8,208,96,0,252,
-0,0,0,0,0,0,0,2,208,96,1,4,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,7,0,0,1,32,0,0,0,3,0,0,0,0,32,0,0,0,0,0,12,160,0,0,0,0,136,6,32,148,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,232,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,0,252,0,0,0,11,0,0,0,1,0,0,0,0,255,255,255,255,99,111,108,111,
+117,114,0,0,208,96,0,188,202,112,0,232,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,4,208,96,0,0,0,0,0,8,208,96,0,252,0,0,0,0,0,0,0,2,208,96,1,4,66,76,75,123,0,0,0,32,0,0,0,1,
+0,0,0,0,0,0,0,7,0,0,1,32,0,0,0,3,0,0,0,0,32,0,0,0,0,0,12,160,0,0,0,0,136,6,32,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,144,12,0,0,0,5,0,0,144,12,0,32,0,9,0,0,
-144,12,0,64,0,13,0,128,144,12,0,96,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,0,0,0,0
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,144,12,0,0,0,5,0,0,144,12,0,32,0,9,0,0,144,12,0,64,0,13,0,128,144,12,0,96,66,76,75,123,0,0,0,32,0,0,0,1,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,0,0,0,0
--- a/src/Backends/Rendering/WiiUShaders/glyph.gsh.h
+++ b/src/Backends/Rendering/WiiUShaders/glyph.gsh.h
@@ -1,27 +1,29 @@
-71,102,120,50,0,0,0,32,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,3,0,0,1,252,0,0,0,0,0,0,0,0,
+71,102,120,50,0,0,0,32,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,40,0,0,0,0,0,0,0,0,
 0,0,1,3,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,255,255,255,252,
 0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,
 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,
-0,0,0,255,0,0,0,0,0,0,0,14,0,0,0,16,0,0,1,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,1,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,2,208,96,1,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,104,0,0,0,9,0,0,0,1,
-0,0,0,0,255,255,255,255,202,112,1,136,0,0,0,9,0,0,0,0,0,0,0,1,202,112,1,164,0,0,0,11,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,95,116,114,97,110,115,
-102,111,114,109,0,0,0,0,105,110,112,117,116,95,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,105,110,112,117,116,95,118,101,114,116,101,120,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,0,
-208,96,0,232,208,96,1,8,202,112,1,52,202,112,1,72,202,112,1,88,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,192,208,96,0,0,0,0,0,88,208,96,1,104,0,0,0,0,0,0,0,5,208,96,1,192,66,76,75,123,
-0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,5,0,0,1,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,128,9,32,0,0,0,0,0,4,160,60,32,1,0,136,6,0,148,0,192,0,0,136,4,0,20,34,0,0,0,
-0,0,0,160,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,255,0,0,0,0,0,0,0,14,0,0,0,16,0,0,1,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,208,96,1,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,2,208,96,1,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,124,0,0,0,9,0,0,0,1,
+0,0,0,4,255,255,255,255,202,112,1,144,0,0,0,9,0,0,0,1,0,0,0,0,255,255,255,255,202,112,1,176,0,0,0,9,0,0,0,0,0,0,0,1,202,112,1,204,0,0,0,11,0,0,0,0,0,0,0,0,118,101,114,116,
+101,120,95,116,114,97,110,115,102,111,114,109,0,0,0,0,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,95,116,114,97,110,115,102,111,114,109,0,0,0,0,105,110,112,117,116,95,116,101,120,116,117,114,101,95,99,111,
+111,114,100,105,110,97,116,101,115,0,0,0,105,110,112,117,116,95,118,101,114,116,101,120,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,0,208,96,0,232,208,96,1,8,202,112,1,52,202,112,1,72,202,112,1,92,202,112,1,108,
+125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,232,208,96,0,0,0,0,0,108,208,96,1,124,0,0,0,0,0,0,0,6,208,96,1,232,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,5,0,0,1,80,
+0,0,0,1,0,0,0,0,0,0,0,0,0,0,128,9,32,0,0,0,0,0,32,160,60,160,0,0,136,6,0,148,0,64,0,0,136,4,0,20,41,0,0,0,0,0,0,160,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,32,0,144,0,32,0,1,4,160,128,144,0,32,32,0,0,0,128,0,13,0,0,66,76,75,123,0,0,0,32,0,0,0,1,
-0,0,0,0,0,0,0,6,0,0,1,76,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,2,20,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,0,0,0,1,144,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,8,
-0,0,0,11,0,0,0,1,0,0,0,0,255,255,255,255,202,112,1,16,0,0,0,1,0,0,0,0,99,111,108,111,117,114,0,0,116,101,120,0,208,96,0,188,208,96,0,212,202,112,0,232,202,112,0,252,125,66,76,75,0,0,0,40,
-0,0,0,0,0,0,1,20,208,96,0,0,0,0,0,12,208,96,1,8,0,0,0,0,0,0,0,4,208,96,1,20,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,7,0,0,1,144,0,0,0,3,0,0,0,0,
-48,0,0,0,0,0,192,128,32,0,0,0,0,0,12,160,0,0,0,0,136,6,32,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,32,0,144,0,0,0,1,4,160,0,144,0,0,32,2,36,160,0,128,0,8,64,2,32,32,0,128,0,8,96,2,8,0,128,144,12,32,64,254,172,31,2,16,0,32,0,254,168,159,0,16,0,32,32,
+2,12,0,128,144,12,32,96,0,0,128,63,0,0,128,63,0,0,0,128,0,13,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,6,0,0,1,76,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,2,
+20,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,0,0,0,1,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,232,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,8,0,0,0,11,0,0,0,1,0,0,0,0,255,255,255,255,202,112,1,16,0,0,0,1,0,0,0,0,
+99,111,108,111,117,114,0,0,116,101,120,0,208,96,0,188,208,96,0,212,202,112,0,232,202,112,0,252,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,20,208,96,0,0,0,0,0,12,208,96,1,8,0,0,0,0,0,0,0,4,
+208,96,1,20,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,7,0,0,1,144,0,0,0,3,0,0,0,0,48,0,0,0,0,0,192,128,32,0,0,0,0,0,12,160,0,0,0,0,136,6,32,148,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,1,0,0,144,12,0,0,0,5,0,0,144,12,0,32,0,9,0,0,144,12,0,64,0,12,160,129,144,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-16,0,0,0,0,254,3,240,0,0,128,16,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,0,0,0,0
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,144,12,0,0,0,5,0,0,144,12,0,32,0,9,0,0,144,12,0,64,0,12,160,129,
+144,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,254,3,240,0,0,128,16,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,0,0,0,0
binary files a/src/Backends/Rendering/WiiUShaders/shader sources/colour_fill.gsh b/src/Backends/Rendering/WiiUShaders/shader sources/colour_fill.gsh differ
binary files a/src/Backends/Rendering/WiiUShaders/shader sources/glyph.gsh b/src/Backends/Rendering/WiiUShaders/shader sources/glyph.gsh differ
binary files a/src/Backends/Rendering/WiiUShaders/shader sources/texture.gsh b/src/Backends/Rendering/WiiUShaders/shader sources/texture.gsh differ
binary files a/src/Backends/Rendering/WiiUShaders/shader sources/texture_colour_key.gsh b/src/Backends/Rendering/WiiUShaders/shader sources/texture_colour_key.gsh differ
--- a/src/Backends/Rendering/WiiUShaders/texture.gsh.h
+++ b/src/Backends/Rendering/WiiUShaders/texture.gsh.h
@@ -1,25 +1,27 @@
-71,102,120,50,0,0,0,32,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,3,0,0,1,252,0,0,0,0,0,0,0,0,
+71,102,120,50,0,0,0,32,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,40,0,0,0,0,0,0,0,0,
 0,0,1,3,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,255,255,255,252,
 0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,
 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,
-0,0,0,255,0,0,0,0,0,0,0,14,0,0,0,16,0,0,1,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,1,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,2,208,96,1,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,104,0,0,0,9,0,0,0,1,
-0,0,0,0,255,255,255,255,202,112,1,136,0,0,0,9,0,0,0,0,0,0,0,1,202,112,1,164,0,0,0,11,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,95,116,114,97,110,115,
-102,111,114,109,0,0,0,0,105,110,112,117,116,95,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,105,110,112,117,116,95,118,101,114,116,101,120,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,0,
-208,96,0,232,208,96,1,8,202,112,1,52,202,112,1,72,202,112,1,88,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,192,208,96,0,0,0,0,0,88,208,96,1,104,0,0,0,0,0,0,0,5,208,96,1,192,66,76,75,123,
-0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,5,0,0,1,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,128,9,32,0,0,0,0,0,4,160,60,32,1,0,136,6,0,148,0,192,0,0,136,4,0,20,34,0,0,0,
-0,0,0,160,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,255,0,0,0,0,0,0,0,14,0,0,0,16,0,0,1,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,208,96,1,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,2,208,96,1,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,124,0,0,0,9,0,0,0,1,
+0,0,0,4,255,255,255,255,202,112,1,144,0,0,0,9,0,0,0,1,0,0,0,0,255,255,255,255,202,112,1,176,0,0,0,9,0,0,0,0,0,0,0,1,202,112,1,204,0,0,0,11,0,0,0,0,0,0,0,0,118,101,114,116,
+101,120,95,116,114,97,110,115,102,111,114,109,0,0,0,0,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,95,116,114,97,110,115,102,111,114,109,0,0,0,0,105,110,112,117,116,95,116,101,120,116,117,114,101,95,99,111,
+111,114,100,105,110,97,116,101,115,0,0,0,105,110,112,117,116,95,118,101,114,116,101,120,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,0,208,96,0,232,208,96,1,8,202,112,1,52,202,112,1,72,202,112,1,92,202,112,1,108,
+125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,232,208,96,0,0,0,0,0,108,208,96,1,124,0,0,0,0,0,0,0,6,208,96,1,232,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,5,0,0,1,80,
+0,0,0,1,0,0,0,0,0,0,0,0,0,0,128,9,32,0,0,0,0,0,32,160,60,160,0,0,136,6,0,148,0,64,0,0,136,4,0,20,41,0,0,0,0,0,0,160,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,32,0,144,0,32,0,1,4,160,128,144,0,32,32,0,0,0,128,0,13,0,0,66,76,75,123,0,0,0,32,0,0,0,1,
-0,0,0,0,0,0,0,6,0,0,1,88,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,2,20,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,0,0,0,1,16,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,8,
-0,0,0,9,0,0,0,1,0,0,0,0,255,255,255,255,202,112,1,28,0,0,0,1,0,0,0,0,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,115,0,116,101,120,0,208,96,0,188,208,96,0,212,202,112,0,232,
-202,112,0,252,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,32,208,96,0,0,0,0,0,24,208,96,1,8,0,0,0,0,0,0,0,4,208,96,1,32,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,7,
-0,0,1,16,0,0,0,3,0,0,0,0,32,0,0,0,0,0,192,128,0,0,0,0,136,6,32,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,32,0,144,0,0,0,1,4,160,0,144,0,0,32,2,36,160,0,128,0,8,64,2,32,32,0,128,0,8,96,2,8,0,128,144,12,32,64,254,172,31,2,16,0,32,0,254,168,159,0,16,0,32,32,
+2,12,0,128,144,12,32,96,0,0,128,63,0,0,128,63,0,0,0,128,0,13,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,6,0,0,1,88,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,2,
+20,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,0,0,0,1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,232,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,8,0,0,0,9,0,0,0,1,0,0,0,0,255,255,255,255,202,112,1,28,0,0,0,1,0,0,0,0,
+116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,115,0,116,101,120,0,208,96,0,188,208,96,0,212,202,112,0,232,202,112,0,252,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,32,208,96,0,0,0,0,0,24,
+208,96,1,8,0,0,0,0,0,0,0,4,208,96,1,32,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,7,0,0,1,16,0,0,0,3,0,0,0,0,32,0,0,0,0,0,192,128,0,0,0,0,136,6,32,148,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,16,13,240,0,0,128,16,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,0,0,0,0
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,16,13,240,0,0,128,16,0,0,0,0,
+66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,0,0,0,0
--- a/src/Backends/Rendering/WiiUShaders/texture_colour_key.gsh.h
+++ b/src/Backends/Rendering/WiiUShaders/texture_colour_key.gsh.h
@@ -1,27 +1,29 @@
-71,102,120,50,0,0,0,32,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,3,0,0,1,252,0,0,0,0,0,0,0,0,
+71,102,120,50,0,0,0,32,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,40,0,0,0,0,0,0,0,0,
 0,0,1,3,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,255,255,255,252,
 0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,
 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,
-0,0,0,255,0,0,0,0,0,0,0,14,0,0,0,16,0,0,1,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,1,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,2,208,96,1,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,104,0,0,0,9,0,0,0,1,
-0,0,0,0,255,255,255,255,202,112,1,136,0,0,0,9,0,0,0,0,0,0,0,1,202,112,1,164,0,0,0,11,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,95,116,114,97,110,115,
-102,111,114,109,0,0,0,0,105,110,112,117,116,95,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,105,110,112,117,116,95,118,101,114,116,101,120,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,0,
-208,96,0,232,208,96,1,8,202,112,1,52,202,112,1,72,202,112,1,88,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,192,208,96,0,0,0,0,0,88,208,96,1,104,0,0,0,0,0,0,0,5,208,96,1,192,66,76,75,123,
-0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,5,0,0,1,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,128,9,32,0,0,0,0,0,4,160,60,32,1,0,136,6,0,148,0,192,0,0,136,4,0,20,34,0,0,0,
-0,0,0,160,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,255,0,0,0,0,0,0,0,14,0,0,0,16,0,0,1,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,208,96,1,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,2,208,96,1,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,124,0,0,0,9,0,0,0,1,
+0,0,0,4,255,255,255,255,202,112,1,144,0,0,0,9,0,0,0,1,0,0,0,0,255,255,255,255,202,112,1,176,0,0,0,9,0,0,0,0,0,0,0,1,202,112,1,204,0,0,0,11,0,0,0,0,0,0,0,0,118,101,114,116,
+101,120,95,116,114,97,110,115,102,111,114,109,0,0,0,0,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,95,116,114,97,110,115,102,111,114,109,0,0,0,0,105,110,112,117,116,95,116,101,120,116,117,114,101,95,99,111,
+111,114,100,105,110,97,116,101,115,0,0,0,105,110,112,117,116,95,118,101,114,116,101,120,95,99,111,111,114,100,105,110,97,116,101,115,0,0,0,0,208,96,0,232,208,96,1,8,202,112,1,52,202,112,1,72,202,112,1,92,202,112,1,108,
+125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,232,208,96,0,0,0,0,0,108,208,96,1,124,0,0,0,0,0,0,0,6,208,96,1,232,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,5,0,0,1,80,
+0,0,0,1,0,0,0,0,0,0,0,0,0,0,128,9,32,0,0,0,0,0,32,160,60,160,0,0,136,6,0,148,0,64,0,0,136,4,0,20,41,0,0,0,0,0,0,160,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,32,0,144,0,32,0,1,4,160,128,144,0,32,32,0,0,0,128,0,13,0,0,66,76,75,123,0,0,0,32,0,0,0,1,
-0,0,0,0,0,0,0,6,0,0,1,88,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,2,20,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,0,0,0,1,144,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,8,
-0,0,0,9,0,0,0,1,0,0,0,0,255,255,255,255,202,112,1,28,0,0,0,1,0,0,0,0,116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,115,0,116,101,120,0,208,96,0,188,208,96,0,212,202,112,0,232,
-202,112,0,252,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,32,208,96,0,0,0,0,0,24,208,96,1,8,0,0,0,0,0,0,0,4,208,96,1,32,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,7,
-0,0,1,144,0,0,0,3,0,0,0,0,48,0,0,0,0,0,192,128,32,0,0,0,0,0,8,160,0,0,0,0,136,6,32,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,32,0,144,0,0,0,1,4,160,0,144,0,0,32,2,36,160,0,128,0,8,64,2,32,32,0,128,0,8,96,2,8,0,128,144,12,32,64,254,172,31,2,16,0,32,0,254,168,159,0,16,0,32,32,
+2,12,0,128,144,12,32,96,0,0,128,63,0,0,128,63,0,0,0,128,0,13,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,6,0,0,1,88,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,2,
+20,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,0,0,0,1,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,232,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,1,208,96,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,112,1,8,0,0,0,9,0,0,0,1,0,0,0,0,255,255,255,255,202,112,1,28,0,0,0,1,0,0,0,0,
+116,101,120,116,117,114,101,95,99,111,111,114,100,105,110,97,116,101,115,0,116,101,120,0,208,96,0,188,208,96,0,212,202,112,0,232,202,112,0,252,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,32,208,96,0,0,0,0,0,24,
+208,96,1,8,0,0,0,0,0,0,0,4,208,96,1,32,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,7,0,0,1,144,0,0,0,3,0,0,0,0,48,0,0,0,0,0,192,128,32,0,0,0,0,0,8,160,
+0,0,0,0,136,6,32,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,32,0,200,159,128,0,0,0,0,254,0,31,128,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,16,13,240,0,0,128,16,0,0,0,0,66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,0,0,0,0
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,32,0,200,159,128,0,0,0,0,
+254,0,31,128,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,16,13,240,0,0,128,16,0,0,0,0,
+66,76,75,123,0,0,0,32,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,0,0,0,0