From 663870ae7659b819412c8b82a6020821522896ca Mon Sep 17 00:00:00 2001 From: Clownacy Date: Wed, 23 Sep 2020 19:05:01 +0100 Subject: [PATCH] Wii U: Offload tex-coord transformation to GPU --- src/Backends/Rendering/WiiU.cpp | 60 +++++++++++------- .../Rendering/WiiUShaders/glyph.gsh.h | 33 +++++----- .../WiiUShaders/shader sources/glyph.gsh | Bin 1652 -> 1712 bytes .../WiiUShaders/shader sources/texture.gsh | Bin 1536 -> 1596 bytes .../WiiUShaders/shader sources/texture.vert | 3 +- .../WiiUShaders/shader sources/texture.vsh | 15 ++++- .../shader sources/texture_colour_key.gsh | Bin 1664 -> 1724 bytes .../Rendering/WiiUShaders/texture.gsh.h | 31 ++++----- .../WiiUShaders/texture_colour_key.gsh.h | 33 +++++----- 9 files changed, 100 insertions(+), 75 deletions(-) diff --git a/src/Backends/Rendering/WiiU.cpp b/src/Backends/Rendering/WiiU.cpp index 92e501d7..013109af 100644 --- a/src/Backends/Rendering/WiiU.cpp +++ b/src/Backends/Rendering/WiiU.cpp @@ -33,8 +33,6 @@ typedef struct RenderBackend_Surface { GX2Texture texture; GX2ColorBuffer colour_buffer; - size_t width; - size_t height; bool render_target; } RenderBackend_Surface; @@ -339,6 +337,8 @@ void RenderBackend_DrawScreen(void) // Disable blending GX2SetColorControl(GX2_LOGIC_OP_COPY, 0, FALSE, TRUE); + const float texture_coordinate_transform[2] = {1.0f, 1.0f}; + // Start drawing WHBGfxBeginRender(); @@ -357,6 +357,9 @@ void RenderBackend_DrawScreen(void) GX2SetVertexShader(shader_group_texture.vertexShader); GX2SetPixelShader(shader_group_texture.pixelShader); + // Set shader uniforms + GX2SetVertexUniformReg(shader_group_texture.vertexShader->uniformVars[0].offset, 2, (uint32_t*)&texture_coordinate_transform); + // Bind a few things GX2SetPixelSampler(&sampler, shader_group_texture.pixelShader->samplerVars[0].location); GX2SetPixelTexture(&framebuffer_surface->texture, shader_group_texture.pixelShader->samplerVars[0].location); @@ -383,6 +386,9 @@ void RenderBackend_DrawScreen(void) GX2SetVertexShader(shader_group_texture.vertexShader); GX2SetPixelShader(shader_group_texture.pixelShader); + // Set shader uniforms + GX2SetVertexUniformReg(shader_group_texture.vertexShader->uniformVars[0].offset, 2, (uint32_t*)&texture_coordinate_transform); + // Bind a few things GX2SetPixelSampler(&sampler, shader_group_texture.pixelShader->samplerVars[0].location); GX2SetPixelTexture(&framebuffer_surface->texture, shader_group_texture.pixelShader->samplerVars[0].location); @@ -406,8 +412,6 @@ RenderBackend_Surface* RenderBackend_CreateSurface(size_t width, size_t height, if (surface != NULL) { - surface->width = width; - surface->height = height; surface->render_target = render_target; // Initialise texture @@ -555,6 +559,10 @@ void RenderBackend_Blit(RenderBackend_Surface *source_surface, const RenderBacke GX2SetVertexShader(shader->vertexShader); GX2SetPixelShader(shader->pixelShader); + // Set shader uniforms (for some reason this vec2 needs padding to a vec4) + 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); + // Bind misc. data GX2SetPixelSampler(&sampler, shader->pixelShader->samplerVars[0].location); GX2SetPixelTexture(&source_surface->texture, shader->pixelShader->samplerVars[0].location); @@ -570,10 +578,10 @@ void RenderBackend_Blit(RenderBackend_Surface *source_surface, const RenderBacke if (vertex_buffer_slot != NULL) { // Set vertex position buffer - const float vertex_left = x * 2.0f / destination_surface->width - 1.0f; - const float vertex_top = y * -2.0f / destination_surface->height + 1.0f; - const float vertex_right = (x + (rect->right - rect->left)) * 2.0f / destination_surface->width - 1.0f; - const float vertex_bottom = (y + (rect->bottom - rect->top)) * -2.0f / destination_surface->height + 1.0f; + 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; vertex_buffer_slot->vertices[0].position.x = vertex_left; vertex_buffer_slot->vertices[0].position.y = vertex_top; @@ -584,10 +592,10 @@ void RenderBackend_Blit(RenderBackend_Surface *source_surface, const RenderBacke vertex_buffer_slot->vertices[3].position.x = vertex_left; vertex_buffer_slot->vertices[3].position.y = vertex_bottom; - const float texture_left = rect->left / (float)source_surface->width; - const float texture_top = rect->top / (float)source_surface->height; - const float texture_right = rect->right / (float)source_surface->width; - const float texture_bottom = rect->bottom / (float)source_surface->height; + const float texture_left = rect->left; + const float texture_top = rect->top; + const float texture_right = rect->right; + const float texture_bottom = rect->bottom; // Set texture coordinate buffer vertex_buffer_slot->vertices[0].texture.x = texture_left; @@ -645,10 +653,10 @@ void RenderBackend_ColourFill(RenderBackend_Surface *surface, const RenderBacken if (vertex_buffer_slot != NULL) { // Set vertex position buffer - const float vertex_left = rect->left * 2.0f / surface->width - 1.0f; - const float vertex_top = rect->top * -2.0f / surface->height + 1.0f; - const float vertex_right = rect->right * 2.0f / surface->width - 1.0f; - const float vertex_bottom = rect->bottom * -2.0f / surface->height + 1.0f; + 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; vertex_buffer_slot->vertices[0].position.x = vertex_left; vertex_buffer_slot->vertices[0].position.y = vertex_top; @@ -758,6 +766,10 @@ void RenderBackend_PrepareToDrawGlyphs(RenderBackend_GlyphAtlas *atlas, RenderBa GX2SetVertexShader(shader_group_glyph.vertexShader); GX2SetPixelShader(shader_group_glyph.pixelShader); + // Set shader uniforms (for some reason this vec2 needs padding to a vec4) + 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); + // Bind misc. data GX2SetPixelSampler(&sampler, shader_group_glyph.pixelShader->samplerVars[0].location); GX2SetPixelTexture(&atlas->texture, shader_group_glyph.pixelShader->samplerVars[0].location); @@ -776,10 +788,10 @@ void RenderBackend_DrawGlyph(long x, long y, size_t glyph_x, size_t glyph_y, siz if (vertex_buffer_slot != NULL) { // Set vertex position buffer - const float vertex_left = x * 2.0f / glyph_destination_surface->width - 1.0f; - const float vertex_top = y * -2.0f / glyph_destination_surface->height + 1.0f; - const float vertex_right = (x + glyph_width) * 2.0f / glyph_destination_surface->width - 1.0f; - const float vertex_bottom = (y + glyph_height) * -2.0f / glyph_destination_surface->height + 1.0f; + 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; vertex_buffer_slot->vertices[0].position.x = vertex_left; vertex_buffer_slot->vertices[0].position.y = vertex_top; @@ -790,10 +802,10 @@ void RenderBackend_DrawGlyph(long x, long y, size_t glyph_x, size_t glyph_y, siz vertex_buffer_slot->vertices[3].position.x = vertex_left; vertex_buffer_slot->vertices[3].position.y = vertex_bottom; - const float texture_left = glyph_x / (float)glyph_atlas->texture.surface.width; - const float texture_top = glyph_y / (float)glyph_atlas->texture.surface.height; - const float texture_right = (glyph_x + glyph_width) / (float)glyph_atlas->texture.surface.width; - const float texture_bottom = (glyph_y + glyph_height) / (float)glyph_atlas->texture.surface.height; + const float texture_left = glyph_x; + const float texture_top = glyph_y; + const float texture_right = glyph_x + glyph_width; + const float texture_bottom = glyph_y + glyph_height; // Set texture coordinate buffer vertex_buffer_slot->vertices[0].texture.x = texture_left; diff --git a/src/Backends/Rendering/WiiUShaders/glyph.gsh.h b/src/Backends/Rendering/WiiUShaders/glyph.gsh.h index f5f9d24e..4fad4340 100644 --- a/src/Backends/Rendering/WiiUShaders/glyph.gsh.h +++ b/src/Backends/Rendering/WiiUShaders/glyph.gsh.h @@ -1,26 +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,192,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,252,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,0,0,0,0,0,0,0,0,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,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,84,0,0,0,9,0,0,0,0, -0,0,0,1,202,112,1,112,0,0,0,9,0,0,0,0,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,1,8,202,112,1,52,202,112,1,68,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,140,208,96,0,0,0,0,0,56,208,96,1,84,0,0,0,0,0,0,0,3,208,96,1,140, -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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,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,0,144,12,32,0,1,4,0,128,144,12,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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, -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 +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 diff --git a/src/Backends/Rendering/WiiUShaders/shader sources/glyph.gsh b/src/Backends/Rendering/WiiUShaders/shader sources/glyph.gsh index 4652d320ec8deb3617ff7008534108a4890e6410..7f3676763625f5d253f09e2226dbf93172b94cdf 100644 GIT binary patch delta 197 zcmeyuvw?SlIpd#+7VlXZFC;LUOjcx+W@Q4hJSGP+X#|`qV9a1(VBiE|Mj&SR4+KE5 z4yYJNh!MzN0;IV?91ti;ttcriN{vs>&o4^J%u6gujV~!m%qvdIFUp-ffzi&2;RVoq z4xly@Aoc*_h*~EfZ=g;Muzm){0~Zp&tO%ewko6$I3S=MH#H7T?qrfnML4kphWkJIP KhRu4+Zp;82rZcku delta 132 zcmdnM`-NwMIpcwe7Vjr7U{YXZx{$zVGI=7ChRmq~#t;Su22LOb0Y)Id07!%RlaDak z88LDIg-n3hrPj&E8z`j#QU_Gob0GoDumG9`G6Dpcf$W~mHcU#4JPZsIcoY~ISr{57 L@NCXvc4GzrH@X~C diff --git a/src/Backends/Rendering/WiiUShaders/shader sources/texture.gsh b/src/Backends/Rendering/WiiUShaders/shader sources/texture.gsh index 0be8318258bdb7341ff1c4947b7496b4c8b6723c..48f39361a6bd5724a9826533637e2c34bcbf27d5 100644 GIT binary patch delta 197 zcmZqR*~2rzobk^@i}$RI7ZMmvCMz;ZvoZl$9+Lx^Gy+Z)FlI0?FmM7fBM>wE2Lhm2 z2UH9s#0cas0n*$c4hWQ_R+N+$rN$@c=NF}9<|US-#+MW&<`t*q7v)Z#z-VX1@B(N) z2T+>{5PJY|M6HvLH&CYrSU&^ffeQ&>Rs>KT$a)Z91+oupVp3w{QDB(BpuoV$vY=rC K!)86^OH2UF%rn&h delta 132 zcmdnP)4(&qobkX!i}#ZkFe$JyT}WUwnLLq6L*`TgV+aES11AuJ03(oJ0HneE$wwIN zj2Jn9LMA}$QtRa74V2OVsROF)xsU*6SOCoe836*!Kz7e&8zv=29tMU9JPHhqEDQ}3 Lcs6G-Ut$6P1C|_h diff --git a/src/Backends/Rendering/WiiUShaders/shader sources/texture.vert b/src/Backends/Rendering/WiiUShaders/shader sources/texture.vert index 3e7d817e..5a21db40 100644 --- a/src/Backends/Rendering/WiiUShaders/shader sources/texture.vert +++ b/src/Backends/Rendering/WiiUShaders/shader sources/texture.vert @@ -1,9 +1,10 @@ #version 150 core +layout(location = 0) uniform vec2 texture_coordinate_transform; layout(location = 0) in vec4 input_vertex_coordinates; layout(location = 1) in vec2 input_texture_coordinates; out vec2 texture_coordinates; void main() { gl_Position = input_vertex_coordinates; - texture_coordinates = input_texture_coordinates; + texture_coordinates = input_texture_coordinates * texture_coordinate_transform; } diff --git a/src/Backends/Rendering/WiiUShaders/shader sources/texture.vsh b/src/Backends/Rendering/WiiUShaders/shader sources/texture.vsh index 4d6da880..1621d666 100644 --- a/src/Backends/Rendering/WiiUShaders/shader sources/texture.vsh +++ b/src/Backends/Rendering/WiiUShaders/shader sources/texture.vsh @@ -1,17 +1,25 @@ ; $MODE = "UniformRegister" + +; $UNIFORM_VARS[0].name = "texture_coordinate_transform" +; $UNIFORM_VARS[0].type = "vec2" +; $UNIFORM_VARS[0].count = 1 +; $UNIFORM_VARS[0].offset = 0 +; $UNIFORM_VARS[0].block = -1 + ; $ATTRIB_VARS[0].name = "input_texture_coordinates" ; $ATTRIB_VARS[0].type = "vec2" ; $ATTRIB_VARS[0].location = 1 ; $ATTRIB_VARS[1].name = "input_vertex_coordinates" -; $ATTRIB_VARS[1].type = "vec2" +; $ATTRIB_VARS[1].type = "vec4" ; $ATTRIB_VARS[1].location = 0 + ; $NUM_SPI_VS_OUT_ID = 1 ; $SPI_VS_OUT_ID[0].SEMANTIC_0 = 0 00 CALL_FS NO_BARRIER 01 ALU: ADDR(32) CNT(2) - 0 x: MOV R1.x, R1.x - y: MOV R1.y, R1.y + 0 x: MUL R1.x, R1.x, C0.x + y: MUL R1.y, R1.y, C0.y 02 EXP_DONE: POS0, R2 03 EXP_DONE: PARAM0, R1.xyzz NO_BARRIER 04 ALU: ADDR(34) CNT(1) @@ -25,3 +33,4 @@ END_OF_PROGRAM + diff --git a/src/Backends/Rendering/WiiUShaders/shader sources/texture_colour_key.gsh b/src/Backends/Rendering/WiiUShaders/shader sources/texture_colour_key.gsh index 0d0e19d94b54b1ba72f66ca51d152d9d5260a05b..b56fb8b0c3e4f6ce2099b2619c9a7925d16a095d 100644 GIT binary patch delta 197 zcmZqR-NQSwE2Lhm2 z2UH9s#0cas0n*$c4hWQ_R+N+$rN$@c=NF}9<|US-#+MW&<`t*q7v)Z#z-VX1@B(N) z2T+>{5PJY|M6HvLH&CYrSU&^ffeQ&>Rs>KT$a)Z91+oupVp3w{QDB(BpuoV$vY=rC K!)86^AZ7r~Q!`iq delta 132 zcmdnP+rT@)obkX!i}#ZkFe$JyT}WUwnLLq6L*`TgV+aES11AuJ03(oJ0HneE$wwIN zj2Jn9LMA}$QtRa74V2OVsROF)xsU*6SOCoe836*!Kz7e&8zv=29tMU9JPHhqEDQ}3 Lcs6G-2QdQx1DhN8 diff --git a/src/Backends/Rendering/WiiUShaders/texture.gsh.h b/src/Backends/Rendering/WiiUShaders/texture.gsh.h index 315909b1..e189bfd3 100644 --- a/src/Backends/Rendering/WiiUShaders/texture.gsh.h +++ b/src/Backends/Rendering/WiiUShaders/texture.gsh.h @@ -1,24 +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,192,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,252,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,0,0,0,0,0,0,0,0,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,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,84,0,0,0,9,0,0,0,0, -0,0,0,1,202,112,1,112,0,0,0,9,0,0,0,0,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,1,8,202,112,1,52,202,112,1,68,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,140,208,96,0,0,0,0,0,56,208,96,1,84,0,0,0,0,0,0,0,3,208,96,1,140, -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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,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,0,144,12,32,0,1,4,0,128,144,12,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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 diff --git a/src/Backends/Rendering/WiiUShaders/texture_colour_key.gsh.h b/src/Backends/Rendering/WiiUShaders/texture_colour_key.gsh.h index 2ea62904..8ffea8a2 100644 --- a/src/Backends/Rendering/WiiUShaders/texture_colour_key.gsh.h +++ b/src/Backends/Rendering/WiiUShaders/texture_colour_key.gsh.h @@ -1,26 +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,192,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,252,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,0,0,0,0,0,0,0,0,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,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,84,0,0,0,9,0,0,0,0, -0,0,0,1,202,112,1,112,0,0,0,9,0,0,0,0,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,1,8,202,112,1,52,202,112,1,68,125,66,76,75,0,0,0,40,0,0,0,0,0,0,1,140,208,96,0,0,0,0,0,56,208,96,1,84,0,0,0,0,0,0,0,3,208,96,1,140, -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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,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,0,144,12,32,0,1,4,0,128,144,12,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,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