diff --git a/Nuake/src/Rendering/Textures/Texture.cpp b/Nuake/src/Rendering/Textures/Texture.cpp index 3d415822..fa07e2d5 100644 --- a/Nuake/src/Rendering/Textures/Texture.cpp +++ b/Nuake/src/Rendering/Textures/Texture.cpp @@ -47,16 +47,15 @@ namespace Nuake m_Height = size.y; glGenTextures(1, &m_RendererId); glBindTexture(GL_TEXTURE_2D, m_RendererId); - glGenerateMipmap(GL_TEXTURE_2D); + //glGenerateMipmap(GL_TEXTURE_2D); //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, -1.0f); glTexImage2D(GL_TEXTURE_2D, 0, (GLenum)GL_RGBA, size.x, size.y, 0, (GLenum)GL_RGBA, (GLenum)GL_UNSIGNED_BYTE, data); - glGenerateMipmap(GL_TEXTURE_2D); } Texture::Texture(Vector2 size, GLenum format, GLenum format2, GLenum format3, void* data) diff --git a/Nuake/src/Resource/StaticResources.cpp b/Nuake/src/Resource/StaticResources.cpp index d23c1746..e004092c 100644 --- a/Nuake/src/Resource/StaticResources.cpp +++ b/Nuake/src/Resource/StaticResources.cpp @@ -275218,190 +275218,200 @@ namespace Nuake { 0x0A, 0x0D, 0x0A, 0x23, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x0D, 0x0A, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x34, 0x36, 0x30, 0x20, 0x63, 0x6F, - 0x72, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x69, 0x6E, 0x20, 0x73, - 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, - 0x5F, 0x55, 0x56, 0x3B, 0x0D, 0x0A, 0x6F, 0x75, 0x74, 0x20, 0x76, 0x65, - 0x63, 0x34, 0x20, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6F, 0x6C, 0x6F, 0x72, - 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, - 0x20, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x32, 0x44, 0x20, 0x75, - 0x5F, 0x41, 0x74, 0x6C, 0x61, 0x73, 0x3B, 0x0D, 0x0A, 0x75, 0x6E, 0x69, - 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x20, - 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x5F, 0x54, 0x65, 0x78, 0x74, 0x75, - 0x72, 0x65, 0x50, 0x6F, 0x73, 0x3B, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, - 0x6F, 0x72, 0x6D, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x5F, 0x54, - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x61, 0x6C, 0x65, 0x3B, - 0x0D, 0x0A, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, - 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5F, 0x46, 0x6F, 0x6E, 0x74, 0x43, - 0x6F, 0x6C, 0x6F, 0x72, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x75, 0x6E, 0x69, - 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x75, - 0x5F, 0x50, 0x78, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x3B, 0x0D, 0x0A, 0x0D, - 0x0A, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, - 0x6E, 0x50, 0x78, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x28, 0x76, 0x65, 0x63, - 0x32, 0x20, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x29, 0x20, 0x7B, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x6E, 0x69, - 0x74, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x3D, 0x20, 0x76, 0x65, 0x63, - 0x32, 0x28, 0x75, 0x5F, 0x50, 0x78, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x29, - 0x20, 0x2F, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x74, 0x65, 0x78, 0x74, - 0x75, 0x72, 0x65, 0x53, 0x69, 0x7A, 0x65, 0x28, 0x75, 0x5F, 0x41, 0x74, - 0x6C, 0x61, 0x73, 0x2C, 0x20, 0x30, 0x29, 0x29, 0x3B, 0x0D, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x73, 0x63, 0x72, 0x65, - 0x65, 0x6E, 0x54, 0x65, 0x78, 0x53, 0x69, 0x7A, 0x65, 0x20, 0x3D, 0x20, - 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x2E, 0x30, 0x29, 0x20, 0x2F, 0x20, - 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, 0x28, 0x63, 0x6F, 0x6F, 0x72, 0x64, - 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6E, 0x20, 0x6D, 0x61, 0x78, 0x28, 0x30, 0x2E, 0x35, 0x20, 0x2A, - 0x20, 0x64, 0x6F, 0x74, 0x28, 0x75, 0x6E, 0x69, 0x74, 0x52, 0x61, 0x6E, - 0x67, 0x65, 0x2C, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x54, 0x65, - 0x78, 0x53, 0x69, 0x7A, 0x65, 0x29, 0x2C, 0x20, 0x31, 0x2E, 0x30, 0x29, - 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x66, 0x6C, 0x6F, 0x61, - 0x74, 0x20, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x6E, 0x28, 0x66, 0x6C, 0x6F, - 0x61, 0x74, 0x20, 0x72, 0x2C, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, - 0x67, 0x2C, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x62, 0x29, 0x20, - 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6E, 0x20, 0x6D, 0x61, 0x78, 0x28, 0x6D, 0x69, 0x6E, 0x28, 0x72, 0x2C, - 0x20, 0x67, 0x29, 0x2C, 0x20, 0x6D, 0x69, 0x6E, 0x28, 0x6D, 0x61, 0x78, - 0x28, 0x72, 0x2C, 0x20, 0x67, 0x29, 0x2C, 0x20, 0x62, 0x29, 0x29, 0x3B, - 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x66, 0x6C, 0x6F, 0x61, 0x74, - 0x20, 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x28, 0x76, 0x65, 0x63, - 0x34, 0x20, 0x73, 0x64, 0x66, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x29, - 0x0D, 0x0A, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, - 0x61, 0x74, 0x20, 0x72, 0x20, 0x3D, 0x20, 0x73, 0x64, 0x66, 0x53, 0x61, - 0x6D, 0x70, 0x6C, 0x65, 0x2E, 0x72, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x67, 0x20, 0x3D, 0x20, 0x73, - 0x64, 0x66, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x2E, 0x67, 0x3B, 0x0D, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x62, - 0x20, 0x3D, 0x20, 0x73, 0x64, 0x66, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, - 0x2E, 0x62, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, - 0x61, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x5F, 0x64, 0x69, - 0x73, 0x74, 0x20, 0x3D, 0x20, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x6E, 0x28, - 0x72, 0x2C, 0x20, 0x67, 0x2C, 0x20, 0x62, 0x29, 0x20, 0x2D, 0x20, 0x30, - 0x2E, 0x35, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, - 0x61, 0x74, 0x20, 0x64, 0x20, 0x3D, 0x20, 0x66, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x28, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x5F, 0x64, 0x69, 0x73, - 0x74, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, - 0x61, 0x74, 0x20, 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x3D, - 0x20, 0x73, 0x6D, 0x6F, 0x6F, 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, - 0x2D, 0x64, 0x2C, 0x20, 0x64, 0x2C, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, - 0x64, 0x5F, 0x64, 0x69, 0x73, 0x74, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6F, 0x70, 0x61, - 0x63, 0x69, 0x74, 0x79, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, - 0x76, 0x6F, 0x69, 0x64, 0x20, 0x6D, 0x61, 0x69, 0x6E, 0x28, 0x29, 0x20, - 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7A, 0x65, 0x20, 0x3D, 0x20, 0x74, - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x53, 0x69, 0x7A, 0x65, 0x28, 0x75, - 0x5F, 0x41, 0x74, 0x6C, 0x61, 0x73, 0x2C, 0x20, 0x30, 0x29, 0x3B, 0x0D, - 0x0A, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, - 0x75, 0x76, 0x20, 0x3D, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6D, 0x69, - 0x78, 0x28, 0x75, 0x5F, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x50, - 0x6F, 0x73, 0x2E, 0x78, 0x20, 0x2F, 0x20, 0x74, 0x65, 0x78, 0x74, 0x53, - 0x69, 0x7A, 0x65, 0x2E, 0x78, 0x2C, 0x20, 0x75, 0x5F, 0x54, 0x65, 0x78, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x61, 0x6C, 0x65, 0x2E, 0x78, 0x20, - 0x2F, 0x20, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7A, 0x65, 0x2E, 0x78, - 0x2C, 0x20, 0x76, 0x5F, 0x55, 0x56, 0x2E, 0x78, 0x29, 0x2C, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6D, 0x69, 0x78, 0x28, 0x75, - 0x5F, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x61, 0x6C, - 0x65, 0x2E, 0x79, 0x20, 0x2F, 0x20, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, - 0x7A, 0x65, 0x2E, 0x79, 0x2C, 0x20, 0x75, 0x5F, 0x54, 0x65, 0x78, 0x74, - 0x75, 0x72, 0x65, 0x50, 0x6F, 0x73, 0x2E, 0x79, 0x20, 0x2F, 0x20, 0x74, - 0x65, 0x78, 0x74, 0x53, 0x69, 0x7A, 0x65, 0x2E, 0x79, 0x2C, 0x20, 0x31, - 0x2E, 0x30, 0x20, 0x2D, 0x20, 0x76, 0x5F, 0x55, 0x56, 0x2E, 0x79, 0x29, - 0x29, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, - 0x6E, 0x73, 0x74, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x73, 0x75, + 0x72, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x69, 0x6E, 0x20, 0x73, 0x61, 0x6D, + 0x70, 0x6C, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5F, 0x55, + 0x56, 0x3B, 0x0D, 0x0A, 0x6F, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, + 0x20, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x3B, 0x0D, + 0x0A, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x73, + 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x32, 0x44, 0x20, 0x75, 0x5F, 0x41, + 0x74, 0x6C, 0x61, 0x73, 0x3B, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, + 0x72, 0x6D, 0x20, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x76, 0x65, + 0x63, 0x32, 0x20, 0x75, 0x5F, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, + 0x50, 0x6F, 0x73, 0x3B, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, + 0x6D, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x5F, 0x54, 0x65, 0x78, + 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x61, 0x6C, 0x65, 0x3B, 0x0D, 0x0A, + 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x76, 0x65, 0x63, 0x34, + 0x20, 0x75, 0x5F, 0x46, 0x6F, 0x6E, 0x74, 0x43, 0x6F, 0x6C, 0x6F, 0x72, + 0x3B, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x66, + 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x75, 0x5F, 0x50, 0x78, 0x52, 0x61, 0x6E, + 0x67, 0x65, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, + 0x72, 0x6D, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x75, 0x5F, 0x53, + 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, + 0x72, 0x6D, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x75, 0x5F, 0x43, + 0x75, 0x72, 0x76, 0x65, 0x54, 0x6F, 0x6C, 0x65, 0x72, 0x61, 0x6E, 0x63, + 0x65, 0x3B, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, + 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x75, 0x5F, 0x53, 0x75, 0x62, 0x70, + 0x69, 0x78, 0x65, 0x6C, 0x41, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x3B, 0x0D, + 0x0A, 0x0D, 0x0A, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x73, 0x63, 0x72, + 0x65, 0x65, 0x6E, 0x50, 0x78, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x28, 0x76, + 0x65, 0x63, 0x32, 0x20, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x29, 0x20, 0x7B, + 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, + 0x6E, 0x69, 0x74, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x3D, 0x20, 0x76, + 0x65, 0x63, 0x32, 0x28, 0x75, 0x5F, 0x50, 0x78, 0x52, 0x61, 0x6E, 0x67, + 0x65, 0x29, 0x20, 0x2F, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x74, 0x65, + 0x78, 0x74, 0x75, 0x72, 0x65, 0x53, 0x69, 0x7A, 0x65, 0x28, 0x75, 0x5F, + 0x41, 0x74, 0x6C, 0x61, 0x73, 0x2C, 0x20, 0x30, 0x29, 0x29, 0x3B, 0x0D, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x73, 0x63, + 0x72, 0x65, 0x65, 0x6E, 0x54, 0x65, 0x78, 0x53, 0x69, 0x7A, 0x65, 0x20, + 0x3D, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x2E, 0x30, 0x29, 0x20, + 0x2F, 0x20, 0x66, 0x77, 0x69, 0x64, 0x74, 0x68, 0x28, 0x63, 0x6F, 0x6F, + 0x72, 0x64, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6D, 0x61, 0x78, 0x28, 0x30, 0x2E, 0x35, + 0x20, 0x2A, 0x20, 0x64, 0x6F, 0x74, 0x28, 0x75, 0x6E, 0x69, 0x74, 0x52, + 0x61, 0x6E, 0x67, 0x65, 0x2C, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, + 0x54, 0x65, 0x78, 0x53, 0x69, 0x7A, 0x65, 0x29, 0x2C, 0x20, 0x31, 0x2E, + 0x30, 0x29, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x66, 0x6C, + 0x6F, 0x61, 0x74, 0x20, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x6E, 0x28, 0x66, + 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x72, 0x2C, 0x20, 0x66, 0x6C, 0x6F, 0x61, + 0x74, 0x20, 0x67, 0x2C, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x62, + 0x29, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6E, 0x20, 0x6D, 0x61, 0x78, 0x28, 0x6D, 0x69, 0x6E, 0x28, + 0x72, 0x2C, 0x20, 0x67, 0x29, 0x2C, 0x20, 0x6D, 0x69, 0x6E, 0x28, 0x6D, + 0x61, 0x78, 0x28, 0x72, 0x2C, 0x20, 0x67, 0x29, 0x2C, 0x20, 0x62, 0x29, + 0x29, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x66, 0x6C, 0x6F, + 0x61, 0x74, 0x20, 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x28, 0x76, + 0x65, 0x63, 0x34, 0x20, 0x73, 0x64, 0x66, 0x53, 0x61, 0x6D, 0x70, 0x6C, + 0x65, 0x29, 0x0D, 0x0A, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x72, 0x20, 0x3D, 0x20, 0x73, 0x64, 0x66, + 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x2E, 0x72, 0x3B, 0x0D, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x67, 0x20, 0x3D, + 0x20, 0x73, 0x64, 0x66, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x2E, 0x67, + 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, + 0x20, 0x62, 0x20, 0x3D, 0x20, 0x73, 0x64, 0x66, 0x53, 0x61, 0x6D, 0x70, + 0x6C, 0x65, 0x2E, 0x62, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x5F, + 0x64, 0x69, 0x73, 0x74, 0x20, 0x3D, 0x20, 0x6D, 0x65, 0x64, 0x69, 0x61, + 0x6E, 0x28, 0x72, 0x2C, 0x20, 0x67, 0x2C, 0x20, 0x62, 0x29, 0x20, 0x2D, + 0x20, 0x30, 0x2E, 0x35, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x64, 0x20, 0x3D, 0x20, 0x66, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x28, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x5F, 0x64, + 0x69, 0x73, 0x74, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, + 0x20, 0x3D, 0x20, 0x73, 0x6D, 0x6F, 0x6F, 0x74, 0x68, 0x73, 0x74, 0x65, + 0x70, 0x28, 0x2D, 0x64, 0x2C, 0x20, 0x64, 0x2C, 0x20, 0x73, 0x69, 0x67, + 0x6E, 0x65, 0x64, 0x5F, 0x64, 0x69, 0x73, 0x74, 0x29, 0x3B, 0x0D, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6F, + 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, + 0x0D, 0x0A, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x6D, 0x61, 0x69, 0x6E, 0x28, + 0x29, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, + 0x32, 0x20, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7A, 0x65, 0x20, 0x3D, + 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x53, 0x69, 0x7A, 0x65, + 0x28, 0x75, 0x5F, 0x41, 0x74, 0x6C, 0x61, 0x73, 0x2C, 0x20, 0x30, 0x29, + 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, + 0x32, 0x20, 0x75, 0x76, 0x20, 0x3D, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, + 0x6D, 0x69, 0x78, 0x28, 0x75, 0x5F, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, + 0x65, 0x50, 0x6F, 0x73, 0x2E, 0x78, 0x20, 0x2F, 0x20, 0x74, 0x65, 0x78, + 0x74, 0x53, 0x69, 0x7A, 0x65, 0x2E, 0x78, 0x2C, 0x20, 0x75, 0x5F, 0x54, + 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x61, 0x6C, 0x65, 0x2E, + 0x78, 0x20, 0x2F, 0x20, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7A, 0x65, + 0x2E, 0x78, 0x2C, 0x20, 0x76, 0x5F, 0x55, 0x56, 0x2E, 0x78, 0x29, 0x2C, + 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6D, 0x69, 0x78, + 0x28, 0x75, 0x5F, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, + 0x61, 0x6C, 0x65, 0x2E, 0x79, 0x20, 0x2F, 0x20, 0x74, 0x65, 0x78, 0x74, + 0x53, 0x69, 0x7A, 0x65, 0x2E, 0x79, 0x2C, 0x20, 0x75, 0x5F, 0x54, 0x65, + 0x78, 0x74, 0x75, 0x72, 0x65, 0x50, 0x6F, 0x73, 0x2E, 0x79, 0x20, 0x2F, + 0x20, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7A, 0x65, 0x2E, 0x79, 0x2C, + 0x20, 0x31, 0x2E, 0x30, 0x20, 0x2D, 0x20, 0x76, 0x5F, 0x55, 0x56, 0x2E, + 0x79, 0x29, 0x29, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x73, 0x75, 0x62, 0x50, 0x69, 0x78, + 0x65, 0x6C, 0x41, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x3D, 0x20, 0x75, + 0x5F, 0x53, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x41, 0x6D, 0x6F, + 0x75, 0x6E, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, + 0x63, 0x32, 0x20, 0x75, 0x6E, 0x69, 0x74, 0x52, 0x61, 0x6E, 0x67, 0x65, + 0x20, 0x3D, 0x20, 0x31, 0x2E, 0x30, 0x20, 0x2F, 0x20, 0x74, 0x65, 0x78, + 0x74, 0x53, 0x69, 0x7A, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, + 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x76, 0x4C, 0x65, 0x66, 0x74, 0x20, + 0x3D, 0x20, 0x75, 0x76, 0x20, 0x2D, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, + 0x75, 0x6E, 0x69, 0x74, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x78, 0x20, + 0x2A, 0x20, 0x73, 0x75, 0x62, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x41, 0x6D, + 0x6F, 0x75, 0x6E, 0x74, 0x2C, 0x20, 0x30, 0x29, 0x3B, 0x0D, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x76, 0x52, 0x69, + 0x67, 0x68, 0x74, 0x20, 0x3D, 0x20, 0x75, 0x76, 0x20, 0x2B, 0x20, 0x76, + 0x65, 0x63, 0x32, 0x28, 0x75, 0x6E, 0x69, 0x74, 0x52, 0x61, 0x6E, 0x67, + 0x65, 0x2E, 0x78, 0x20, 0x2A, 0x20, 0x73, 0x75, 0x62, 0x50, 0x69, 0x78, + 0x65, 0x6C, 0x41, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x2C, 0x20, 0x30, 0x29, + 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, + 0x75, 0x76, 0x55, 0x70, 0x20, 0x3D, 0x20, 0x75, 0x76, 0x20, 0x2B, 0x20, + 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2C, 0x20, 0x75, 0x6E, 0x69, 0x74, + 0x52, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x79, 0x20, 0x2A, 0x20, 0x73, 0x75, 0x62, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x41, 0x6D, 0x6F, 0x75, 0x6E, 0x74, - 0x20, 0x3D, 0x20, 0x31, 0x2E, 0x33, 0x33, 0x33, 0x3B, 0x0D, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x6E, 0x69, 0x74, - 0x52, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x3D, 0x20, 0x31, 0x2E, 0x30, 0x20, - 0x2F, 0x20, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7A, 0x65, 0x3B, 0x0D, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x76, - 0x4C, 0x65, 0x66, 0x74, 0x20, 0x3D, 0x20, 0x75, 0x76, 0x20, 0x2D, 0x20, - 0x76, 0x65, 0x63, 0x32, 0x28, 0x75, 0x6E, 0x69, 0x74, 0x52, 0x61, 0x6E, - 0x67, 0x65, 0x2E, 0x78, 0x20, 0x2A, 0x20, 0x73, 0x75, 0x62, 0x50, 0x69, - 0x78, 0x65, 0x6C, 0x41, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x2C, 0x20, 0x30, - 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, - 0x20, 0x75, 0x76, 0x52, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3D, 0x20, 0x75, - 0x76, 0x20, 0x2B, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x75, 0x6E, 0x69, - 0x74, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x78, 0x20, 0x2A, 0x20, 0x73, - 0x75, 0x62, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x41, 0x6D, 0x6F, 0x75, 0x6E, - 0x74, 0x2C, 0x20, 0x30, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, - 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x76, 0x55, 0x70, 0x20, 0x3D, 0x20, - 0x75, 0x76, 0x20, 0x2B, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2C, - 0x20, 0x75, 0x6E, 0x69, 0x74, 0x52, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x79, - 0x20, 0x2A, 0x20, 0x73, 0x75, 0x62, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x41, - 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, - 0x65, 0x20, 0x3D, 0x20, 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x28, - 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x75, 0x5F, 0x41, 0x74, - 0x6C, 0x61, 0x73, 0x2C, 0x20, 0x75, 0x76, 0x29, 0x29, 0x3B, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x6C, 0x65, - 0x66, 0x74, 0x20, 0x3D, 0x20, 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, - 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x75, 0x5F, 0x41, - 0x74, 0x6C, 0x61, 0x73, 0x2C, 0x20, 0x75, 0x76, 0x4C, 0x65, 0x66, 0x74, - 0x29, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, - 0x61, 0x74, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3D, 0x20, 0x6F, - 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, - 0x72, 0x65, 0x28, 0x75, 0x5F, 0x41, 0x74, 0x6C, 0x61, 0x73, 0x2C, 0x20, - 0x75, 0x76, 0x52, 0x69, 0x67, 0x68, 0x74, 0x29, 0x29, 0x3B, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x75, 0x70, - 0x20, 0x3D, 0x20, 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x28, 0x74, - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x75, 0x5F, 0x41, 0x74, 0x6C, - 0x61, 0x73, 0x2C, 0x20, 0x75, 0x76, 0x55, 0x70, 0x29, 0x29, 0x3B, 0x0D, - 0x0A, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x3D, 0x20, 0x75, 0x5F, 0x46, 0x6F, - 0x6E, 0x74, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x72, 0x67, 0x62, 0x3B, - 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x20, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x66, - 0x61, 0x6C, 0x73, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x20, 0x66, 0x6C, - 0x6F, 0x61, 0x74, 0x20, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x20, 0x3D, 0x20, - 0x31, 0x2E, 0x36, 0x36, 0x36, 0x36, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, + 0x29, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, + 0x6F, 0x61, 0x74, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x20, 0x3D, + 0x20, 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x28, 0x74, 0x65, 0x78, + 0x74, 0x75, 0x72, 0x65, 0x28, 0x75, 0x5F, 0x41, 0x74, 0x6C, 0x61, 0x73, + 0x2C, 0x20, 0x75, 0x76, 0x29, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x20, + 0x3D, 0x20, 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x28, 0x74, 0x65, + 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x75, 0x5F, 0x41, 0x74, 0x6C, 0x61, + 0x73, 0x2C, 0x20, 0x75, 0x76, 0x4C, 0x65, 0x66, 0x74, 0x29, 0x29, 0x3B, + 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3D, 0x20, 0x6F, 0x70, 0x61, 0x63, + 0x69, 0x74, 0x79, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, + 0x75, 0x5F, 0x41, 0x74, 0x6C, 0x61, 0x73, 0x2C, 0x20, 0x75, 0x76, 0x52, + 0x69, 0x67, 0x68, 0x74, 0x29, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x75, 0x70, 0x20, 0x3D, 0x20, + 0x6F, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x28, 0x74, 0x65, 0x78, 0x74, + 0x75, 0x72, 0x65, 0x28, 0x75, 0x5F, 0x41, 0x74, 0x6C, 0x61, 0x73, 0x2C, + 0x20, 0x75, 0x76, 0x55, 0x70, 0x29, 0x29, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x6F, 0x6C, + 0x6F, 0x72, 0x20, 0x3D, 0x20, 0x75, 0x5F, 0x46, 0x6F, 0x6E, 0x74, 0x43, + 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x72, 0x67, 0x62, 0x3B, 0x0D, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x20, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x3D, 0x20, 0x66, 0x61, 0x6C, 0x73, + 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, - 0x20, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5F, 0x74, 0x6F, 0x6C, 0x65, 0x72, - 0x61, 0x6E, 0x63, 0x65, 0x20, 0x3D, 0x20, 0x31, 0x2E, 0x30, 0x3B, 0x0D, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x20, 0x66, - 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x68, 0x5F, 0x74, 0x6F, 0x6C, 0x65, 0x72, - 0x61, 0x6E, 0x63, 0x65, 0x20, 0x3D, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6E, - 0x73, 0x74, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x20, 0x73, 0x75, 0x62, 0x70, - 0x69, 0x78, 0x65, 0x6C, 0x20, 0x3D, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, - 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, - 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x73, 0x75, 0x62, 0x70, 0x69, - 0x78, 0x65, 0x6C, 0x5F, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, - 0x64, 0x20, 0x3D, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x63, 0x75, 0x72, 0x76, 0x65, 0x41, - 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x3D, 0x20, 0x75, 0x70, 0x20, 0x2D, - 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x20, 0x6D, 0x69, 0x64, 0x20, 0x3D, - 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x20, 0x3C, 0x20, 0x28, 0x73, - 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x5F, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6F, 0x6C, 0x64, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x74, 0x20, - 0x3D, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x3C, 0x20, 0x73, 0x75, 0x62, - 0x70, 0x69, 0x78, 0x65, 0x6C, 0x5F, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, - 0x6F, 0x6C, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x74, 0x20, 0x3D, 0x20, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3C, 0x20, 0x73, 0x75, 0x62, 0x70, - 0x69, 0x78, 0x65, 0x6C, 0x5F, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6F, - 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, - 0x73, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x20, 0x26, 0x26, 0x28, - 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x20, 0x3C, 0x20, 0x73, 0x75, 0x62, - 0x70, 0x69, 0x78, 0x65, 0x6C, 0x5F, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6F, 0x6C, 0x64, 0x29, 0x20, 0x26, 0x26, 0x20, 0x63, 0x75, 0x72, 0x76, - 0x65, 0x41, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x3C, 0x20, 0x63, 0x75, - 0x72, 0x76, 0x65, 0x5F, 0x74, 0x6F, 0x6C, 0x65, 0x72, 0x61, 0x6E, 0x63, - 0x65, 0x29, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x7B, 0x0D, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, - 0x2E, 0x72, 0x20, 0x3D, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, - 0x72, 0x2E, 0x67, 0x20, 0x3D, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, - 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x62, 0x20, 0x3D, 0x20, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x7D, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x46, 0x72, - 0x61, 0x67, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x3D, 0x20, 0x76, 0x65, - 0x63, 0x34, 0x28, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x72, 0x67, 0x62, - 0x2C, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x29, 0x3B, 0x0D, 0x0A, - 0x7D, + 0x20, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x20, 0x3D, 0x20, 0x31, 0x2E, 0x36, + 0x36, 0x36, 0x36, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, + 0x6F, 0x61, 0x74, 0x20, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5F, 0x74, 0x6F, + 0x6C, 0x65, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x3D, 0x20, 0x75, 0x5F, + 0x43, 0x75, 0x72, 0x76, 0x65, 0x54, 0x6F, 0x6C, 0x65, 0x72, 0x61, 0x6E, + 0x63, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6E, + 0x73, 0x74, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x68, 0x5F, 0x74, + 0x6F, 0x6C, 0x65, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x3D, 0x20, 0x30, + 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x20, + 0x73, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x20, 0x3D, 0x20, 0x66, + 0x61, 0x6C, 0x73, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x73, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, + 0x6C, 0x5F, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, 0x20, + 0x3D, 0x20, 0x75, 0x5F, 0x53, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x63, 0x75, + 0x72, 0x76, 0x65, 0x41, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x3D, 0x20, + 0x75, 0x70, 0x20, 0x2D, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x3B, + 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x20, 0x6D, + 0x69, 0x64, 0x20, 0x3D, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x20, + 0x3C, 0x20, 0x28, 0x73, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x5F, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, 0x29, 0x3B, 0x0D, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x20, 0x6C, 0x65, + 0x66, 0x74, 0x74, 0x20, 0x3D, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x3C, + 0x20, 0x73, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x5F, 0x74, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x74, 0x20, 0x3D, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3C, 0x20, + 0x73, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x5F, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x28, 0x73, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, + 0x20, 0x26, 0x26, 0x28, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x20, 0x3C, + 0x20, 0x73, 0x75, 0x62, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x5F, 0x74, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, 0x29, 0x20, 0x26, 0x26, 0x20, + 0x63, 0x75, 0x72, 0x76, 0x65, 0x41, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x20, + 0x3C, 0x20, 0x63, 0x75, 0x72, 0x76, 0x65, 0x5F, 0x74, 0x6F, 0x6C, 0x65, + 0x72, 0x61, 0x6E, 0x63, 0x65, 0x29, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, + 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x72, 0x20, 0x3D, 0x20, 0x6C, 0x65, 0x66, + 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x67, 0x20, 0x3D, 0x20, 0x6D, 0x69, + 0x64, 0x64, 0x6C, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x2E, 0x62, 0x20, 0x3D, + 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x7D, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x20, + 0x3D, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6F, 0x6C, 0x6F, 0x72, + 0x2E, 0x72, 0x67, 0x62, 0x2C, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, + 0x29, 0x3B, 0x0D, 0x0A, 0x7D, }; unsigned int Resources_Shaders_ui_text_shader_len = sizeof(Resources_Shaders_ui_text_shader); diff --git a/Nuake/src/UI/Renderer.cpp b/Nuake/src/UI/Renderer.cpp index 88a1cc33..76f25ec5 100644 --- a/Nuake/src/UI/Renderer.cpp +++ b/Nuake/src/UI/Renderer.cpp @@ -19,6 +19,9 @@ namespace NuakeUI }; std::shared_ptr Renderer::mDefaultFont; + float Renderer::subpixelAmount = 1.3333f ; + float Renderer::curveTolerance = 1.0f; + float Renderer::subpixelThreshold = 0.5f; Renderer::Renderer() { @@ -162,7 +165,10 @@ namespace NuakeUI { "u_SDF_BorderSize", 0.0f}, { "u_FontColor", nodeStyle.FontColor }, { "u_PxRange", fontSize }, - { "u_SDF_BorderSize", {1.0, 1.0}} + { "u_SDF_BorderSize", {1.0, 1.0}}, + { "u_SubpixelThreshold", subpixelThreshold}, + { "u_CurveTolerance", curveTolerance}, + { "u_SubpixelAmount", subpixelAmount} }); mVertexArray->Bind(); diff --git a/Nuake/src/UI/Renderer.h b/Nuake/src/UI/Renderer.h index 1030e118..b05f2d4a 100644 --- a/Nuake/src/UI/Renderer.h +++ b/Nuake/src/UI/Renderer.h @@ -32,12 +32,20 @@ namespace NuakeUI void ReloadShaders(); static std::shared_ptr mDefaultFont; + + static float subpixelAmount; + static float curveTolerance; + static float subpixelThreshold; + + Renderer(); + ~Renderer() = default; + private: Vector2 mSize; Matrix4 mView; - Renderer(); - ~Renderer() = default; + + Shader* mShader; Shader* mSDFShader;