switch slime lut to a texture

pull/3130/head
water 2023-11-02 19:09:41 -04:00
parent b82aab4f40
commit 94c4f8782e
5 changed files with 111 additions and 261 deletions

View File

@ -19,7 +19,7 @@
"disassemble_code": false,
// Run the decompiler
"decompile_code": true,
"decompile_code": false,
"find_functions": true,

View File

@ -5,6 +5,7 @@
#include "common/util/FileUtil.h"
#include "common/util/Timer.h"
#include "game/graphics/opengl_renderer/slime_lut.h"
#include "game/graphics/texture/TexturePool.h"
#include "third-party/imgui/imgui.h"
@ -428,6 +429,19 @@ TextureAnimator::TextureAnimator(ShaderLibrary& shaders, const tfrag3::Level* co
glGenerateMipmap(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
// create the slime LUT texture
glGenTextures(1, &m_slime_lut_texture);
glBindTexture(GL_TEXTURE_1D, m_slime_lut_texture);
std::vector<u8> slime_data;
for (auto x : kSlimeLutData) {
slime_data.push_back(x * 255);
}
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, 256, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV,
slime_data.data());
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glBindTexture(GL_TEXTURE_2D, 0);
shader.activate();
// generate CLUT table.
@ -2751,6 +2765,10 @@ void TextureAnimator::run_slime(const SlimeInput& input) {
float uv[2 * 4] = {0, 0, 1, 0, 1, 1, 0, 1};
glUniform2fv(m_uniforms.uvs, 4, uv);
glActiveTexture(GL_TEXTURE10);
glBindTexture(GL_TEXTURE_1D, m_slime_lut_texture);
glActiveTexture(GL_TEXTURE0);
// Anim 1:
// noise (16x16)
// while (noise_layer_idx) {

View File

@ -348,6 +348,7 @@ class TextureAnimator {
GLuint m_shader_id;
GLuint m_dummy_texture;
GLuint m_slime_lut_texture;
u8 m_index_to_clut_addr[256];
OpenGLTexturePool m_opengl_texture_pool;

View File

@ -14,6 +14,7 @@ uniform float slime_scroll;
in vec2 uv;
uniform sampler2D tex_T0;
uniform sampler1D tex_T10;
float cloud_lookup(float v, float minimum, float maximum) {
maximum = max(minimum, maximum);
@ -29,265 +30,6 @@ float cloud_lookup(float v, float minimum, float maximum) {
return sin_alpha * sin_alpha;
}
vec4 slime_lut[256] = vec4[](
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3254, 0.3333, 0.0745, 0.5019),
vec4(0.3333, 0.3450, 0.0745, 0.5019),
vec4(0.3411, 0.3607, 0.0745, 0.5019),
vec4(0.3490, 0.3725, 0.0745, 0.5019),
vec4(0.3568, 0.3882, 0.0745, 0.5019),
vec4(0.3607, 0.4000, 0.0745, 0.5019),
vec4(0.3686, 0.4117, 0.0745, 0.5019),
vec4(0.3764, 0.4274, 0.0745, 0.5019),
vec4(0.3764, 0.4274, 0.0784, 0.5019),
vec4(0.3686, 0.4117, 0.0745, 0.5019),
vec4(0.3607, 0.4000, 0.0745, 0.5019),
vec4(0.3529, 0.3843, 0.0745, 0.5019),
vec4(0.3490, 0.3725, 0.0745, 0.5019),
vec4(0.3411, 0.3607, 0.0745, 0.5019),
vec4(0.3333, 0.3450, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3215, 0.0745, 0.5019),
vec4(0.3215, 0.3254, 0.0705, 0.5019),
vec4(0.3254, 0.3294, 0.0705, 0.5019),
vec4(0.3294, 0.3333, 0.0705, 0.5019),
vec4(0.3333, 0.3372, 0.0705, 0.5019),
vec4(0.3333, 0.3450, 0.0705, 0.5019),
vec4(0.3372, 0.3490, 0.0705, 0.5019),
vec4(0.3411, 0.3529, 0.0705, 0.5019),
vec4(0.3450, 0.3568, 0.0705, 0.5019),
vec4(0.3450, 0.3607, 0.0705, 0.5019),
vec4(0.3490, 0.3686, 0.0705, 0.5019),
vec4(0.3529, 0.3725, 0.0705, 0.5019),
vec4(0.3568, 0.3764, 0.0705, 0.5019),
vec4(0.3607, 0.3803, 0.0705, 0.5019),
vec4(0.3607, 0.3843, 0.0705, 0.5019),
vec4(0.3647, 0.3921, 0.0705, 0.5019),
vec4(0.3686, 0.3960, 0.0705, 0.5019),
vec4(0.3725, 0.4000, 0.0705, 0.5019),
vec4(0.3725, 0.4039, 0.0705, 0.5019),
vec4(0.3764, 0.4078, 0.0705, 0.5019),
vec4(0.3803, 0.4156, 0.0705, 0.5019),
vec4(0.3843, 0.4196, 0.0705, 0.5019),
vec4(0.3882, 0.4235, 0.0705, 0.5019),
vec4(0.3882, 0.4274, 0.0705, 0.5019),
vec4(0.3921, 0.4313, 0.0705, 0.5019),
vec4(0.3960, 0.4392, 0.0705, 0.5019),
vec4(0.4000, 0.4431, 0.0705, 0.5019),
vec4(0.4000, 0.4470, 0.0705, 0.5019),
vec4(0.4039, 0.4509, 0.0705, 0.5019),
vec4(0.4078, 0.4549, 0.0705, 0.5019),
vec4(0.4117, 0.4627, 0.0705, 0.5019),
vec4(0.4117, 0.4666, 0.0705, 0.5019),
vec4(0.4235, 0.4862, 0.0705, 0.5019),
vec4(0.4509, 0.5254, 0.0705, 0.5019),
vec4(0.4784, 0.5686, 0.0705, 0.5019),
vec4(0.5058, 0.6117, 0.0666, 0.5019),
vec4(0.5333, 0.6509, 0.0666, 0.5019),
vec4(0.5607, 0.6941, 0.0666, 0.5019),
vec4(0.5882, 0.7372, 0.0666, 0.5019),
vec4(0.6196, 0.7803, 0.0666, 0.5019),
vec4(0.6196, 0.7803, 0.0666, 0.5019),
vec4(0.6000, 0.7529, 0.0666, 0.5019),
vec4(0.5803, 0.7254, 0.0666, 0.5019),
vec4(0.5647, 0.6980, 0.0666, 0.5019),
vec4(0.5450, 0.6705, 0.0666, 0.5019),
vec4(0.5294, 0.6431, 0.0666, 0.5019),
vec4(0.5098, 0.6156, 0.0705, 0.5019),
vec4(0.4745, 0.5607, 0.0705, 0.5019),
vec4(0.4666, 0.5450, 0.0705, 0.5019),
vec4(0.4666, 0.5529, 0.0705, 0.5019),
vec4(0.4705, 0.5568, 0.0705, 0.5019),
vec4(0.4745, 0.5607, 0.0705, 0.5019),
vec4(0.4784, 0.5647, 0.0705, 0.5019),
vec4(0.4784, 0.5686, 0.0705, 0.5019),
vec4(0.4823, 0.5764, 0.0705, 0.5019),
vec4(0.4862, 0.5803, 0.0705, 0.5019),
vec4(0.4901, 0.5843, 0.0705, 0.5019),
vec4(0.4941, 0.5882, 0.0705, 0.5019),
vec4(0.4941, 0.5921, 0.0705, 0.5019),
vec4(0.4980, 0.6000, 0.0705, 0.5019),
vec4(0.5019, 0.6039, 0.0705, 0.5019),
vec4(0.5058, 0.6078, 0.0705, 0.5019),
vec4(0.5058, 0.6117, 0.0705, 0.5019),
vec4(0.5098, 0.6156, 0.0705, 0.5019),
vec4(0.5137, 0.6235, 0.0705, 0.5019),
vec4(0.5176, 0.6274, 0.0705, 0.5019),
vec4(0.5215, 0.6313, 0.0705, 0.5019),
vec4(0.5215, 0.6352, 0.0705, 0.5019),
vec4(0.5254, 0.6392, 0.0705, 0.5019),
vec4(0.5294, 0.6470, 0.0705, 0.5019),
vec4(0.5333, 0.6509, 0.0705, 0.5019),
vec4(0.5333, 0.6549, 0.0705, 0.5019),
vec4(0.5372, 0.6588, 0.0705, 0.5019),
vec4(0.5411, 0.6627, 0.0705, 0.5019),
vec4(0.5450, 0.6705, 0.0705, 0.5019),
vec4(0.5450, 0.6745, 0.0705, 0.5019),
vec4(0.5490, 0.6784, 0.0705, 0.5019),
vec4(0.5529, 0.6823, 0.0705, 0.5019),
vec4(0.5568, 0.6862, 0.0705, 0.5019),
vec4(0.5607, 0.6941, 0.0705, 0.5019),
vec4(0.5607, 0.6980, 0.0705, 0.5019),
vec4(0.5725, 0.7098, 0.0666, 0.5019),
vec4(0.5803, 0.7254, 0.0666, 0.5019),
vec4(0.5882, 0.7372, 0.0666, 0.5019),
vec4(0.6000, 0.7490, 0.0666, 0.5019),
vec4(0.6078, 0.7647, 0.0666, 0.5019),
vec4(0.6156, 0.7764, 0.0666, 0.5019),
vec4(0.6274, 0.7921, 0.0666, 0.5019),
vec4(0.6274, 0.7921, 0.0666, 0.5019),
vec4(0.6196, 0.7803, 0.0666, 0.5019),
vec4(0.6117, 0.7686, 0.0666, 0.5019),
vec4(0.6039, 0.7607, 0.0666, 0.5019),
vec4(0.5960, 0.7490, 0.0666, 0.5019),
vec4(0.5882, 0.7411, 0.0705, 0.5019),
vec4(0.5803, 0.7294, 0.0705, 0.5019),
vec4(0.5647, 0.7098, 0.0705, 0.5019),
vec4(0.5647, 0.7098, 0.0705, 0.5019),
vec4(0.5607, 0.7058, 0.0705, 0.5019),
vec4(0.5568, 0.7019, 0.0705, 0.5019),
vec4(0.5529, 0.6980, 0.0705, 0.5019),
vec4(0.5529, 0.6941, 0.0705, 0.5019),
vec4(0.5490, 0.6901, 0.0745, 0.5019),
vec4(0.5450, 0.6862, 0.0745, 0.5019),
vec4(0.5411, 0.6823, 0.0745, 0.5019),
vec4(0.5411, 0.6823, 0.0745, 0.5019),
vec4(0.5372, 0.6784, 0.0745, 0.5019),
vec4(0.5333, 0.6745, 0.0745, 0.5019),
vec4(0.5294, 0.6705, 0.0745, 0.5019),
vec4(0.5294, 0.6666, 0.0745, 0.5019),
vec4(0.5254, 0.6627, 0.0745, 0.5019),
vec4(0.5215, 0.6588, 0.0745, 0.5019),
vec4(0.5176, 0.6549, 0.0745, 0.5019),
vec4(0.5176, 0.6549, 0.0745, 0.5019),
vec4(0.5137, 0.6509, 0.0745, 0.5019),
vec4(0.5098, 0.6470, 0.0784, 0.5019),
vec4(0.5058, 0.6431, 0.0784, 0.5019),
vec4(0.5058, 0.6392, 0.0784, 0.5019),
vec4(0.5019, 0.6352, 0.0784, 0.5019),
vec4(0.4980, 0.6313, 0.0784, 0.5019),
vec4(0.4941, 0.6274, 0.0784, 0.5019),
vec4(0.4941, 0.6274, 0.0784, 0.5019),
vec4(0.4901, 0.6235, 0.0784, 0.5019),
vec4(0.4862, 0.6196, 0.0784, 0.5019),
vec4(0.4823, 0.6156, 0.0784, 0.5019),
vec4(0.4823, 0.6117, 0.0784, 0.5019),
vec4(0.4784, 0.6078, 0.0784, 0.5019),
vec4(0.4745, 0.6039, 0.0784, 0.5019),
vec4(0.4745, 0.6039, 0.0823, 0.5019),
vec4(0.4745, 0.6039, 0.0823, 0.5019),
vec4(0.4862, 0.6156, 0.0784, 0.5019),
vec4(0.4980, 0.6313, 0.0784, 0.5019),
vec4(0.5098, 0.6470, 0.0784, 0.5019),
vec4(0.5215, 0.6588, 0.0745, 0.5019),
vec4(0.5333, 0.6745, 0.0745, 0.5019),
vec4(0.5450, 0.6901, 0.0745, 0.5019),
vec4(0.5568, 0.7019, 0.0705, 0.5019),
vec4(0.5686, 0.7176, 0.0705, 0.5019),
vec4(0.5803, 0.7333, 0.0705, 0.5019),
vec4(0.5921, 0.7490, 0.0705, 0.5019),
vec4(0.6039, 0.7607, 0.0666, 0.5019),
vec4(0.6156, 0.7764, 0.0666, 0.5019),
vec4(0.6274, 0.7921, 0.0666, 0.5019),
vec4(0.6392, 0.8039, 0.0627, 0.5019),
vec4(0.6509, 0.8196, 0.0627, 0.5019),
vec4(0.6745, 0.8509, 0.0627, 0.5019),
vec4(0.6705, 0.8470, 0.0627, 0.5019),
vec4(0.6666, 0.8431, 0.0627, 0.5019),
vec4(0.6627, 0.8392, 0.0627, 0.5019),
vec4(0.6588, 0.8352, 0.0627, 0.5019),
vec4(0.6588, 0.8313, 0.0627, 0.5019),
vec4(0.6549, 0.8274, 0.0627, 0.5019),
vec4(0.6509, 0.8235, 0.0627, 0.5019),
vec4(0.6470, 0.8196, 0.0627, 0.5019),
vec4(0.6431, 0.8156, 0.0627, 0.5019),
vec4(0.6431, 0.8117, 0.0627, 0.5019),
vec4(0.6392, 0.8078, 0.0627, 0.5019),
vec4(0.6352, 0.8039, 0.0666, 0.5019),
vec4(0.6313, 0.8000, 0.0666, 0.5019),
vec4(0.6274, 0.7960, 0.0666, 0.5019),
vec4(0.6274, 0.7921, 0.0666, 0.5019),
vec4(0.6235, 0.7882, 0.0666, 0.5019),
vec4(0.6196, 0.7843, 0.0666, 0.5019),
vec4(0.6156, 0.7803, 0.0666, 0.5019),
vec4(0.6156, 0.7764, 0.0666, 0.5019),
vec4(0.6117, 0.7725, 0.0666, 0.5019),
vec4(0.6078, 0.7686, 0.0666, 0.5019),
vec4(0.6039, 0.7647, 0.0666, 0.5019),
vec4(0.6000, 0.7607, 0.0666, 0.5019),
vec4(0.6000, 0.7568, 0.0666, 0.5019),
vec4(0.5960, 0.7529, 0.0705, 0.5019),
vec4(0.5921, 0.7490, 0.0705, 0.5019),
vec4(0.5882, 0.7450, 0.0705, 0.5019),
vec4(0.5843, 0.7411, 0.0705, 0.5019),
vec4(0.5843, 0.7372, 0.0705, 0.5019),
vec4(0.5803, 0.7333, 0.0705, 0.5019),
vec4(0.5764, 0.7294, 0.0705, 0.5019),
vec4(0.5725, 0.7254, 0.0705, 0.5019),
vec4(0.5686, 0.7215, 0.0705, 0.5019),
vec4(0.5686, 0.7176, 0.0705, 0.5019),
vec4(0.5647, 0.7137, 0.0705, 0.5019),
vec4(0.5607, 0.7098, 0.0705, 0.5019),
vec4(0.5568, 0.7058, 0.0705, 0.5019),
vec4(0.5568, 0.7019, 0.0745, 0.5019),
vec4(0.5490, 0.6941, 0.0745, 0.5019),
vec4(0.5490, 0.6941, 0.0745, 0.5019),
vec4(0.5647, 0.7137, 0.0705, 0.5019),
vec4(0.5803, 0.7294, 0.0705, 0.5019),
vec4(0.5921, 0.7490, 0.0705, 0.5019),
vec4(0.6078, 0.7647, 0.0666, 0.5019),
vec4(0.6196, 0.7843, 0.0666, 0.5019),
vec4(0.6352, 0.8000, 0.0666, 0.5019),
vec4(0.6509, 0.8196, 0.0666, 0.5019),
vec4(0.6509, 0.8196, 0.0666, 0.5019),
vec4(0.6392, 0.8039, 0.0666, 0.5019),
vec4(0.6274, 0.7921, 0.0666, 0.5019),
vec4(0.6156, 0.7764, 0.0666, 0.5019),
vec4(0.6078, 0.7647, 0.0705, 0.5019),
vec4(0.5960, 0.7490, 0.0705, 0.5019),
vec4(0.5843, 0.7372, 0.0705, 0.5019),
vec4(0.5647, 0.7098, 0.0745, 0.5019),
vec4(0.5647, 0.7098, 0.0745, 0.5019),
vec4(0.5647, 0.7098, 0.0745, 0.5019),
vec4(0.5647, 0.7098, 0.0745, 0.5019),
vec4(0.5647, 0.7098, 0.0745, 0.5019),
vec4(0.5647, 0.7098, 0.0745, 0.5019),
vec4(0.5647, 0.7098, 0.0745, 0.5019),
vec4(0.5647, 0.7098, 0.0745, 0.5019),
vec4(0.5647, 0.7098, 0.0745, 0.5019)
);
void main() {
if (enable_tex == 1) {
vec4 tex_color = texture(tex_T0, uv);
@ -311,7 +53,7 @@ void main() {
} else if (enable_tex == 3) {
// cloud version
vec4 tex_color = texture(tex_T0, uv + vec2(0, slime_scroll));
color = slime_lut[int(tex_color.r * 255.f)];
color = texelFetch(tex_T10, int(tex_color.r * 255.f), 0);
} else {
color = (rgba / 128.);
}

View File

@ -0,0 +1,89 @@
#pragma once
constexpr float kSlimeLutData[4 * 256] = {
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3254, 0.3333, 0.0745, 0.5019,
0.3333, 0.3450, 0.0745, 0.5019, 0.3411, 0.3607, 0.0745, 0.5019, 0.3490, 0.3725, 0.0745, 0.5019,
0.3568, 0.3882, 0.0745, 0.5019, 0.3607, 0.4000, 0.0745, 0.5019, 0.3686, 0.4117, 0.0745, 0.5019,
0.3764, 0.4274, 0.0745, 0.5019, 0.3764, 0.4274, 0.0784, 0.5019, 0.3686, 0.4117, 0.0745, 0.5019,
0.3607, 0.4000, 0.0745, 0.5019, 0.3529, 0.3843, 0.0745, 0.5019, 0.3490, 0.3725, 0.0745, 0.5019,
0.3411, 0.3607, 0.0745, 0.5019, 0.3333, 0.3450, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3254, 0.0705, 0.5019, 0.3254, 0.3294, 0.0705, 0.5019,
0.3294, 0.3333, 0.0705, 0.5019, 0.3333, 0.3372, 0.0705, 0.5019, 0.3333, 0.3450, 0.0705, 0.5019,
0.3372, 0.3490, 0.0705, 0.5019, 0.3411, 0.3529, 0.0705, 0.5019, 0.3450, 0.3568, 0.0705, 0.5019,
0.3450, 0.3607, 0.0705, 0.5019, 0.3490, 0.3686, 0.0705, 0.5019, 0.3529, 0.3725, 0.0705, 0.5019,
0.3568, 0.3764, 0.0705, 0.5019, 0.3607, 0.3803, 0.0705, 0.5019, 0.3607, 0.3843, 0.0705, 0.5019,
0.3647, 0.3921, 0.0705, 0.5019, 0.3686, 0.3960, 0.0705, 0.5019, 0.3725, 0.4000, 0.0705, 0.5019,
0.3725, 0.4039, 0.0705, 0.5019, 0.3764, 0.4078, 0.0705, 0.5019, 0.3803, 0.4156, 0.0705, 0.5019,
0.3843, 0.4196, 0.0705, 0.5019, 0.3882, 0.4235, 0.0705, 0.5019, 0.3882, 0.4274, 0.0705, 0.5019,
0.3921, 0.4313, 0.0705, 0.5019, 0.3960, 0.4392, 0.0705, 0.5019, 0.4000, 0.4431, 0.0705, 0.5019,
0.4000, 0.4470, 0.0705, 0.5019, 0.4039, 0.4509, 0.0705, 0.5019, 0.4078, 0.4549, 0.0705, 0.5019,
0.4117, 0.4627, 0.0705, 0.5019, 0.4117, 0.4666, 0.0705, 0.5019, 0.4235, 0.4862, 0.0705, 0.5019,
0.4509, 0.5254, 0.0705, 0.5019, 0.4784, 0.5686, 0.0705, 0.5019, 0.5058, 0.6117, 0.0666, 0.5019,
0.5333, 0.6509, 0.0666, 0.5019, 0.5607, 0.6941, 0.0666, 0.5019, 0.5882, 0.7372, 0.0666, 0.5019,
0.6196, 0.7803, 0.0666, 0.5019, 0.6196, 0.7803, 0.0666, 0.5019, 0.6000, 0.7529, 0.0666, 0.5019,
0.5803, 0.7254, 0.0666, 0.5019, 0.5647, 0.6980, 0.0666, 0.5019, 0.5450, 0.6705, 0.0666, 0.5019,
0.5294, 0.6431, 0.0666, 0.5019, 0.5098, 0.6156, 0.0705, 0.5019, 0.4745, 0.5607, 0.0705, 0.5019,
0.4666, 0.5450, 0.0705, 0.5019, 0.4666, 0.5529, 0.0705, 0.5019, 0.4705, 0.5568, 0.0705, 0.5019,
0.4745, 0.5607, 0.0705, 0.5019, 0.4784, 0.5647, 0.0705, 0.5019, 0.4784, 0.5686, 0.0705, 0.5019,
0.4823, 0.5764, 0.0705, 0.5019, 0.4862, 0.5803, 0.0705, 0.5019, 0.4901, 0.5843, 0.0705, 0.5019,
0.4941, 0.5882, 0.0705, 0.5019, 0.4941, 0.5921, 0.0705, 0.5019, 0.4980, 0.6000, 0.0705, 0.5019,
0.5019, 0.6039, 0.0705, 0.5019, 0.5058, 0.6078, 0.0705, 0.5019, 0.5058, 0.6117, 0.0705, 0.5019,
0.5098, 0.6156, 0.0705, 0.5019, 0.5137, 0.6235, 0.0705, 0.5019, 0.5176, 0.6274, 0.0705, 0.5019,
0.5215, 0.6313, 0.0705, 0.5019, 0.5215, 0.6352, 0.0705, 0.5019, 0.5254, 0.6392, 0.0705, 0.5019,
0.5294, 0.6470, 0.0705, 0.5019, 0.5333, 0.6509, 0.0705, 0.5019, 0.5333, 0.6549, 0.0705, 0.5019,
0.5372, 0.6588, 0.0705, 0.5019, 0.5411, 0.6627, 0.0705, 0.5019, 0.5450, 0.6705, 0.0705, 0.5019,
0.5450, 0.6745, 0.0705, 0.5019, 0.5490, 0.6784, 0.0705, 0.5019, 0.5529, 0.6823, 0.0705, 0.5019,
0.5568, 0.6862, 0.0705, 0.5019, 0.5607, 0.6941, 0.0705, 0.5019, 0.5607, 0.6980, 0.0705, 0.5019,
0.5725, 0.7098, 0.0666, 0.5019, 0.5803, 0.7254, 0.0666, 0.5019, 0.5882, 0.7372, 0.0666, 0.5019,
0.6000, 0.7490, 0.0666, 0.5019, 0.6078, 0.7647, 0.0666, 0.5019, 0.6156, 0.7764, 0.0666, 0.5019,
0.6274, 0.7921, 0.0666, 0.5019, 0.6274, 0.7921, 0.0666, 0.5019, 0.6196, 0.7803, 0.0666, 0.5019,
0.6117, 0.7686, 0.0666, 0.5019, 0.6039, 0.7607, 0.0666, 0.5019, 0.5960, 0.7490, 0.0666, 0.5019,
0.5882, 0.7411, 0.0705, 0.5019, 0.5803, 0.7294, 0.0705, 0.5019, 0.5647, 0.7098, 0.0705, 0.5019,
0.5647, 0.7098, 0.0705, 0.5019, 0.5607, 0.7058, 0.0705, 0.5019, 0.5568, 0.7019, 0.0705, 0.5019,
0.5529, 0.6980, 0.0705, 0.5019, 0.5529, 0.6941, 0.0705, 0.5019, 0.5490, 0.6901, 0.0745, 0.5019,
0.5450, 0.6862, 0.0745, 0.5019, 0.5411, 0.6823, 0.0745, 0.5019, 0.5411, 0.6823, 0.0745, 0.5019,
0.5372, 0.6784, 0.0745, 0.5019, 0.5333, 0.6745, 0.0745, 0.5019, 0.5294, 0.6705, 0.0745, 0.5019,
0.5294, 0.6666, 0.0745, 0.5019, 0.5254, 0.6627, 0.0745, 0.5019, 0.5215, 0.6588, 0.0745, 0.5019,
0.5176, 0.6549, 0.0745, 0.5019, 0.5176, 0.6549, 0.0745, 0.5019, 0.5137, 0.6509, 0.0745, 0.5019,
0.5098, 0.6470, 0.0784, 0.5019, 0.5058, 0.6431, 0.0784, 0.5019, 0.5058, 0.6392, 0.0784, 0.5019,
0.5019, 0.6352, 0.0784, 0.5019, 0.4980, 0.6313, 0.0784, 0.5019, 0.4941, 0.6274, 0.0784, 0.5019,
0.4941, 0.6274, 0.0784, 0.5019, 0.4901, 0.6235, 0.0784, 0.5019, 0.4862, 0.6196, 0.0784, 0.5019,
0.4823, 0.6156, 0.0784, 0.5019, 0.4823, 0.6117, 0.0784, 0.5019, 0.4784, 0.6078, 0.0784, 0.5019,
0.4745, 0.6039, 0.0784, 0.5019, 0.4745, 0.6039, 0.0823, 0.5019, 0.4745, 0.6039, 0.0823, 0.5019,
0.4862, 0.6156, 0.0784, 0.5019, 0.4980, 0.6313, 0.0784, 0.5019, 0.5098, 0.6470, 0.0784, 0.5019,
0.5215, 0.6588, 0.0745, 0.5019, 0.5333, 0.6745, 0.0745, 0.5019, 0.5450, 0.6901, 0.0745, 0.5019,
0.5568, 0.7019, 0.0705, 0.5019, 0.5686, 0.7176, 0.0705, 0.5019, 0.5803, 0.7333, 0.0705, 0.5019,
0.5921, 0.7490, 0.0705, 0.5019, 0.6039, 0.7607, 0.0666, 0.5019, 0.6156, 0.7764, 0.0666, 0.5019,
0.6274, 0.7921, 0.0666, 0.5019, 0.6392, 0.8039, 0.0627, 0.5019, 0.6509, 0.8196, 0.0627, 0.5019,
0.6745, 0.8509, 0.0627, 0.5019, 0.6705, 0.8470, 0.0627, 0.5019, 0.6666, 0.8431, 0.0627, 0.5019,
0.6627, 0.8392, 0.0627, 0.5019, 0.6588, 0.8352, 0.0627, 0.5019, 0.6588, 0.8313, 0.0627, 0.5019,
0.6549, 0.8274, 0.0627, 0.5019, 0.6509, 0.8235, 0.0627, 0.5019, 0.6470, 0.8196, 0.0627, 0.5019,
0.6431, 0.8156, 0.0627, 0.5019, 0.6431, 0.8117, 0.0627, 0.5019, 0.6392, 0.8078, 0.0627, 0.5019,
0.6352, 0.8039, 0.0666, 0.5019, 0.6313, 0.8000, 0.0666, 0.5019, 0.6274, 0.7960, 0.0666, 0.5019,
0.6274, 0.7921, 0.0666, 0.5019, 0.6235, 0.7882, 0.0666, 0.5019, 0.6196, 0.7843, 0.0666, 0.5019,
0.6156, 0.7803, 0.0666, 0.5019, 0.6156, 0.7764, 0.0666, 0.5019, 0.6117, 0.7725, 0.0666, 0.5019,
0.6078, 0.7686, 0.0666, 0.5019, 0.6039, 0.7647, 0.0666, 0.5019, 0.6000, 0.7607, 0.0666, 0.5019,
0.6000, 0.7568, 0.0666, 0.5019, 0.5960, 0.7529, 0.0705, 0.5019, 0.5921, 0.7490, 0.0705, 0.5019,
0.5882, 0.7450, 0.0705, 0.5019, 0.5843, 0.7411, 0.0705, 0.5019, 0.5843, 0.7372, 0.0705, 0.5019,
0.5803, 0.7333, 0.0705, 0.5019, 0.5764, 0.7294, 0.0705, 0.5019, 0.5725, 0.7254, 0.0705, 0.5019,
0.5686, 0.7215, 0.0705, 0.5019, 0.5686, 0.7176, 0.0705, 0.5019, 0.5647, 0.7137, 0.0705, 0.5019,
0.5607, 0.7098, 0.0705, 0.5019, 0.5568, 0.7058, 0.0705, 0.5019, 0.5568, 0.7019, 0.0745, 0.5019,
0.5490, 0.6941, 0.0745, 0.5019, 0.5490, 0.6941, 0.0745, 0.5019, 0.5647, 0.7137, 0.0705, 0.5019,
0.5803, 0.7294, 0.0705, 0.5019, 0.5921, 0.7490, 0.0705, 0.5019, 0.6078, 0.7647, 0.0666, 0.5019,
0.6196, 0.7843, 0.0666, 0.5019, 0.6352, 0.8000, 0.0666, 0.5019, 0.6509, 0.8196, 0.0666, 0.5019,
0.6509, 0.8196, 0.0666, 0.5019, 0.6392, 0.8039, 0.0666, 0.5019, 0.6274, 0.7921, 0.0666, 0.5019,
0.6156, 0.7764, 0.0666, 0.5019, 0.6078, 0.7647, 0.0705, 0.5019, 0.5960, 0.7490, 0.0705, 0.5019,
0.5843, 0.7372, 0.0705, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019,
0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019,
0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019,
0.5647, 0.7098, 0.0745, 0.5019};