summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TaSTT.shader1489
-rw-r--r--font-0.pngbin0 -> 26850 bytes
-rw-r--r--font-0.png.meta116
-rw-r--r--font-1.pngbin0 -> 134918 bytes
-rw-r--r--font-1.png.meta116
-rw-r--r--font-2.pngbin0 -> 303593 bytes
-rw-r--r--font-2.png.meta116
-rw-r--r--font-3.pngbin0 -> 308942 bytes
-rw-r--r--font-3.png.meta116
-rw-r--r--font-4.pngbin0 -> 302029 bytes
-rw-r--r--font-4.png.meta116
-rw-r--r--font-5.pngbin0 -> 50643 bytes
-rw-r--r--font-5.png.meta116
-rw-r--r--font-6.pngbin0 -> 59629 bytes
-rw-r--r--font-6.png.meta116
-rw-r--r--generate_fonts.py21
-rw-r--r--generate_params.py7
-rw-r--r--generate_utils.py47
-rw-r--r--libtastt.py126
-rw-r--r--osc_ctrl.py31
-rw-r--r--transcribe.py4
21 files changed, 1876 insertions, 661 deletions
diff --git a/TaSTT.shader b/TaSTT.shader
index 6f555cf..8454035 100644
--- a/TaSTT.shader
+++ b/TaSTT.shader
@@ -2,191 +2,367 @@
{
Properties
{
- _Font_0x0000_0x1FFF ("Texture", 2D) = "white" {}
- _Font_0x2000_0x3FFF ("Texture", 2D) = "white" {}
- _Font_0x4000_0x5FFF ("Texture", 2D) = "white" {}
- _Font_0x6000_0x7FFF ("Texture", 2D) = "white" {}
- _Font_0x8000_0x9FFF ("Texture", 2D) = "white" {}
- _Font_0xA000_0xBFFF ("Texture", 2D) = "white" {}
- _Font_0xC000_0xDFFF ("Texture", 2D) = "white" {}
+ _Font_0x0000_0x1FFF ("Font 0 (unicode 0x0000 - 0x1FFFF)", 2D) = "white" {}
+ _Font_0x2000_0x3FFF ("Font 1 (unicode 0x2000 - 0x3FFFF)", 2D) = "white" {}
+ _Font_0x4000_0x5FFF ("Font 2 (unicode 0x4000 - 0x5FFFF)", 2D) = "white" {}
+ _Font_0x6000_0x7FFF ("Font 3 (unicode 0x6000 - 0x7FFFF)", 2D) = "white" {}
+ _Font_0x8000_0x9FFF ("Font 4 (unicode 0x8000 - 0x9FFFF)", 2D) = "white" {}
+ _Font_0xA000_0xBFFF ("Font 5 (unicode 0xA000 - 0xBFFFF)", 2D) = "white" {}
+ _Font_0xC000_0xDFFF ("Font 6 (unicode 0xC000 - 0xDFFFF)", 2D) = "white" {}
// software "engineering" LULW
- _Letter_Row00_Col00("_Letter_Row00_Col00", float) = 0
- _Letter_Row00_Col01("_Letter_Row00_Col01", float) = 0
- _Letter_Row00_Col02("_Letter_Row00_Col02", float) = 0
- _Letter_Row00_Col03("_Letter_Row00_Col03", float) = 0
- _Letter_Row00_Col04("_Letter_Row00_Col04", float) = 0
- _Letter_Row00_Col05("_Letter_Row00_Col05", float) = 0
- _Letter_Row00_Col06("_Letter_Row00_Col06", float) = 0
- _Letter_Row00_Col07("_Letter_Row00_Col07", float) = 0
- _Letter_Row00_Col08("_Letter_Row00_Col08", float) = 0
- _Letter_Row00_Col09("_Letter_Row00_Col09", float) = 0
- _Letter_Row00_Col10("_Letter_Row00_Col10", float) = 0
- _Letter_Row00_Col11("_Letter_Row00_Col11", float) = 0
- _Letter_Row00_Col12("_Letter_Row00_Col12", float) = 0
- _Letter_Row00_Col13("_Letter_Row00_Col13", float) = 0
- _Letter_Row00_Col14("_Letter_Row00_Col14", float) = 0
- _Letter_Row00_Col15("_Letter_Row00_Col15", float) = 0
- _Letter_Row00_Col16("_Letter_Row00_Col16", float) = 0
- _Letter_Row00_Col17("_Letter_Row00_Col17", float) = 0
- _Letter_Row00_Col18("_Letter_Row00_Col18", float) = 0
- _Letter_Row00_Col19("_Letter_Row00_Col19", float) = 0
- _Letter_Row00_Col20("_Letter_Row00_Col20", float) = 0
- _Letter_Row00_Col21("_Letter_Row00_Col21", float) = 0
- _Letter_Row00_Col22("_Letter_Row00_Col22", float) = 0
- _Letter_Row00_Col23("_Letter_Row00_Col23", float) = 0
- _Letter_Row00_Col24("_Letter_Row00_Col24", float) = 0
- _Letter_Row00_Col25("_Letter_Row00_Col25", float) = 0
- _Letter_Row00_Col26("_Letter_Row00_Col26", float) = 0
- _Letter_Row00_Col27("_Letter_Row00_Col27", float) = 0
- _Letter_Row00_Col28("_Letter_Row00_Col28", float) = 0
- _Letter_Row00_Col29("_Letter_Row00_Col29", float) = 0
- _Letter_Row00_Col30("_Letter_Row00_Col30", float) = 0
- _Letter_Row00_Col31("_Letter_Row00_Col31", float) = 0
- _Letter_Row00_Col32("_Letter_Row00_Col32", float) = 0
- _Letter_Row00_Col33("_Letter_Row00_Col33", float) = 0
- _Letter_Row00_Col34("_Letter_Row00_Col34", float) = 0
- _Letter_Row00_Col35("_Letter_Row00_Col35", float) = 0
- _Letter_Row00_Col36("_Letter_Row00_Col36", float) = 0
- _Letter_Row00_Col37("_Letter_Row00_Col37", float) = 0
- _Letter_Row00_Col38("_Letter_Row00_Col38", float) = 0
- _Letter_Row00_Col39("_Letter_Row00_Col39", float) = 0
- _Letter_Row00_Col40("_Letter_Row00_Col40", float) = 0
- _Letter_Row00_Col41("_Letter_Row00_Col41", float) = 0
- _Letter_Row00_Col42("_Letter_Row00_Col42", float) = 0
- _Letter_Row00_Col43("_Letter_Row00_Col43", float) = 0
- _Letter_Row01_Col00("_Letter_Row01_Col00", float) = 0
- _Letter_Row01_Col01("_Letter_Row01_Col01", float) = 0
- _Letter_Row01_Col02("_Letter_Row01_Col02", float) = 0
- _Letter_Row01_Col03("_Letter_Row01_Col03", float) = 0
- _Letter_Row01_Col04("_Letter_Row01_Col04", float) = 0
- _Letter_Row01_Col05("_Letter_Row01_Col05", float) = 0
- _Letter_Row01_Col06("_Letter_Row01_Col06", float) = 0
- _Letter_Row01_Col07("_Letter_Row01_Col07", float) = 0
- _Letter_Row01_Col08("_Letter_Row01_Col08", float) = 0
- _Letter_Row01_Col09("_Letter_Row01_Col09", float) = 0
- _Letter_Row01_Col10("_Letter_Row01_Col10", float) = 0
- _Letter_Row01_Col11("_Letter_Row01_Col11", float) = 0
- _Letter_Row01_Col12("_Letter_Row01_Col12", float) = 0
- _Letter_Row01_Col13("_Letter_Row01_Col13", float) = 0
- _Letter_Row01_Col14("_Letter_Row01_Col14", float) = 0
- _Letter_Row01_Col15("_Letter_Row01_Col15", float) = 0
- _Letter_Row01_Col16("_Letter_Row01_Col16", float) = 0
- _Letter_Row01_Col17("_Letter_Row01_Col17", float) = 0
- _Letter_Row01_Col18("_Letter_Row01_Col18", float) = 0
- _Letter_Row01_Col19("_Letter_Row01_Col19", float) = 0
- _Letter_Row01_Col20("_Letter_Row01_Col20", float) = 0
- _Letter_Row01_Col21("_Letter_Row01_Col21", float) = 0
- _Letter_Row01_Col22("_Letter_Row01_Col22", float) = 0
- _Letter_Row01_Col23("_Letter_Row01_Col23", float) = 0
- _Letter_Row01_Col24("_Letter_Row01_Col24", float) = 0
- _Letter_Row01_Col25("_Letter_Row01_Col25", float) = 0
- _Letter_Row01_Col26("_Letter_Row01_Col26", float) = 0
- _Letter_Row01_Col27("_Letter_Row01_Col27", float) = 0
- _Letter_Row01_Col28("_Letter_Row01_Col28", float) = 0
- _Letter_Row01_Col29("_Letter_Row01_Col29", float) = 0
- _Letter_Row01_Col30("_Letter_Row01_Col30", float) = 0
- _Letter_Row01_Col31("_Letter_Row01_Col31", float) = 0
- _Letter_Row01_Col32("_Letter_Row01_Col32", float) = 0
- _Letter_Row01_Col33("_Letter_Row01_Col33", float) = 0
- _Letter_Row01_Col34("_Letter_Row01_Col34", float) = 0
- _Letter_Row01_Col35("_Letter_Row01_Col35", float) = 0
- _Letter_Row01_Col36("_Letter_Row01_Col36", float) = 0
- _Letter_Row01_Col37("_Letter_Row01_Col37", float) = 0
- _Letter_Row01_Col38("_Letter_Row01_Col38", float) = 0
- _Letter_Row01_Col39("_Letter_Row01_Col39", float) = 0
- _Letter_Row01_Col40("_Letter_Row01_Col40", float) = 0
- _Letter_Row01_Col41("_Letter_Row01_Col41", float) = 0
- _Letter_Row01_Col42("_Letter_Row01_Col42", float) = 0
- _Letter_Row01_Col43("_Letter_Row01_Col43", float) = 0
- _Letter_Row02_Col00("_Letter_Row02_Col00", float) = 0
- _Letter_Row02_Col01("_Letter_Row02_Col01", float) = 0
- _Letter_Row02_Col02("_Letter_Row02_Col02", float) = 0
- _Letter_Row02_Col03("_Letter_Row02_Col03", float) = 0
- _Letter_Row02_Col04("_Letter_Row02_Col04", float) = 0
- _Letter_Row02_Col05("_Letter_Row02_Col05", float) = 0
- _Letter_Row02_Col06("_Letter_Row02_Col06", float) = 0
- _Letter_Row02_Col07("_Letter_Row02_Col07", float) = 0
- _Letter_Row02_Col08("_Letter_Row02_Col08", float) = 0
- _Letter_Row02_Col09("_Letter_Row02_Col09", float) = 0
- _Letter_Row02_Col10("_Letter_Row02_Col10", float) = 0
- _Letter_Row02_Col11("_Letter_Row02_Col11", float) = 0
- _Letter_Row02_Col12("_Letter_Row02_Col12", float) = 0
- _Letter_Row02_Col13("_Letter_Row02_Col13", float) = 0
- _Letter_Row02_Col14("_Letter_Row02_Col14", float) = 0
- _Letter_Row02_Col15("_Letter_Row02_Col15", float) = 0
- _Letter_Row02_Col16("_Letter_Row02_Col16", float) = 0
- _Letter_Row02_Col17("_Letter_Row02_Col17", float) = 0
- _Letter_Row02_Col18("_Letter_Row02_Col18", float) = 0
- _Letter_Row02_Col19("_Letter_Row02_Col19", float) = 0
- _Letter_Row02_Col20("_Letter_Row02_Col20", float) = 0
- _Letter_Row02_Col21("_Letter_Row02_Col21", float) = 0
- _Letter_Row02_Col22("_Letter_Row02_Col22", float) = 0
- _Letter_Row02_Col23("_Letter_Row02_Col23", float) = 0
- _Letter_Row02_Col24("_Letter_Row02_Col24", float) = 0
- _Letter_Row02_Col25("_Letter_Row02_Col25", float) = 0
- _Letter_Row02_Col26("_Letter_Row02_Col26", float) = 0
- _Letter_Row02_Col27("_Letter_Row02_Col27", float) = 0
- _Letter_Row02_Col28("_Letter_Row02_Col28", float) = 0
- _Letter_Row02_Col29("_Letter_Row02_Col29", float) = 0
- _Letter_Row02_Col30("_Letter_Row02_Col30", float) = 0
- _Letter_Row02_Col31("_Letter_Row02_Col31", float) = 0
- _Letter_Row02_Col32("_Letter_Row02_Col32", float) = 0
- _Letter_Row02_Col33("_Letter_Row02_Col33", float) = 0
- _Letter_Row02_Col34("_Letter_Row02_Col34", float) = 0
- _Letter_Row02_Col35("_Letter_Row02_Col35", float) = 0
- _Letter_Row02_Col36("_Letter_Row02_Col36", float) = 0
- _Letter_Row02_Col37("_Letter_Row02_Col37", float) = 0
- _Letter_Row02_Col38("_Letter_Row02_Col38", float) = 0
- _Letter_Row02_Col39("_Letter_Row02_Col39", float) = 0
- _Letter_Row02_Col40("_Letter_Row02_Col40", float) = 0
- _Letter_Row02_Col41("_Letter_Row02_Col41", float) = 0
- _Letter_Row02_Col42("_Letter_Row02_Col42", float) = 0
- _Letter_Row02_Col43("_Letter_Row02_Col43", float) = 0
- _Letter_Row03_Col00("_Letter_Row03_Col00", float) = 0
- _Letter_Row03_Col01("_Letter_Row03_Col01", float) = 0
- _Letter_Row03_Col02("_Letter_Row03_Col02", float) = 0
- _Letter_Row03_Col03("_Letter_Row03_Col03", float) = 0
- _Letter_Row03_Col04("_Letter_Row03_Col04", float) = 0
- _Letter_Row03_Col05("_Letter_Row03_Col05", float) = 0
- _Letter_Row03_Col06("_Letter_Row03_Col06", float) = 0
- _Letter_Row03_Col07("_Letter_Row03_Col07", float) = 0
- _Letter_Row03_Col08("_Letter_Row03_Col08", float) = 0
- _Letter_Row03_Col09("_Letter_Row03_Col09", float) = 0
- _Letter_Row03_Col10("_Letter_Row03_Col10", float) = 0
- _Letter_Row03_Col11("_Letter_Row03_Col11", float) = 0
- _Letter_Row03_Col12("_Letter_Row03_Col12", float) = 0
- _Letter_Row03_Col13("_Letter_Row03_Col13", float) = 0
- _Letter_Row03_Col14("_Letter_Row03_Col14", float) = 0
- _Letter_Row03_Col15("_Letter_Row03_Col15", float) = 0
- _Letter_Row03_Col16("_Letter_Row03_Col16", float) = 0
- _Letter_Row03_Col17("_Letter_Row03_Col17", float) = 0
- _Letter_Row03_Col18("_Letter_Row03_Col18", float) = 0
- _Letter_Row03_Col19("_Letter_Row03_Col19", float) = 0
- _Letter_Row03_Col20("_Letter_Row03_Col20", float) = 0
- _Letter_Row03_Col21("_Letter_Row03_Col21", float) = 0
- _Letter_Row03_Col22("_Letter_Row03_Col22", float) = 0
- _Letter_Row03_Col23("_Letter_Row03_Col23", float) = 0
- _Letter_Row03_Col24("_Letter_Row03_Col24", float) = 0
- _Letter_Row03_Col25("_Letter_Row03_Col25", float) = 0
- _Letter_Row03_Col26("_Letter_Row03_Col26", float) = 0
- _Letter_Row03_Col27("_Letter_Row03_Col27", float) = 0
- _Letter_Row03_Col28("_Letter_Row03_Col28", float) = 0
- _Letter_Row03_Col29("_Letter_Row03_Col29", float) = 0
- _Letter_Row03_Col30("_Letter_Row03_Col30", float) = 0
- _Letter_Row03_Col31("_Letter_Row03_Col31", float) = 0
- _Letter_Row03_Col32("_Letter_Row03_Col32", float) = 0
- _Letter_Row03_Col33("_Letter_Row03_Col33", float) = 0
- _Letter_Row03_Col34("_Letter_Row03_Col34", float) = 0
- _Letter_Row03_Col35("_Letter_Row03_Col35", float) = 0
- _Letter_Row03_Col36("_Letter_Row03_Col36", float) = 0
- _Letter_Row03_Col37("_Letter_Row03_Col37", float) = 0
- _Letter_Row03_Col38("_Letter_Row03_Col38", float) = 0
- _Letter_Row03_Col39("_Letter_Row03_Col39", float) = 0
- _Letter_Row03_Col40("_Letter_Row03_Col40", float) = 0
- _Letter_Row03_Col41("_Letter_Row03_Col41", float) = 0
- _Letter_Row03_Col42("_Letter_Row03_Col42", float) = 0
- _Letter_Row03_Col43("_Letter_Row03_Col43", float) = 0
+ _Letter_Row00_Col00_Byte0("_Letter_Row00_Col00_Byte0", float) = 0
+ _Letter_Row00_Col01_Byte0("_Letter_Row00_Col01_Byte0", float) = 0
+ _Letter_Row00_Col02_Byte0("_Letter_Row00_Col02_Byte0", float) = 0
+ _Letter_Row00_Col03_Byte0("_Letter_Row00_Col03_Byte0", float) = 0
+ _Letter_Row00_Col04_Byte0("_Letter_Row00_Col04_Byte0", float) = 0
+ _Letter_Row00_Col05_Byte0("_Letter_Row00_Col05_Byte0", float) = 0
+ _Letter_Row00_Col06_Byte0("_Letter_Row00_Col06_Byte0", float) = 0
+ _Letter_Row00_Col07_Byte0("_Letter_Row00_Col07_Byte0", float) = 0
+ _Letter_Row00_Col08_Byte0("_Letter_Row00_Col08_Byte0", float) = 0
+ _Letter_Row00_Col09_Byte0("_Letter_Row00_Col09_Byte0", float) = 0
+ _Letter_Row00_Col10_Byte0("_Letter_Row00_Col10_Byte0", float) = 0
+ _Letter_Row00_Col11_Byte0("_Letter_Row00_Col11_Byte0", float) = 0
+ _Letter_Row00_Col12_Byte0("_Letter_Row00_Col12_Byte0", float) = 0
+ _Letter_Row00_Col13_Byte0("_Letter_Row00_Col13_Byte0", float) = 0
+ _Letter_Row00_Col14_Byte0("_Letter_Row00_Col14_Byte0", float) = 0
+ _Letter_Row00_Col15_Byte0("_Letter_Row00_Col15_Byte0", float) = 0
+ _Letter_Row00_Col16_Byte0("_Letter_Row00_Col16_Byte0", float) = 0
+ _Letter_Row00_Col17_Byte0("_Letter_Row00_Col17_Byte0", float) = 0
+ _Letter_Row00_Col18_Byte0("_Letter_Row00_Col18_Byte0", float) = 0
+ _Letter_Row00_Col19_Byte0("_Letter_Row00_Col19_Byte0", float) = 0
+ _Letter_Row00_Col20_Byte0("_Letter_Row00_Col20_Byte0", float) = 0
+ _Letter_Row00_Col21_Byte0("_Letter_Row00_Col21_Byte0", float) = 0
+ _Letter_Row00_Col22_Byte0("_Letter_Row00_Col22_Byte0", float) = 0
+ _Letter_Row00_Col23_Byte0("_Letter_Row00_Col23_Byte0", float) = 0
+ _Letter_Row00_Col24_Byte0("_Letter_Row00_Col24_Byte0", float) = 0
+ _Letter_Row00_Col25_Byte0("_Letter_Row00_Col25_Byte0", float) = 0
+ _Letter_Row00_Col26_Byte0("_Letter_Row00_Col26_Byte0", float) = 0
+ _Letter_Row00_Col27_Byte0("_Letter_Row00_Col27_Byte0", float) = 0
+ _Letter_Row00_Col28_Byte0("_Letter_Row00_Col28_Byte0", float) = 0
+ _Letter_Row00_Col29_Byte0("_Letter_Row00_Col29_Byte0", float) = 0
+ _Letter_Row00_Col30_Byte0("_Letter_Row00_Col30_Byte0", float) = 0
+ _Letter_Row00_Col31_Byte0("_Letter_Row00_Col31_Byte0", float) = 0
+ _Letter_Row00_Col32_Byte0("_Letter_Row00_Col32_Byte0", float) = 0
+ _Letter_Row00_Col33_Byte0("_Letter_Row00_Col33_Byte0", float) = 0
+ _Letter_Row00_Col34_Byte0("_Letter_Row00_Col34_Byte0", float) = 0
+ _Letter_Row00_Col35_Byte0("_Letter_Row00_Col35_Byte0", float) = 0
+ _Letter_Row00_Col36_Byte0("_Letter_Row00_Col36_Byte0", float) = 0
+ _Letter_Row00_Col37_Byte0("_Letter_Row00_Col37_Byte0", float) = 0
+ _Letter_Row00_Col38_Byte0("_Letter_Row00_Col38_Byte0", float) = 0
+ _Letter_Row00_Col39_Byte0("_Letter_Row00_Col39_Byte0", float) = 0
+ _Letter_Row00_Col40_Byte0("_Letter_Row00_Col40_Byte0", float) = 0
+ _Letter_Row00_Col41_Byte0("_Letter_Row00_Col41_Byte0", float) = 0
+ _Letter_Row00_Col42_Byte0("_Letter_Row00_Col42_Byte0", float) = 0
+ _Letter_Row00_Col43_Byte0("_Letter_Row00_Col43_Byte0", float) = 0
+ _Letter_Row01_Col00_Byte0("_Letter_Row01_Col00_Byte0", float) = 0
+ _Letter_Row01_Col01_Byte0("_Letter_Row01_Col01_Byte0", float) = 0
+ _Letter_Row01_Col02_Byte0("_Letter_Row01_Col02_Byte0", float) = 0
+ _Letter_Row01_Col03_Byte0("_Letter_Row01_Col03_Byte0", float) = 0
+ _Letter_Row01_Col04_Byte0("_Letter_Row01_Col04_Byte0", float) = 0
+ _Letter_Row01_Col05_Byte0("_Letter_Row01_Col05_Byte0", float) = 0
+ _Letter_Row01_Col06_Byte0("_Letter_Row01_Col06_Byte0", float) = 0
+ _Letter_Row01_Col07_Byte0("_Letter_Row01_Col07_Byte0", float) = 0
+ _Letter_Row01_Col08_Byte0("_Letter_Row01_Col08_Byte0", float) = 0
+ _Letter_Row01_Col09_Byte0("_Letter_Row01_Col09_Byte0", float) = 0
+ _Letter_Row01_Col10_Byte0("_Letter_Row01_Col10_Byte0", float) = 0
+ _Letter_Row01_Col11_Byte0("_Letter_Row01_Col11_Byte0", float) = 0
+ _Letter_Row01_Col12_Byte0("_Letter_Row01_Col12_Byte0", float) = 0
+ _Letter_Row01_Col13_Byte0("_Letter_Row01_Col13_Byte0", float) = 0
+ _Letter_Row01_Col14_Byte0("_Letter_Row01_Col14_Byte0", float) = 0
+ _Letter_Row01_Col15_Byte0("_Letter_Row01_Col15_Byte0", float) = 0
+ _Letter_Row01_Col16_Byte0("_Letter_Row01_Col16_Byte0", float) = 0
+ _Letter_Row01_Col17_Byte0("_Letter_Row01_Col17_Byte0", float) = 0
+ _Letter_Row01_Col18_Byte0("_Letter_Row01_Col18_Byte0", float) = 0
+ _Letter_Row01_Col19_Byte0("_Letter_Row01_Col19_Byte0", float) = 0
+ _Letter_Row01_Col20_Byte0("_Letter_Row01_Col20_Byte0", float) = 0
+ _Letter_Row01_Col21_Byte0("_Letter_Row01_Col21_Byte0", float) = 0
+ _Letter_Row01_Col22_Byte0("_Letter_Row01_Col22_Byte0", float) = 0
+ _Letter_Row01_Col23_Byte0("_Letter_Row01_Col23_Byte0", float) = 0
+ _Letter_Row01_Col24_Byte0("_Letter_Row01_Col24_Byte0", float) = 0
+ _Letter_Row01_Col25_Byte0("_Letter_Row01_Col25_Byte0", float) = 0
+ _Letter_Row01_Col26_Byte0("_Letter_Row01_Col26_Byte0", float) = 0
+ _Letter_Row01_Col27_Byte0("_Letter_Row01_Col27_Byte0", float) = 0
+ _Letter_Row01_Col28_Byte0("_Letter_Row01_Col28_Byte0", float) = 0
+ _Letter_Row01_Col29_Byte0("_Letter_Row01_Col29_Byte0", float) = 0
+ _Letter_Row01_Col30_Byte0("_Letter_Row01_Col30_Byte0", float) = 0
+ _Letter_Row01_Col31_Byte0("_Letter_Row01_Col31_Byte0", float) = 0
+ _Letter_Row01_Col32_Byte0("_Letter_Row01_Col32_Byte0", float) = 0
+ _Letter_Row01_Col33_Byte0("_Letter_Row01_Col33_Byte0", float) = 0
+ _Letter_Row01_Col34_Byte0("_Letter_Row01_Col34_Byte0", float) = 0
+ _Letter_Row01_Col35_Byte0("_Letter_Row01_Col35_Byte0", float) = 0
+ _Letter_Row01_Col36_Byte0("_Letter_Row01_Col36_Byte0", float) = 0
+ _Letter_Row01_Col37_Byte0("_Letter_Row01_Col37_Byte0", float) = 0
+ _Letter_Row01_Col38_Byte0("_Letter_Row01_Col38_Byte0", float) = 0
+ _Letter_Row01_Col39_Byte0("_Letter_Row01_Col39_Byte0", float) = 0
+ _Letter_Row01_Col40_Byte0("_Letter_Row01_Col40_Byte0", float) = 0
+ _Letter_Row01_Col41_Byte0("_Letter_Row01_Col41_Byte0", float) = 0
+ _Letter_Row01_Col42_Byte0("_Letter_Row01_Col42_Byte0", float) = 0
+ _Letter_Row01_Col43_Byte0("_Letter_Row01_Col43_Byte0", float) = 0
+ _Letter_Row02_Col00_Byte0("_Letter_Row02_Col00_Byte0", float) = 0
+ _Letter_Row02_Col01_Byte0("_Letter_Row02_Col01_Byte0", float) = 0
+ _Letter_Row02_Col02_Byte0("_Letter_Row02_Col02_Byte0", float) = 0
+ _Letter_Row02_Col03_Byte0("_Letter_Row02_Col03_Byte0", float) = 0
+ _Letter_Row02_Col04_Byte0("_Letter_Row02_Col04_Byte0", float) = 0
+ _Letter_Row02_Col05_Byte0("_Letter_Row02_Col05_Byte0", float) = 0
+ _Letter_Row02_Col06_Byte0("_Letter_Row02_Col06_Byte0", float) = 0
+ _Letter_Row02_Col07_Byte0("_Letter_Row02_Col07_Byte0", float) = 0
+ _Letter_Row02_Col08_Byte0("_Letter_Row02_Col08_Byte0", float) = 0
+ _Letter_Row02_Col09_Byte0("_Letter_Row02_Col09_Byte0", float) = 0
+ _Letter_Row02_Col10_Byte0("_Letter_Row02_Col10_Byte0", float) = 0
+ _Letter_Row02_Col11_Byte0("_Letter_Row02_Col11_Byte0", float) = 0
+ _Letter_Row02_Col12_Byte0("_Letter_Row02_Col12_Byte0", float) = 0
+ _Letter_Row02_Col13_Byte0("_Letter_Row02_Col13_Byte0", float) = 0
+ _Letter_Row02_Col14_Byte0("_Letter_Row02_Col14_Byte0", float) = 0
+ _Letter_Row02_Col15_Byte0("_Letter_Row02_Col15_Byte0", float) = 0
+ _Letter_Row02_Col16_Byte0("_Letter_Row02_Col16_Byte0", float) = 0
+ _Letter_Row02_Col17_Byte0("_Letter_Row02_Col17_Byte0", float) = 0
+ _Letter_Row02_Col18_Byte0("_Letter_Row02_Col18_Byte0", float) = 0
+ _Letter_Row02_Col19_Byte0("_Letter_Row02_Col19_Byte0", float) = 0
+ _Letter_Row02_Col20_Byte0("_Letter_Row02_Col20_Byte0", float) = 0
+ _Letter_Row02_Col21_Byte0("_Letter_Row02_Col21_Byte0", float) = 0
+ _Letter_Row02_Col22_Byte0("_Letter_Row02_Col22_Byte0", float) = 0
+ _Letter_Row02_Col23_Byte0("_Letter_Row02_Col23_Byte0", float) = 0
+ _Letter_Row02_Col24_Byte0("_Letter_Row02_Col24_Byte0", float) = 0
+ _Letter_Row02_Col25_Byte0("_Letter_Row02_Col25_Byte0", float) = 0
+ _Letter_Row02_Col26_Byte0("_Letter_Row02_Col26_Byte0", float) = 0
+ _Letter_Row02_Col27_Byte0("_Letter_Row02_Col27_Byte0", float) = 0
+ _Letter_Row02_Col28_Byte0("_Letter_Row02_Col28_Byte0", float) = 0
+ _Letter_Row02_Col29_Byte0("_Letter_Row02_Col29_Byte0", float) = 0
+ _Letter_Row02_Col30_Byte0("_Letter_Row02_Col30_Byte0", float) = 0
+ _Letter_Row02_Col31_Byte0("_Letter_Row02_Col31_Byte0", float) = 0
+ _Letter_Row02_Col32_Byte0("_Letter_Row02_Col32_Byte0", float) = 0
+ _Letter_Row02_Col33_Byte0("_Letter_Row02_Col33_Byte0", float) = 0
+ _Letter_Row02_Col34_Byte0("_Letter_Row02_Col34_Byte0", float) = 0
+ _Letter_Row02_Col35_Byte0("_Letter_Row02_Col35_Byte0", float) = 0
+ _Letter_Row02_Col36_Byte0("_Letter_Row02_Col36_Byte0", float) = 0
+ _Letter_Row02_Col37_Byte0("_Letter_Row02_Col37_Byte0", float) = 0
+ _Letter_Row02_Col38_Byte0("_Letter_Row02_Col38_Byte0", float) = 0
+ _Letter_Row02_Col39_Byte0("_Letter_Row02_Col39_Byte0", float) = 0
+ _Letter_Row02_Col40_Byte0("_Letter_Row02_Col40_Byte0", float) = 0
+ _Letter_Row02_Col41_Byte0("_Letter_Row02_Col41_Byte0", float) = 0
+ _Letter_Row02_Col42_Byte0("_Letter_Row02_Col42_Byte0", float) = 0
+ _Letter_Row02_Col43_Byte0("_Letter_Row02_Col43_Byte0", float) = 0
+ _Letter_Row03_Col00_Byte0("_Letter_Row03_Col00_Byte0", float) = 0
+ _Letter_Row03_Col01_Byte0("_Letter_Row03_Col01_Byte0", float) = 0
+ _Letter_Row03_Col02_Byte0("_Letter_Row03_Col02_Byte0", float) = 0
+ _Letter_Row03_Col03_Byte0("_Letter_Row03_Col03_Byte0", float) = 0
+ _Letter_Row03_Col04_Byte0("_Letter_Row03_Col04_Byte0", float) = 0
+ _Letter_Row03_Col05_Byte0("_Letter_Row03_Col05_Byte0", float) = 0
+ _Letter_Row03_Col06_Byte0("_Letter_Row03_Col06_Byte0", float) = 0
+ _Letter_Row03_Col07_Byte0("_Letter_Row03_Col07_Byte0", float) = 0
+ _Letter_Row03_Col08_Byte0("_Letter_Row03_Col08_Byte0", float) = 0
+ _Letter_Row03_Col09_Byte0("_Letter_Row03_Col09_Byte0", float) = 0
+ _Letter_Row03_Col10_Byte0("_Letter_Row03_Col10_Byte0", float) = 0
+ _Letter_Row03_Col11_Byte0("_Letter_Row03_Col11_Byte0", float) = 0
+ _Letter_Row03_Col12_Byte0("_Letter_Row03_Col12_Byte0", float) = 0
+ _Letter_Row03_Col13_Byte0("_Letter_Row03_Col13_Byte0", float) = 0
+ _Letter_Row03_Col14_Byte0("_Letter_Row03_Col14_Byte0", float) = 0
+ _Letter_Row03_Col15_Byte0("_Letter_Row03_Col15_Byte0", float) = 0
+ _Letter_Row03_Col16_Byte0("_Letter_Row03_Col16_Byte0", float) = 0
+ _Letter_Row03_Col17_Byte0("_Letter_Row03_Col17_Byte0", float) = 0
+ _Letter_Row03_Col18_Byte0("_Letter_Row03_Col18_Byte0", float) = 0
+ _Letter_Row03_Col19_Byte0("_Letter_Row03_Col19_Byte0", float) = 0
+ _Letter_Row03_Col20_Byte0("_Letter_Row03_Col20_Byte0", float) = 0
+ _Letter_Row03_Col21_Byte0("_Letter_Row03_Col21_Byte0", float) = 0
+ _Letter_Row03_Col22_Byte0("_Letter_Row03_Col22_Byte0", float) = 0
+ _Letter_Row03_Col23_Byte0("_Letter_Row03_Col23_Byte0", float) = 0
+ _Letter_Row03_Col24_Byte0("_Letter_Row03_Col24_Byte0", float) = 0
+ _Letter_Row03_Col25_Byte0("_Letter_Row03_Col25_Byte0", float) = 0
+ _Letter_Row03_Col26_Byte0("_Letter_Row03_Col26_Byte0", float) = 0
+ _Letter_Row03_Col27_Byte0("_Letter_Row03_Col27_Byte0", float) = 0
+ _Letter_Row03_Col28_Byte0("_Letter_Row03_Col28_Byte0", float) = 0
+ _Letter_Row03_Col29_Byte0("_Letter_Row03_Col29_Byte0", float) = 0
+ _Letter_Row03_Col30_Byte0("_Letter_Row03_Col30_Byte0", float) = 0
+ _Letter_Row03_Col31_Byte0("_Letter_Row03_Col31_Byte0", float) = 0
+ _Letter_Row03_Col32_Byte0("_Letter_Row03_Col32_Byte0", float) = 0
+ _Letter_Row03_Col33_Byte0("_Letter_Row03_Col33_Byte0", float) = 0
+ _Letter_Row03_Col34_Byte0("_Letter_Row03_Col34_Byte0", float) = 0
+ _Letter_Row03_Col35_Byte0("_Letter_Row03_Col35_Byte0", float) = 0
+ _Letter_Row03_Col36_Byte0("_Letter_Row03_Col36_Byte0", float) = 0
+ _Letter_Row03_Col37_Byte0("_Letter_Row03_Col37_Byte0", float) = 0
+ _Letter_Row03_Col38_Byte0("_Letter_Row03_Col38_Byte0", float) = 0
+ _Letter_Row03_Col39_Byte0("_Letter_Row03_Col39_Byte0", float) = 0
+ _Letter_Row03_Col40_Byte0("_Letter_Row03_Col40_Byte0", float) = 0
+ _Letter_Row03_Col41_Byte0("_Letter_Row03_Col41_Byte0", float) = 0
+ _Letter_Row03_Col42_Byte0("_Letter_Row03_Col42_Byte0", float) = 0
+ _Letter_Row03_Col43_Byte0("_Letter_Row03_Col43_Byte0", float) = 0
+ _Letter_Row00_Col00_Byte1("_Letter_Row00_Col00_Byte1", float) = 0
+ _Letter_Row00_Col01_Byte1("_Letter_Row00_Col01_Byte1", float) = 0
+ _Letter_Row00_Col02_Byte1("_Letter_Row00_Col02_Byte1", float) = 0
+ _Letter_Row00_Col03_Byte1("_Letter_Row00_Col03_Byte1", float) = 0
+ _Letter_Row00_Col04_Byte1("_Letter_Row00_Col04_Byte1", float) = 0
+ _Letter_Row00_Col05_Byte1("_Letter_Row00_Col05_Byte1", float) = 0
+ _Letter_Row00_Col06_Byte1("_Letter_Row00_Col06_Byte1", float) = 0
+ _Letter_Row00_Col07_Byte1("_Letter_Row00_Col07_Byte1", float) = 0
+ _Letter_Row00_Col08_Byte1("_Letter_Row00_Col08_Byte1", float) = 0
+ _Letter_Row00_Col09_Byte1("_Letter_Row00_Col09_Byte1", float) = 0
+ _Letter_Row00_Col10_Byte1("_Letter_Row00_Col10_Byte1", float) = 0
+ _Letter_Row00_Col11_Byte1("_Letter_Row00_Col11_Byte1", float) = 0
+ _Letter_Row00_Col12_Byte1("_Letter_Row00_Col12_Byte1", float) = 0
+ _Letter_Row00_Col13_Byte1("_Letter_Row00_Col13_Byte1", float) = 0
+ _Letter_Row00_Col14_Byte1("_Letter_Row00_Col14_Byte1", float) = 0
+ _Letter_Row00_Col15_Byte1("_Letter_Row00_Col15_Byte1", float) = 0
+ _Letter_Row00_Col16_Byte1("_Letter_Row00_Col16_Byte1", float) = 0
+ _Letter_Row00_Col17_Byte1("_Letter_Row00_Col17_Byte1", float) = 0
+ _Letter_Row00_Col18_Byte1("_Letter_Row00_Col18_Byte1", float) = 0
+ _Letter_Row00_Col19_Byte1("_Letter_Row00_Col19_Byte1", float) = 0
+ _Letter_Row00_Col20_Byte1("_Letter_Row00_Col20_Byte1", float) = 0
+ _Letter_Row00_Col21_Byte1("_Letter_Row00_Col21_Byte1", float) = 0
+ _Letter_Row00_Col22_Byte1("_Letter_Row00_Col22_Byte1", float) = 0
+ _Letter_Row00_Col23_Byte1("_Letter_Row00_Col23_Byte1", float) = 0
+ _Letter_Row00_Col24_Byte1("_Letter_Row00_Col24_Byte1", float) = 0
+ _Letter_Row00_Col25_Byte1("_Letter_Row00_Col25_Byte1", float) = 0
+ _Letter_Row00_Col26_Byte1("_Letter_Row00_Col26_Byte1", float) = 0
+ _Letter_Row00_Col27_Byte1("_Letter_Row00_Col27_Byte1", float) = 0
+ _Letter_Row00_Col28_Byte1("_Letter_Row00_Col28_Byte1", float) = 0
+ _Letter_Row00_Col29_Byte1("_Letter_Row00_Col29_Byte1", float) = 0
+ _Letter_Row00_Col30_Byte1("_Letter_Row00_Col30_Byte1", float) = 0
+ _Letter_Row00_Col31_Byte1("_Letter_Row00_Col31_Byte1", float) = 0
+ _Letter_Row00_Col32_Byte1("_Letter_Row00_Col32_Byte1", float) = 0
+ _Letter_Row00_Col33_Byte1("_Letter_Row00_Col33_Byte1", float) = 0
+ _Letter_Row00_Col34_Byte1("_Letter_Row00_Col34_Byte1", float) = 0
+ _Letter_Row00_Col35_Byte1("_Letter_Row00_Col35_Byte1", float) = 0
+ _Letter_Row00_Col36_Byte1("_Letter_Row00_Col36_Byte1", float) = 0
+ _Letter_Row00_Col37_Byte1("_Letter_Row00_Col37_Byte1", float) = 0
+ _Letter_Row00_Col38_Byte1("_Letter_Row00_Col38_Byte1", float) = 0
+ _Letter_Row00_Col39_Byte1("_Letter_Row00_Col39_Byte1", float) = 0
+ _Letter_Row00_Col40_Byte1("_Letter_Row00_Col40_Byte1", float) = 0
+ _Letter_Row00_Col41_Byte1("_Letter_Row00_Col41_Byte1", float) = 0
+ _Letter_Row00_Col42_Byte1("_Letter_Row00_Col42_Byte1", float) = 0
+ _Letter_Row00_Col43_Byte1("_Letter_Row00_Col43_Byte1", float) = 0
+ _Letter_Row01_Col00_Byte1("_Letter_Row01_Col00_Byte1", float) = 0
+ _Letter_Row01_Col01_Byte1("_Letter_Row01_Col01_Byte1", float) = 0
+ _Letter_Row01_Col02_Byte1("_Letter_Row01_Col02_Byte1", float) = 0
+ _Letter_Row01_Col03_Byte1("_Letter_Row01_Col03_Byte1", float) = 0
+ _Letter_Row01_Col04_Byte1("_Letter_Row01_Col04_Byte1", float) = 0
+ _Letter_Row01_Col05_Byte1("_Letter_Row01_Col05_Byte1", float) = 0
+ _Letter_Row01_Col06_Byte1("_Letter_Row01_Col06_Byte1", float) = 0
+ _Letter_Row01_Col07_Byte1("_Letter_Row01_Col07_Byte1", float) = 0
+ _Letter_Row01_Col08_Byte1("_Letter_Row01_Col08_Byte1", float) = 0
+ _Letter_Row01_Col09_Byte1("_Letter_Row01_Col09_Byte1", float) = 0
+ _Letter_Row01_Col10_Byte1("_Letter_Row01_Col10_Byte1", float) = 0
+ _Letter_Row01_Col11_Byte1("_Letter_Row01_Col11_Byte1", float) = 0
+ _Letter_Row01_Col12_Byte1("_Letter_Row01_Col12_Byte1", float) = 0
+ _Letter_Row01_Col13_Byte1("_Letter_Row01_Col13_Byte1", float) = 0
+ _Letter_Row01_Col14_Byte1("_Letter_Row01_Col14_Byte1", float) = 0
+ _Letter_Row01_Col15_Byte1("_Letter_Row01_Col15_Byte1", float) = 0
+ _Letter_Row01_Col16_Byte1("_Letter_Row01_Col16_Byte1", float) = 0
+ _Letter_Row01_Col17_Byte1("_Letter_Row01_Col17_Byte1", float) = 0
+ _Letter_Row01_Col18_Byte1("_Letter_Row01_Col18_Byte1", float) = 0
+ _Letter_Row01_Col19_Byte1("_Letter_Row01_Col19_Byte1", float) = 0
+ _Letter_Row01_Col20_Byte1("_Letter_Row01_Col20_Byte1", float) = 0
+ _Letter_Row01_Col21_Byte1("_Letter_Row01_Col21_Byte1", float) = 0
+ _Letter_Row01_Col22_Byte1("_Letter_Row01_Col22_Byte1", float) = 0
+ _Letter_Row01_Col23_Byte1("_Letter_Row01_Col23_Byte1", float) = 0
+ _Letter_Row01_Col24_Byte1("_Letter_Row01_Col24_Byte1", float) = 0
+ _Letter_Row01_Col25_Byte1("_Letter_Row01_Col25_Byte1", float) = 0
+ _Letter_Row01_Col26_Byte1("_Letter_Row01_Col26_Byte1", float) = 0
+ _Letter_Row01_Col27_Byte1("_Letter_Row01_Col27_Byte1", float) = 0
+ _Letter_Row01_Col28_Byte1("_Letter_Row01_Col28_Byte1", float) = 0
+ _Letter_Row01_Col29_Byte1("_Letter_Row01_Col29_Byte1", float) = 0
+ _Letter_Row01_Col30_Byte1("_Letter_Row01_Col30_Byte1", float) = 0
+ _Letter_Row01_Col31_Byte1("_Letter_Row01_Col31_Byte1", float) = 0
+ _Letter_Row01_Col32_Byte1("_Letter_Row01_Col32_Byte1", float) = 0
+ _Letter_Row01_Col33_Byte1("_Letter_Row01_Col33_Byte1", float) = 0
+ _Letter_Row01_Col34_Byte1("_Letter_Row01_Col34_Byte1", float) = 0
+ _Letter_Row01_Col35_Byte1("_Letter_Row01_Col35_Byte1", float) = 0
+ _Letter_Row01_Col36_Byte1("_Letter_Row01_Col36_Byte1", float) = 0
+ _Letter_Row01_Col37_Byte1("_Letter_Row01_Col37_Byte1", float) = 0
+ _Letter_Row01_Col38_Byte1("_Letter_Row01_Col38_Byte1", float) = 0
+ _Letter_Row01_Col39_Byte1("_Letter_Row01_Col39_Byte1", float) = 0
+ _Letter_Row01_Col40_Byte1("_Letter_Row01_Col40_Byte1", float) = 0
+ _Letter_Row01_Col41_Byte1("_Letter_Row01_Col41_Byte1", float) = 0
+ _Letter_Row01_Col42_Byte1("_Letter_Row01_Col42_Byte1", float) = 0
+ _Letter_Row01_Col43_Byte1("_Letter_Row01_Col43_Byte1", float) = 0
+ _Letter_Row02_Col00_Byte1("_Letter_Row02_Col00_Byte1", float) = 0
+ _Letter_Row02_Col01_Byte1("_Letter_Row02_Col01_Byte1", float) = 0
+ _Letter_Row02_Col02_Byte1("_Letter_Row02_Col02_Byte1", float) = 0
+ _Letter_Row02_Col03_Byte1("_Letter_Row02_Col03_Byte1", float) = 0
+ _Letter_Row02_Col04_Byte1("_Letter_Row02_Col04_Byte1", float) = 0
+ _Letter_Row02_Col05_Byte1("_Letter_Row02_Col05_Byte1", float) = 0
+ _Letter_Row02_Col06_Byte1("_Letter_Row02_Col06_Byte1", float) = 0
+ _Letter_Row02_Col07_Byte1("_Letter_Row02_Col07_Byte1", float) = 0
+ _Letter_Row02_Col08_Byte1("_Letter_Row02_Col08_Byte1", float) = 0
+ _Letter_Row02_Col09_Byte1("_Letter_Row02_Col09_Byte1", float) = 0
+ _Letter_Row02_Col10_Byte1("_Letter_Row02_Col10_Byte1", float) = 0
+ _Letter_Row02_Col11_Byte1("_Letter_Row02_Col11_Byte1", float) = 0
+ _Letter_Row02_Col12_Byte1("_Letter_Row02_Col12_Byte1", float) = 0
+ _Letter_Row02_Col13_Byte1("_Letter_Row02_Col13_Byte1", float) = 0
+ _Letter_Row02_Col14_Byte1("_Letter_Row02_Col14_Byte1", float) = 0
+ _Letter_Row02_Col15_Byte1("_Letter_Row02_Col15_Byte1", float) = 0
+ _Letter_Row02_Col16_Byte1("_Letter_Row02_Col16_Byte1", float) = 0
+ _Letter_Row02_Col17_Byte1("_Letter_Row02_Col17_Byte1", float) = 0
+ _Letter_Row02_Col18_Byte1("_Letter_Row02_Col18_Byte1", float) = 0
+ _Letter_Row02_Col19_Byte1("_Letter_Row02_Col19_Byte1", float) = 0
+ _Letter_Row02_Col20_Byte1("_Letter_Row02_Col20_Byte1", float) = 0
+ _Letter_Row02_Col21_Byte1("_Letter_Row02_Col21_Byte1", float) = 0
+ _Letter_Row02_Col22_Byte1("_Letter_Row02_Col22_Byte1", float) = 0
+ _Letter_Row02_Col23_Byte1("_Letter_Row02_Col23_Byte1", float) = 0
+ _Letter_Row02_Col24_Byte1("_Letter_Row02_Col24_Byte1", float) = 0
+ _Letter_Row02_Col25_Byte1("_Letter_Row02_Col25_Byte1", float) = 0
+ _Letter_Row02_Col26_Byte1("_Letter_Row02_Col26_Byte1", float) = 0
+ _Letter_Row02_Col27_Byte1("_Letter_Row02_Col27_Byte1", float) = 0
+ _Letter_Row02_Col28_Byte1("_Letter_Row02_Col28_Byte1", float) = 0
+ _Letter_Row02_Col29_Byte1("_Letter_Row02_Col29_Byte1", float) = 0
+ _Letter_Row02_Col30_Byte1("_Letter_Row02_Col30_Byte1", float) = 0
+ _Letter_Row02_Col31_Byte1("_Letter_Row02_Col31_Byte1", float) = 0
+ _Letter_Row02_Col32_Byte1("_Letter_Row02_Col32_Byte1", float) = 0
+ _Letter_Row02_Col33_Byte1("_Letter_Row02_Col33_Byte1", float) = 0
+ _Letter_Row02_Col34_Byte1("_Letter_Row02_Col34_Byte1", float) = 0
+ _Letter_Row02_Col35_Byte1("_Letter_Row02_Col35_Byte1", float) = 0
+ _Letter_Row02_Col36_Byte1("_Letter_Row02_Col36_Byte1", float) = 0
+ _Letter_Row02_Col37_Byte1("_Letter_Row02_Col37_Byte1", float) = 0
+ _Letter_Row02_Col38_Byte1("_Letter_Row02_Col38_Byte1", float) = 0
+ _Letter_Row02_Col39_Byte1("_Letter_Row02_Col39_Byte1", float) = 0
+ _Letter_Row02_Col40_Byte1("_Letter_Row02_Col40_Byte1", float) = 0
+ _Letter_Row02_Col41_Byte1("_Letter_Row02_Col41_Byte1", float) = 0
+ _Letter_Row02_Col42_Byte1("_Letter_Row02_Col42_Byte1", float) = 0
+ _Letter_Row02_Col43_Byte1("_Letter_Row02_Col43_Byte1", float) = 0
+ _Letter_Row03_Col00_Byte1("_Letter_Row03_Col00_Byte1", float) = 0
+ _Letter_Row03_Col01_Byte1("_Letter_Row03_Col01_Byte1", float) = 0
+ _Letter_Row03_Col02_Byte1("_Letter_Row03_Col02_Byte1", float) = 0
+ _Letter_Row03_Col03_Byte1("_Letter_Row03_Col03_Byte1", float) = 0
+ _Letter_Row03_Col04_Byte1("_Letter_Row03_Col04_Byte1", float) = 0
+ _Letter_Row03_Col05_Byte1("_Letter_Row03_Col05_Byte1", float) = 0
+ _Letter_Row03_Col06_Byte1("_Letter_Row03_Col06_Byte1", float) = 0
+ _Letter_Row03_Col07_Byte1("_Letter_Row03_Col07_Byte1", float) = 0
+ _Letter_Row03_Col08_Byte1("_Letter_Row03_Col08_Byte1", float) = 0
+ _Letter_Row03_Col09_Byte1("_Letter_Row03_Col09_Byte1", float) = 0
+ _Letter_Row03_Col10_Byte1("_Letter_Row03_Col10_Byte1", float) = 0
+ _Letter_Row03_Col11_Byte1("_Letter_Row03_Col11_Byte1", float) = 0
+ _Letter_Row03_Col12_Byte1("_Letter_Row03_Col12_Byte1", float) = 0
+ _Letter_Row03_Col13_Byte1("_Letter_Row03_Col13_Byte1", float) = 0
+ _Letter_Row03_Col14_Byte1("_Letter_Row03_Col14_Byte1", float) = 0
+ _Letter_Row03_Col15_Byte1("_Letter_Row03_Col15_Byte1", float) = 0
+ _Letter_Row03_Col16_Byte1("_Letter_Row03_Col16_Byte1", float) = 0
+ _Letter_Row03_Col17_Byte1("_Letter_Row03_Col17_Byte1", float) = 0
+ _Letter_Row03_Col18_Byte1("_Letter_Row03_Col18_Byte1", float) = 0
+ _Letter_Row03_Col19_Byte1("_Letter_Row03_Col19_Byte1", float) = 0
+ _Letter_Row03_Col20_Byte1("_Letter_Row03_Col20_Byte1", float) = 0
+ _Letter_Row03_Col21_Byte1("_Letter_Row03_Col21_Byte1", float) = 0
+ _Letter_Row03_Col22_Byte1("_Letter_Row03_Col22_Byte1", float) = 0
+ _Letter_Row03_Col23_Byte1("_Letter_Row03_Col23_Byte1", float) = 0
+ _Letter_Row03_Col24_Byte1("_Letter_Row03_Col24_Byte1", float) = 0
+ _Letter_Row03_Col25_Byte1("_Letter_Row03_Col25_Byte1", float) = 0
+ _Letter_Row03_Col26_Byte1("_Letter_Row03_Col26_Byte1", float) = 0
+ _Letter_Row03_Col27_Byte1("_Letter_Row03_Col27_Byte1", float) = 0
+ _Letter_Row03_Col28_Byte1("_Letter_Row03_Col28_Byte1", float) = 0
+ _Letter_Row03_Col29_Byte1("_Letter_Row03_Col29_Byte1", float) = 0
+ _Letter_Row03_Col30_Byte1("_Letter_Row03_Col30_Byte1", float) = 0
+ _Letter_Row03_Col31_Byte1("_Letter_Row03_Col31_Byte1", float) = 0
+ _Letter_Row03_Col32_Byte1("_Letter_Row03_Col32_Byte1", float) = 0
+ _Letter_Row03_Col33_Byte1("_Letter_Row03_Col33_Byte1", float) = 0
+ _Letter_Row03_Col34_Byte1("_Letter_Row03_Col34_Byte1", float) = 0
+ _Letter_Row03_Col35_Byte1("_Letter_Row03_Col35_Byte1", float) = 0
+ _Letter_Row03_Col36_Byte1("_Letter_Row03_Col36_Byte1", float) = 0
+ _Letter_Row03_Col37_Byte1("_Letter_Row03_Col37_Byte1", float) = 0
+ _Letter_Row03_Col38_Byte1("_Letter_Row03_Col38_Byte1", float) = 0
+ _Letter_Row03_Col39_Byte1("_Letter_Row03_Col39_Byte1", float) = 0
+ _Letter_Row03_Col40_Byte1("_Letter_Row03_Col40_Byte1", float) = 0
+ _Letter_Row03_Col41_Byte1("_Letter_Row03_Col41_Byte1", float) = 0
+ _Letter_Row03_Col42_Byte1("_Letter_Row03_Col42_Byte1", float) = 0
+ _Letter_Row03_Col43_Byte1("_Letter_Row03_Col43_Byte1", float) = 0
}
SubShader
{
@@ -227,182 +403,358 @@
Texture2D _Font_0xA000_0xBFFF;
Texture2D _Font_0xC000_0xDFFF;
- float _Letter_Row00_Col00;
- float _Letter_Row00_Col01;
- float _Letter_Row00_Col02;
- float _Letter_Row00_Col03;
- float _Letter_Row00_Col04;
- float _Letter_Row00_Col05;
- float _Letter_Row00_Col06;
- float _Letter_Row00_Col07;
- float _Letter_Row00_Col08;
- float _Letter_Row00_Col09;
- float _Letter_Row00_Col10;
- float _Letter_Row00_Col11;
- float _Letter_Row00_Col12;
- float _Letter_Row00_Col13;
- float _Letter_Row00_Col14;
- float _Letter_Row00_Col15;
- float _Letter_Row00_Col16;
- float _Letter_Row00_Col17;
- float _Letter_Row00_Col18;
- float _Letter_Row00_Col19;
- float _Letter_Row00_Col20;
- float _Letter_Row00_Col21;
- float _Letter_Row00_Col22;
- float _Letter_Row00_Col23;
- float _Letter_Row00_Col24;
- float _Letter_Row00_Col25;
- float _Letter_Row00_Col26;
- float _Letter_Row00_Col27;
- float _Letter_Row00_Col28;
- float _Letter_Row00_Col29;
- float _Letter_Row00_Col30;
- float _Letter_Row00_Col31;
- float _Letter_Row00_Col32;
- float _Letter_Row00_Col33;
- float _Letter_Row00_Col34;
- float _Letter_Row00_Col35;
- float _Letter_Row00_Col36;
- float _Letter_Row00_Col37;
- float _Letter_Row00_Col38;
- float _Letter_Row00_Col39;
- float _Letter_Row00_Col40;
- float _Letter_Row00_Col41;
- float _Letter_Row00_Col42;
- float _Letter_Row00_Col43;
- float _Letter_Row01_Col00;
- float _Letter_Row01_Col01;
- float _Letter_Row01_Col02;
- float _Letter_Row01_Col03;
- float _Letter_Row01_Col04;
- float _Letter_Row01_Col05;
- float _Letter_Row01_Col06;
- float _Letter_Row01_Col07;
- float _Letter_Row01_Col08;
- float _Letter_Row01_Col09;
- float _Letter_Row01_Col10;
- float _Letter_Row01_Col11;
- float _Letter_Row01_Col12;
- float _Letter_Row01_Col13;
- float _Letter_Row01_Col14;
- float _Letter_Row01_Col15;
- float _Letter_Row01_Col16;
- float _Letter_Row01_Col17;
- float _Letter_Row01_Col18;
- float _Letter_Row01_Col19;
- float _Letter_Row01_Col20;
- float _Letter_Row01_Col21;
- float _Letter_Row01_Col22;
- float _Letter_Row01_Col23;
- float _Letter_Row01_Col24;
- float _Letter_Row01_Col25;
- float _Letter_Row01_Col26;
- float _Letter_Row01_Col27;
- float _Letter_Row01_Col28;
- float _Letter_Row01_Col29;
- float _Letter_Row01_Col30;
- float _Letter_Row01_Col31;
- float _Letter_Row01_Col32;
- float _Letter_Row01_Col33;
- float _Letter_Row01_Col34;
- float _Letter_Row01_Col35;
- float _Letter_Row01_Col36;
- float _Letter_Row01_Col37;
- float _Letter_Row01_Col38;
- float _Letter_Row01_Col39;
- float _Letter_Row01_Col40;
- float _Letter_Row01_Col41;
- float _Letter_Row01_Col42;
- float _Letter_Row01_Col43;
- float _Letter_Row02_Col00;
- float _Letter_Row02_Col01;
- float _Letter_Row02_Col02;
- float _Letter_Row02_Col03;
- float _Letter_Row02_Col04;
- float _Letter_Row02_Col05;
- float _Letter_Row02_Col06;
- float _Letter_Row02_Col07;
- float _Letter_Row02_Col08;
- float _Letter_Row02_Col09;
- float _Letter_Row02_Col10;
- float _Letter_Row02_Col11;
- float _Letter_Row02_Col12;
- float _Letter_Row02_Col13;
- float _Letter_Row02_Col14;
- float _Letter_Row02_Col15;
- float _Letter_Row02_Col16;
- float _Letter_Row02_Col17;
- float _Letter_Row02_Col18;
- float _Letter_Row02_Col19;
- float _Letter_Row02_Col20;
- float _Letter_Row02_Col21;
- float _Letter_Row02_Col22;
- float _Letter_Row02_Col23;
- float _Letter_Row02_Col24;
- float _Letter_Row02_Col25;
- float _Letter_Row02_Col26;
- float _Letter_Row02_Col27;
- float _Letter_Row02_Col28;
- float _Letter_Row02_Col29;
- float _Letter_Row02_Col30;
- float _Letter_Row02_Col31;
- float _Letter_Row02_Col32;
- float _Letter_Row02_Col33;
- float _Letter_Row02_Col34;
- float _Letter_Row02_Col35;
- float _Letter_Row02_Col36;
- float _Letter_Row02_Col37;
- float _Letter_Row02_Col38;
- float _Letter_Row02_Col39;
- float _Letter_Row02_Col40;
- float _Letter_Row02_Col41;
- float _Letter_Row02_Col42;
- float _Letter_Row02_Col43;
- float _Letter_Row03_Col00;
- float _Letter_Row03_Col01;
- float _Letter_Row03_Col02;
- float _Letter_Row03_Col03;
- float _Letter_Row03_Col04;
- float _Letter_Row03_Col05;
- float _Letter_Row03_Col06;
- float _Letter_Row03_Col07;
- float _Letter_Row03_Col08;
- float _Letter_Row03_Col09;
- float _Letter_Row03_Col10;
- float _Letter_Row03_Col11;
- float _Letter_Row03_Col12;
- float _Letter_Row03_Col13;
- float _Letter_Row03_Col14;
- float _Letter_Row03_Col15;
- float _Letter_Row03_Col16;
- float _Letter_Row03_Col17;
- float _Letter_Row03_Col18;
- float _Letter_Row03_Col19;
- float _Letter_Row03_Col20;
- float _Letter_Row03_Col21;
- float _Letter_Row03_Col22;
- float _Letter_Row03_Col23;
- float _Letter_Row03_Col24;
- float _Letter_Row03_Col25;
- float _Letter_Row03_Col26;
- float _Letter_Row03_Col27;
- float _Letter_Row03_Col28;
- float _Letter_Row03_Col29;
- float _Letter_Row03_Col30;
- float _Letter_Row03_Col31;
- float _Letter_Row03_Col32;
- float _Letter_Row03_Col33;
- float _Letter_Row03_Col34;
- float _Letter_Row03_Col35;
- float _Letter_Row03_Col36;
- float _Letter_Row03_Col37;
- float _Letter_Row03_Col38;
- float _Letter_Row03_Col39;
- float _Letter_Row03_Col40;
- float _Letter_Row03_Col41;
- float _Letter_Row03_Col42;
- float _Letter_Row03_Col43;
+ float _Letter_Row00_Col00_Byte0;
+ float _Letter_Row00_Col01_Byte0;
+ float _Letter_Row00_Col02_Byte0;
+ float _Letter_Row00_Col03_Byte0;
+ float _Letter_Row00_Col04_Byte0;
+ float _Letter_Row00_Col05_Byte0;
+ float _Letter_Row00_Col06_Byte0;
+ float _Letter_Row00_Col07_Byte0;
+ float _Letter_Row00_Col08_Byte0;
+ float _Letter_Row00_Col09_Byte0;
+ float _Letter_Row00_Col10_Byte0;
+ float _Letter_Row00_Col11_Byte0;
+ float _Letter_Row00_Col12_Byte0;
+ float _Letter_Row00_Col13_Byte0;
+ float _Letter_Row00_Col14_Byte0;
+ float _Letter_Row00_Col15_Byte0;
+ float _Letter_Row00_Col16_Byte0;
+ float _Letter_Row00_Col17_Byte0;
+ float _Letter_Row00_Col18_Byte0;
+ float _Letter_Row00_Col19_Byte0;
+ float _Letter_Row00_Col20_Byte0;
+ float _Letter_Row00_Col21_Byte0;
+ float _Letter_Row00_Col22_Byte0;
+ float _Letter_Row00_Col23_Byte0;
+ float _Letter_Row00_Col24_Byte0;
+ float _Letter_Row00_Col25_Byte0;
+ float _Letter_Row00_Col26_Byte0;
+ float _Letter_Row00_Col27_Byte0;
+ float _Letter_Row00_Col28_Byte0;
+ float _Letter_Row00_Col29_Byte0;
+ float _Letter_Row00_Col30_Byte0;
+ float _Letter_Row00_Col31_Byte0;
+ float _Letter_Row00_Col32_Byte0;
+ float _Letter_Row00_Col33_Byte0;
+ float _Letter_Row00_Col34_Byte0;
+ float _Letter_Row00_Col35_Byte0;
+ float _Letter_Row00_Col36_Byte0;
+ float _Letter_Row00_Col37_Byte0;
+ float _Letter_Row00_Col38_Byte0;
+ float _Letter_Row00_Col39_Byte0;
+ float _Letter_Row00_Col40_Byte0;
+ float _Letter_Row00_Col41_Byte0;
+ float _Letter_Row00_Col42_Byte0;
+ float _Letter_Row00_Col43_Byte0;
+ float _Letter_Row01_Col00_Byte0;
+ float _Letter_Row01_Col01_Byte0;
+ float _Letter_Row01_Col02_Byte0;
+ float _Letter_Row01_Col03_Byte0;
+ float _Letter_Row01_Col04_Byte0;
+ float _Letter_Row01_Col05_Byte0;
+ float _Letter_Row01_Col06_Byte0;
+ float _Letter_Row01_Col07_Byte0;
+ float _Letter_Row01_Col08_Byte0;
+ float _Letter_Row01_Col09_Byte0;
+ float _Letter_Row01_Col10_Byte0;
+ float _Letter_Row01_Col11_Byte0;
+ float _Letter_Row01_Col12_Byte0;
+ float _Letter_Row01_Col13_Byte0;
+ float _Letter_Row01_Col14_Byte0;
+ float _Letter_Row01_Col15_Byte0;
+ float _Letter_Row01_Col16_Byte0;
+ float _Letter_Row01_Col17_Byte0;
+ float _Letter_Row01_Col18_Byte0;
+ float _Letter_Row01_Col19_Byte0;
+ float _Letter_Row01_Col20_Byte0;
+ float _Letter_Row01_Col21_Byte0;
+ float _Letter_Row01_Col22_Byte0;
+ float _Letter_Row01_Col23_Byte0;
+ float _Letter_Row01_Col24_Byte0;
+ float _Letter_Row01_Col25_Byte0;
+ float _Letter_Row01_Col26_Byte0;
+ float _Letter_Row01_Col27_Byte0;
+ float _Letter_Row01_Col28_Byte0;
+ float _Letter_Row01_Col29_Byte0;
+ float _Letter_Row01_Col30_Byte0;
+ float _Letter_Row01_Col31_Byte0;
+ float _Letter_Row01_Col32_Byte0;
+ float _Letter_Row01_Col33_Byte0;
+ float _Letter_Row01_Col34_Byte0;
+ float _Letter_Row01_Col35_Byte0;
+ float _Letter_Row01_Col36_Byte0;
+ float _Letter_Row01_Col37_Byte0;
+ float _Letter_Row01_Col38_Byte0;
+ float _Letter_Row01_Col39_Byte0;
+ float _Letter_Row01_Col40_Byte0;
+ float _Letter_Row01_Col41_Byte0;
+ float _Letter_Row01_Col42_Byte0;
+ float _Letter_Row01_Col43_Byte0;
+ float _Letter_Row02_Col00_Byte0;
+ float _Letter_Row02_Col01_Byte0;
+ float _Letter_Row02_Col02_Byte0;
+ float _Letter_Row02_Col03_Byte0;
+ float _Letter_Row02_Col04_Byte0;
+ float _Letter_Row02_Col05_Byte0;
+ float _Letter_Row02_Col06_Byte0;
+ float _Letter_Row02_Col07_Byte0;
+ float _Letter_Row02_Col08_Byte0;
+ float _Letter_Row02_Col09_Byte0;
+ float _Letter_Row02_Col10_Byte0;
+ float _Letter_Row02_Col11_Byte0;
+ float _Letter_Row02_Col12_Byte0;
+ float _Letter_Row02_Col13_Byte0;
+ float _Letter_Row02_Col14_Byte0;
+ float _Letter_Row02_Col15_Byte0;
+ float _Letter_Row02_Col16_Byte0;
+ float _Letter_Row02_Col17_Byte0;
+ float _Letter_Row02_Col18_Byte0;
+ float _Letter_Row02_Col19_Byte0;
+ float _Letter_Row02_Col20_Byte0;
+ float _Letter_Row02_Col21_Byte0;
+ float _Letter_Row02_Col22_Byte0;
+ float _Letter_Row02_Col23_Byte0;
+ float _Letter_Row02_Col24_Byte0;
+ float _Letter_Row02_Col25_Byte0;
+ float _Letter_Row02_Col26_Byte0;
+ float _Letter_Row02_Col27_Byte0;
+ float _Letter_Row02_Col28_Byte0;
+ float _Letter_Row02_Col29_Byte0;
+ float _Letter_Row02_Col30_Byte0;
+ float _Letter_Row02_Col31_Byte0;
+ float _Letter_Row02_Col32_Byte0;
+ float _Letter_Row02_Col33_Byte0;
+ float _Letter_Row02_Col34_Byte0;
+ float _Letter_Row02_Col35_Byte0;
+ float _Letter_Row02_Col36_Byte0;
+ float _Letter_Row02_Col37_Byte0;
+ float _Letter_Row02_Col38_Byte0;
+ float _Letter_Row02_Col39_Byte0;
+ float _Letter_Row02_Col40_Byte0;
+ float _Letter_Row02_Col41_Byte0;
+ float _Letter_Row02_Col42_Byte0;
+ float _Letter_Row02_Col43_Byte0;
+ float _Letter_Row03_Col00_Byte0;
+ float _Letter_Row03_Col01_Byte0;
+ float _Letter_Row03_Col02_Byte0;
+ float _Letter_Row03_Col03_Byte0;
+ float _Letter_Row03_Col04_Byte0;
+ float _Letter_Row03_Col05_Byte0;
+ float _Letter_Row03_Col06_Byte0;
+ float _Letter_Row03_Col07_Byte0;
+ float _Letter_Row03_Col08_Byte0;
+ float _Letter_Row03_Col09_Byte0;
+ float _Letter_Row03_Col10_Byte0;
+ float _Letter_Row03_Col11_Byte0;
+ float _Letter_Row03_Col12_Byte0;
+ float _Letter_Row03_Col13_Byte0;
+ float _Letter_Row03_Col14_Byte0;
+ float _Letter_Row03_Col15_Byte0;
+ float _Letter_Row03_Col16_Byte0;
+ float _Letter_Row03_Col17_Byte0;
+ float _Letter_Row03_Col18_Byte0;
+ float _Letter_Row03_Col19_Byte0;
+ float _Letter_Row03_Col20_Byte0;
+ float _Letter_Row03_Col21_Byte0;
+ float _Letter_Row03_Col22_Byte0;
+ float _Letter_Row03_Col23_Byte0;
+ float _Letter_Row03_Col24_Byte0;
+ float _Letter_Row03_Col25_Byte0;
+ float _Letter_Row03_Col26_Byte0;
+ float _Letter_Row03_Col27_Byte0;
+ float _Letter_Row03_Col28_Byte0;
+ float _Letter_Row03_Col29_Byte0;
+ float _Letter_Row03_Col30_Byte0;
+ float _Letter_Row03_Col31_Byte0;
+ float _Letter_Row03_Col32_Byte0;
+ float _Letter_Row03_Col33_Byte0;
+ float _Letter_Row03_Col34_Byte0;
+ float _Letter_Row03_Col35_Byte0;
+ float _Letter_Row03_Col36_Byte0;
+ float _Letter_Row03_Col37_Byte0;
+ float _Letter_Row03_Col38_Byte0;
+ float _Letter_Row03_Col39_Byte0;
+ float _Letter_Row03_Col40_Byte0;
+ float _Letter_Row03_Col41_Byte0;
+ float _Letter_Row03_Col42_Byte0;
+ float _Letter_Row03_Col43_Byte0;
+ float _Letter_Row00_Col00_Byte1;
+ float _Letter_Row00_Col01_Byte1;
+ float _Letter_Row00_Col02_Byte1;
+ float _Letter_Row00_Col03_Byte1;
+ float _Letter_Row00_Col04_Byte1;
+ float _Letter_Row00_Col05_Byte1;
+ float _Letter_Row00_Col06_Byte1;
+ float _Letter_Row00_Col07_Byte1;
+ float _Letter_Row00_Col08_Byte1;
+ float _Letter_Row00_Col09_Byte1;
+ float _Letter_Row00_Col10_Byte1;
+ float _Letter_Row00_Col11_Byte1;
+ float _Letter_Row00_Col12_Byte1;
+ float _Letter_Row00_Col13_Byte1;
+ float _Letter_Row00_Col14_Byte1;
+ float _Letter_Row00_Col15_Byte1;
+ float _Letter_Row00_Col16_Byte1;
+ float _Letter_Row00_Col17_Byte1;
+ float _Letter_Row00_Col18_Byte1;
+ float _Letter_Row00_Col19_Byte1;
+ float _Letter_Row00_Col20_Byte1;
+ float _Letter_Row00_Col21_Byte1;
+ float _Letter_Row00_Col22_Byte1;
+ float _Letter_Row00_Col23_Byte1;
+ float _Letter_Row00_Col24_Byte1;
+ float _Letter_Row00_Col25_Byte1;
+ float _Letter_Row00_Col26_Byte1;
+ float _Letter_Row00_Col27_Byte1;
+ float _Letter_Row00_Col28_Byte1;
+ float _Letter_Row00_Col29_Byte1;
+ float _Letter_Row00_Col30_Byte1;
+ float _Letter_Row00_Col31_Byte1;
+ float _Letter_Row00_Col32_Byte1;
+ float _Letter_Row00_Col33_Byte1;
+ float _Letter_Row00_Col34_Byte1;
+ float _Letter_Row00_Col35_Byte1;
+ float _Letter_Row00_Col36_Byte1;
+ float _Letter_Row00_Col37_Byte1;
+ float _Letter_Row00_Col38_Byte1;
+ float _Letter_Row00_Col39_Byte1;
+ float _Letter_Row00_Col40_Byte1;
+ float _Letter_Row00_Col41_Byte1;
+ float _Letter_Row00_Col42_Byte1;
+ float _Letter_Row00_Col43_Byte1;
+ float _Letter_Row01_Col00_Byte1;
+ float _Letter_Row01_Col01_Byte1;
+ float _Letter_Row01_Col02_Byte1;
+ float _Letter_Row01_Col03_Byte1;
+ float _Letter_Row01_Col04_Byte1;
+ float _Letter_Row01_Col05_Byte1;
+ float _Letter_Row01_Col06_Byte1;
+ float _Letter_Row01_Col07_Byte1;
+ float _Letter_Row01_Col08_Byte1;
+ float _Letter_Row01_Col09_Byte1;
+ float _Letter_Row01_Col10_Byte1;
+ float _Letter_Row01_Col11_Byte1;
+ float _Letter_Row01_Col12_Byte1;
+ float _Letter_Row01_Col13_Byte1;
+ float _Letter_Row01_Col14_Byte1;
+ float _Letter_Row01_Col15_Byte1;
+ float _Letter_Row01_Col16_Byte1;
+ float _Letter_Row01_Col17_Byte1;
+ float _Letter_Row01_Col18_Byte1;
+ float _Letter_Row01_Col19_Byte1;
+ float _Letter_Row01_Col20_Byte1;
+ float _Letter_Row01_Col21_Byte1;
+ float _Letter_Row01_Col22_Byte1;
+ float _Letter_Row01_Col23_Byte1;
+ float _Letter_Row01_Col24_Byte1;
+ float _Letter_Row01_Col25_Byte1;
+ float _Letter_Row01_Col26_Byte1;
+ float _Letter_Row01_Col27_Byte1;
+ float _Letter_Row01_Col28_Byte1;
+ float _Letter_Row01_Col29_Byte1;
+ float _Letter_Row01_Col30_Byte1;
+ float _Letter_Row01_Col31_Byte1;
+ float _Letter_Row01_Col32_Byte1;
+ float _Letter_Row01_Col33_Byte1;
+ float _Letter_Row01_Col34_Byte1;
+ float _Letter_Row01_Col35_Byte1;
+ float _Letter_Row01_Col36_Byte1;
+ float _Letter_Row01_Col37_Byte1;
+ float _Letter_Row01_Col38_Byte1;
+ float _Letter_Row01_Col39_Byte1;
+ float _Letter_Row01_Col40_Byte1;
+ float _Letter_Row01_Col41_Byte1;
+ float _Letter_Row01_Col42_Byte1;
+ float _Letter_Row01_Col43_Byte1;
+ float _Letter_Row02_Col00_Byte1;
+ float _Letter_Row02_Col01_Byte1;
+ float _Letter_Row02_Col02_Byte1;
+ float _Letter_Row02_Col03_Byte1;
+ float _Letter_Row02_Col04_Byte1;
+ float _Letter_Row02_Col05_Byte1;
+ float _Letter_Row02_Col06_Byte1;
+ float _Letter_Row02_Col07_Byte1;
+ float _Letter_Row02_Col08_Byte1;
+ float _Letter_Row02_Col09_Byte1;
+ float _Letter_Row02_Col10_Byte1;
+ float _Letter_Row02_Col11_Byte1;
+ float _Letter_Row02_Col12_Byte1;
+ float _Letter_Row02_Col13_Byte1;
+ float _Letter_Row02_Col14_Byte1;
+ float _Letter_Row02_Col15_Byte1;
+ float _Letter_Row02_Col16_Byte1;
+ float _Letter_Row02_Col17_Byte1;
+ float _Letter_Row02_Col18_Byte1;
+ float _Letter_Row02_Col19_Byte1;
+ float _Letter_Row02_Col20_Byte1;
+ float _Letter_Row02_Col21_Byte1;
+ float _Letter_Row02_Col22_Byte1;
+ float _Letter_Row02_Col23_Byte1;
+ float _Letter_Row02_Col24_Byte1;
+ float _Letter_Row02_Col25_Byte1;
+ float _Letter_Row02_Col26_Byte1;
+ float _Letter_Row02_Col27_Byte1;
+ float _Letter_Row02_Col28_Byte1;
+ float _Letter_Row02_Col29_Byte1;
+ float _Letter_Row02_Col30_Byte1;
+ float _Letter_Row02_Col31_Byte1;
+ float _Letter_Row02_Col32_Byte1;
+ float _Letter_Row02_Col33_Byte1;
+ float _Letter_Row02_Col34_Byte1;
+ float _Letter_Row02_Col35_Byte1;
+ float _Letter_Row02_Col36_Byte1;
+ float _Letter_Row02_Col37_Byte1;
+ float _Letter_Row02_Col38_Byte1;
+ float _Letter_Row02_Col39_Byte1;
+ float _Letter_Row02_Col40_Byte1;
+ float _Letter_Row02_Col41_Byte1;
+ float _Letter_Row02_Col42_Byte1;
+ float _Letter_Row02_Col43_Byte1;
+ float _Letter_Row03_Col00_Byte1;
+ float _Letter_Row03_Col01_Byte1;
+ float _Letter_Row03_Col02_Byte1;
+ float _Letter_Row03_Col03_Byte1;
+ float _Letter_Row03_Col04_Byte1;
+ float _Letter_Row03_Col05_Byte1;
+ float _Letter_Row03_Col06_Byte1;
+ float _Letter_Row03_Col07_Byte1;
+ float _Letter_Row03_Col08_Byte1;
+ float _Letter_Row03_Col09_Byte1;
+ float _Letter_Row03_Col10_Byte1;
+ float _Letter_Row03_Col11_Byte1;
+ float _Letter_Row03_Col12_Byte1;
+ float _Letter_Row03_Col13_Byte1;
+ float _Letter_Row03_Col14_Byte1;
+ float _Letter_Row03_Col15_Byte1;
+ float _Letter_Row03_Col16_Byte1;
+ float _Letter_Row03_Col17_Byte1;
+ float _Letter_Row03_Col18_Byte1;
+ float _Letter_Row03_Col19_Byte1;
+ float _Letter_Row03_Col20_Byte1;
+ float _Letter_Row03_Col21_Byte1;
+ float _Letter_Row03_Col22_Byte1;
+ float _Letter_Row03_Col23_Byte1;
+ float _Letter_Row03_Col24_Byte1;
+ float _Letter_Row03_Col25_Byte1;
+ float _Letter_Row03_Col26_Byte1;
+ float _Letter_Row03_Col27_Byte1;
+ float _Letter_Row03_Col28_Byte1;
+ float _Letter_Row03_Col29_Byte1;
+ float _Letter_Row03_Col30_Byte1;
+ float _Letter_Row03_Col31_Byte1;
+ float _Letter_Row03_Col32_Byte1;
+ float _Letter_Row03_Col33_Byte1;
+ float _Letter_Row03_Col34_Byte1;
+ float _Letter_Row03_Col35_Byte1;
+ float _Letter_Row03_Col36_Byte1;
+ float _Letter_Row03_Col37_Byte1;
+ float _Letter_Row03_Col38_Byte1;
+ float _Letter_Row03_Col39_Byte1;
+ float _Letter_Row03_Col40_Byte1;
+ float _Letter_Row03_Col41_Byte1;
+ float _Letter_Row03_Col42_Byte1;
+ float _Letter_Row03_Col43_Byte1;
v2f vert (appdata v)
{
@@ -445,8 +797,8 @@
float LETTER_COL = fmod(nth_letter, floor(LETTER_COLS));
float LETTER_ROW = floor(LETTER_ROWS) - floor(nth_letter / floor(LETTER_COLS));
- float LETTER_UV_ROW = (LETTER_ROW + CHAR_FRAC_ROW - 0.9) / LETTER_ROWS;
- float LETTER_UV_COL = (LETTER_COL + CHAR_FRAC_COL + 0.1) / LETTER_COLS;
+ float LETTER_UV_ROW = (LETTER_ROW + CHAR_FRAC_ROW - 1.00) / LETTER_ROWS;
+ float LETTER_UV_COL = (LETTER_COL + CHAR_FRAC_COL + 0.0) / LETTER_COLS;
float2 result;
result.x = LETTER_UV_COL;
@@ -455,8 +807,32 @@
return result;
}
+ Texture2D GetTexture(int which_letter) {
+ int which_texture = (int) floor(which_letter / (64 * 64));
+
+ [forcecase] switch (which_letter)
+ {
+ case 0:
+ return _Font_0x0000_0x1FFF;
+ case 1:
+ return _Font_0x2000_0x3FFF;
+ case 2:
+ return _Font_0x4000_0x5FFF;
+ case 3:
+ return _Font_0x6000_0x7FFF;
+ case 4:
+ return _Font_0x8000_0x9FFF;
+ case 5:
+ return _Font_0xA000_0xBFFF;
+ case 6:
+ return _Font_0xC000_0xDFFF;
+ default:
+ return _Font_0x0000_0x1FFF;
+ }
+ }
+
// Get the value of the parameter for the cell we're in.
- float GetLetterParameter(float2 uv)
+ float2 GetLetterParameter(float2 uv)
{
float CHAR_ROWS = 4.0;
float CHAR_COLS = 44.0;
@@ -468,378 +844,378 @@
case 3:
[forcecase] switch (CHAR_COL) {
case 0:
- return _Letter_Row00_Col00;
+ return float2(_Letter_Row00_Col00_Byte0, _Letter_Row00_Col00_Byte1);
case 1:
- return _Letter_Row00_Col01;
+ return float2(_Letter_Row00_Col01_Byte0, _Letter_Row00_Col01_Byte1);
case 2:
- return _Letter_Row00_Col02;
+ return float2(_Letter_Row00_Col02_Byte0, _Letter_Row00_Col02_Byte1);
case 3:
- return _Letter_Row00_Col03;
+ return float2(_Letter_Row00_Col03_Byte0, _Letter_Row00_Col03_Byte1);
case 4:
- return _Letter_Row00_Col04;
+ return float2(_Letter_Row00_Col04_Byte0, _Letter_Row00_Col04_Byte1);
case 5:
- return _Letter_Row00_Col05;
+ return float2(_Letter_Row00_Col05_Byte0, _Letter_Row00_Col05_Byte1);
case 6:
- return _Letter_Row00_Col06;
+ return float2(_Letter_Row00_Col06_Byte0, _Letter_Row00_Col06_Byte1);
case 7:
- return _Letter_Row00_Col07;
+ return float2(_Letter_Row00_Col07_Byte0, _Letter_Row00_Col07_Byte1);
case 8:
- return _Letter_Row00_Col08;
+ return float2(_Letter_Row00_Col08_Byte0, _Letter_Row00_Col08_Byte1);
case 9:
- return _Letter_Row00_Col09;
+ return float2(_Letter_Row00_Col09_Byte0, _Letter_Row00_Col09_Byte1);
case 10:
- return _Letter_Row00_Col10;
+ return float2(_Letter_Row00_Col10_Byte0, _Letter_Row00_Col10_Byte1);
case 11:
- return _Letter_Row00_Col11;
+ return float2(_Letter_Row00_Col11_Byte0, _Letter_Row00_Col11_Byte1);
case 12:
- return _Letter_Row00_Col12;
+ return float2(_Letter_Row00_Col12_Byte0, _Letter_Row00_Col12_Byte1);
case 13:
- return _Letter_Row00_Col13;
+ return float2(_Letter_Row00_Col13_Byte0, _Letter_Row00_Col13_Byte1);
case 14:
- return _Letter_Row00_Col14;
+ return float2(_Letter_Row00_Col14_Byte0, _Letter_Row00_Col14_Byte1);
case 15:
- return _Letter_Row00_Col15;
+ return float2(_Letter_Row00_Col15_Byte0, _Letter_Row00_Col15_Byte1);
case 16:
- return _Letter_Row00_Col16;
+ return float2(_Letter_Row00_Col16_Byte0, _Letter_Row00_Col16_Byte1);
case 17:
- return _Letter_Row00_Col17;
+ return float2(_Letter_Row00_Col17_Byte0, _Letter_Row00_Col17_Byte1);
case 18:
- return _Letter_Row00_Col18;
+ return float2(_Letter_Row00_Col18_Byte0, _Letter_Row00_Col18_Byte1);
case 19:
- return _Letter_Row00_Col19;
+ return float2(_Letter_Row00_Col19_Byte0, _Letter_Row00_Col19_Byte1);
case 20:
- return _Letter_Row00_Col20;
+ return float2(_Letter_Row00_Col20_Byte0, _Letter_Row00_Col20_Byte1);
case 21:
- return _Letter_Row00_Col21;
+ return float2(_Letter_Row00_Col21_Byte0, _Letter_Row00_Col21_Byte1);
case 22:
- return _Letter_Row00_Col22;
+ return float2(_Letter_Row00_Col22_Byte0, _Letter_Row00_Col22_Byte1);
case 23:
- return _Letter_Row00_Col23;
+ return float2(_Letter_Row00_Col23_Byte0, _Letter_Row00_Col23_Byte1);
case 24:
- return _Letter_Row00_Col24;
+ return float2(_Letter_Row00_Col24_Byte0, _Letter_Row00_Col24_Byte1);
case 25:
- return _Letter_Row00_Col25;
+ return float2(_Letter_Row00_Col25_Byte0, _Letter_Row00_Col25_Byte1);
case 26:
- return _Letter_Row00_Col26;
+ return float2(_Letter_Row00_Col26_Byte0, _Letter_Row00_Col26_Byte1);
case 27:
- return _Letter_Row00_Col27;
+ return float2(_Letter_Row00_Col27_Byte0, _Letter_Row00_Col27_Byte1);
case 28:
- return _Letter_Row00_Col28;
+ return float2(_Letter_Row00_Col28_Byte0, _Letter_Row00_Col28_Byte1);
case 29:
- return _Letter_Row00_Col29;
+ return float2(_Letter_Row00_Col29_Byte0, _Letter_Row00_Col29_Byte1);
case 30:
- return _Letter_Row00_Col30;
+ return float2(_Letter_Row00_Col30_Byte0, _Letter_Row00_Col30_Byte1);
case 31:
- return _Letter_Row00_Col31;
+ return float2(_Letter_Row00_Col31_Byte0, _Letter_Row00_Col31_Byte1);
case 32:
- return _Letter_Row00_Col32;
+ return float2(_Letter_Row00_Col32_Byte0, _Letter_Row00_Col32_Byte1);
case 33:
- return _Letter_Row00_Col33;
+ return float2(_Letter_Row00_Col33_Byte0, _Letter_Row00_Col33_Byte1);
case 34:
- return _Letter_Row00_Col34;
+ return float2(_Letter_Row00_Col34_Byte0, _Letter_Row00_Col34_Byte1);
case 35:
- return _Letter_Row00_Col35;
+ return float2(_Letter_Row00_Col35_Byte0, _Letter_Row00_Col35_Byte1);
case 36:
- return _Letter_Row00_Col36;
+ return float2(_Letter_Row00_Col36_Byte0, _Letter_Row00_Col36_Byte1);
case 37:
- return _Letter_Row00_Col37;
+ return float2(_Letter_Row00_Col37_Byte0, _Letter_Row00_Col37_Byte1);
case 38:
- return _Letter_Row00_Col38;
+ return float2(_Letter_Row00_Col38_Byte0, _Letter_Row00_Col38_Byte1);
case 39:
- return _Letter_Row00_Col39;
+ return float2(_Letter_Row00_Col39_Byte0, _Letter_Row00_Col39_Byte1);
case 40:
- return _Letter_Row00_Col40;
+ return float2(_Letter_Row00_Col40_Byte0, _Letter_Row00_Col40_Byte1);
case 41:
- return _Letter_Row00_Col41;
+ return float2(_Letter_Row00_Col41_Byte0, _Letter_Row00_Col41_Byte1);
case 42:
- return _Letter_Row00_Col42;
+ return float2(_Letter_Row00_Col42_Byte0, _Letter_Row00_Col42_Byte1);
case 43:
- return _Letter_Row00_Col43;
+ return float2(_Letter_Row00_Col43_Byte0, _Letter_Row00_Col43_Byte1);
default:
- return 0;
+ return float2(0, 0);
}
case 2:
[forcecase] switch (CHAR_COL) {
case 0:
- return _Letter_Row01_Col00;
+ return float2(_Letter_Row01_Col00_Byte0, _Letter_Row01_Col00_Byte1);
case 1:
- return _Letter_Row01_Col01;
+ return float2(_Letter_Row01_Col01_Byte0, _Letter_Row01_Col01_Byte1);
case 2:
- return _Letter_Row01_Col02;
+ return float2(_Letter_Row01_Col02_Byte0, _Letter_Row01_Col02_Byte1);
case 3:
- return _Letter_Row01_Col03;
+ return float2(_Letter_Row01_Col03_Byte0, _Letter_Row01_Col03_Byte1);
case 4:
- return _Letter_Row01_Col04;
+ return float2(_Letter_Row01_Col04_Byte0, _Letter_Row01_Col04_Byte1);
case 5:
- return _Letter_Row01_Col05;
+ return float2(_Letter_Row01_Col05_Byte0, _Letter_Row01_Col05_Byte1);
case 6:
- return _Letter_Row01_Col06;
+ return float2(_Letter_Row01_Col06_Byte0, _Letter_Row01_Col06_Byte1);
case 7:
- return _Letter_Row01_Col07;
+ return float2(_Letter_Row01_Col07_Byte0, _Letter_Row01_Col07_Byte1);
case 8:
- return _Letter_Row01_Col08;
+ return float2(_Letter_Row01_Col08_Byte0, _Letter_Row01_Col08_Byte1);
case 9:
- return _Letter_Row01_Col09;
+ return float2(_Letter_Row01_Col09_Byte0, _Letter_Row01_Col09_Byte1);
case 10:
- return _Letter_Row01_Col10;
+ return float2(_Letter_Row01_Col10_Byte0, _Letter_Row01_Col10_Byte1);
case 11:
- return _Letter_Row01_Col11;
+ return float2(_Letter_Row01_Col11_Byte0, _Letter_Row01_Col11_Byte1);
case 12:
- return _Letter_Row01_Col12;
+ return float2(_Letter_Row01_Col12_Byte0, _Letter_Row01_Col12_Byte1);
case 13:
- return _Letter_Row01_Col13;
+ return float2(_Letter_Row01_Col13_Byte0, _Letter_Row01_Col13_Byte1);
case 14:
- return _Letter_Row01_Col14;
+ return float2(_Letter_Row01_Col14_Byte0, _Letter_Row01_Col14_Byte1);
case 15:
- return _Letter_Row01_Col15;
+ return float2(_Letter_Row01_Col15_Byte0, _Letter_Row01_Col15_Byte1);
case 16:
- return _Letter_Row01_Col16;
+ return float2(_Letter_Row01_Col16_Byte0, _Letter_Row01_Col16_Byte1);
case 17:
- return _Letter_Row01_Col17;
+ return float2(_Letter_Row01_Col17_Byte0, _Letter_Row01_Col17_Byte1);
case 18:
- return _Letter_Row01_Col18;
+ return float2(_Letter_Row01_Col18_Byte0, _Letter_Row01_Col18_Byte1);
case 19:
- return _Letter_Row01_Col19;
+ return float2(_Letter_Row01_Col19_Byte0, _Letter_Row01_Col19_Byte1);
case 20:
- return _Letter_Row01_Col20;
+ return float2(_Letter_Row01_Col20_Byte0, _Letter_Row01_Col20_Byte1);
case 21:
- return _Letter_Row01_Col21;
+ return float2(_Letter_Row01_Col21_Byte0, _Letter_Row01_Col21_Byte1);
case 22:
- return _Letter_Row01_Col22;
+ return float2(_Letter_Row01_Col22_Byte0, _Letter_Row01_Col22_Byte1);
case 23:
- return _Letter_Row01_Col23;
+ return float2(_Letter_Row01_Col23_Byte0, _Letter_Row01_Col23_Byte1);
case 24:
- return _Letter_Row01_Col24;
+ return float2(_Letter_Row01_Col24_Byte0, _Letter_Row01_Col24_Byte1);
case 25:
- return _Letter_Row01_Col25;
+ return float2(_Letter_Row01_Col25_Byte0, _Letter_Row01_Col25_Byte1);
case 26:
- return _Letter_Row01_Col26;
+ return float2(_Letter_Row01_Col26_Byte0, _Letter_Row01_Col26_Byte1);
case 27:
- return _Letter_Row01_Col27;
+ return float2(_Letter_Row01_Col27_Byte0, _Letter_Row01_Col27_Byte1);
case 28:
- return _Letter_Row01_Col28;
+ return float2(_Letter_Row01_Col28_Byte0, _Letter_Row01_Col28_Byte1);
case 29:
- return _Letter_Row01_Col29;
+ return float2(_Letter_Row01_Col29_Byte0, _Letter_Row01_Col29_Byte1);
case 30:
- return _Letter_Row01_Col30;
+ return float2(_Letter_Row01_Col30_Byte0, _Letter_Row01_Col30_Byte1);
case 31:
- return _Letter_Row01_Col31;
+ return float2(_Letter_Row01_Col31_Byte0, _Letter_Row01_Col31_Byte1);
case 32:
- return _Letter_Row01_Col32;
+ return float2(_Letter_Row01_Col32_Byte0, _Letter_Row01_Col32_Byte1);
case 33:
- return _Letter_Row01_Col33;
+ return float2(_Letter_Row01_Col33_Byte0, _Letter_Row01_Col33_Byte1);
case 34:
- return _Letter_Row01_Col34;
+ return float2(_Letter_Row01_Col34_Byte0, _Letter_Row01_Col34_Byte1);
case 35:
- return _Letter_Row01_Col35;
+ return float2(_Letter_Row01_Col35_Byte0, _Letter_Row01_Col35_Byte1);
case 36:
- return _Letter_Row01_Col36;
+ return float2(_Letter_Row01_Col36_Byte0, _Letter_Row01_Col36_Byte1);
case 37:
- return _Letter_Row01_Col37;
+ return float2(_Letter_Row01_Col37_Byte0, _Letter_Row01_Col37_Byte1);
case 38:
- return _Letter_Row01_Col38;
+ return float2(_Letter_Row01_Col38_Byte0, _Letter_Row01_Col38_Byte1);
case 39:
- return _Letter_Row01_Col39;
+ return float2(_Letter_Row01_Col39_Byte0, _Letter_Row01_Col39_Byte1);
case 40:
- return _Letter_Row01_Col40;
+ return float2(_Letter_Row01_Col40_Byte0, _Letter_Row01_Col40_Byte1);
case 41:
- return _Letter_Row01_Col41;
+ return float2(_Letter_Row01_Col41_Byte0, _Letter_Row01_Col41_Byte1);
case 42:
- return _Letter_Row01_Col42;
+ return float2(_Letter_Row01_Col42_Byte0, _Letter_Row01_Col42_Byte1);
case 43:
- return _Letter_Row01_Col43;
+ return float2(_Letter_Row01_Col43_Byte0, _Letter_Row01_Col43_Byte1);
default:
- return 0;
+ return float2(0, 0);
}
case 1:
[forcecase] switch (CHAR_COL) {
case 0:
- return _Letter_Row02_Col00;
+ return float2(_Letter_Row02_Col00_Byte0, _Letter_Row02_Col00_Byte1);
case 1:
- return _Letter_Row02_Col01;
+ return float2(_Letter_Row02_Col01_Byte0, _Letter_Row02_Col01_Byte1);
case 2:
- return _Letter_Row02_Col02;
+ return float2(_Letter_Row02_Col02_Byte0, _Letter_Row02_Col02_Byte1);
case 3:
- return _Letter_Row02_Col03;
+ return float2(_Letter_Row02_Col03_Byte0, _Letter_Row02_Col03_Byte1);
case 4:
- return _Letter_Row02_Col04;
+ return float2(_Letter_Row02_Col04_Byte0, _Letter_Row02_Col04_Byte1);
case 5:
- return _Letter_Row02_Col05;
+ return float2(_Letter_Row02_Col05_Byte0, _Letter_Row02_Col05_Byte1);
case 6:
- return _Letter_Row02_Col06;
+ return float2(_Letter_Row02_Col06_Byte0, _Letter_Row02_Col06_Byte1);
case 7:
- return _Letter_Row02_Col07;
+ return float2(_Letter_Row02_Col07_Byte0, _Letter_Row02_Col07_Byte1);
case 8:
- return _Letter_Row02_Col08;
+ return float2(_Letter_Row02_Col08_Byte0, _Letter_Row02_Col08_Byte1);
case 9:
- return _Letter_Row02_Col09;
+ return float2(_Letter_Row02_Col09_Byte0, _Letter_Row02_Col09_Byte1);
case 10:
- return _Letter_Row02_Col10;
+ return float2(_Letter_Row02_Col10_Byte0, _Letter_Row02_Col10_Byte1);
case 11:
- return _Letter_Row02_Col11;
+ return float2(_Letter_Row02_Col11_Byte0, _Letter_Row02_Col11_Byte1);
case 12:
- return _Letter_Row02_Col12;
+ return float2(_Letter_Row02_Col12_Byte0, _Letter_Row02_Col12_Byte1);
case 13:
- return _Letter_Row02_Col13;
+ return float2(_Letter_Row02_Col13_Byte0, _Letter_Row02_Col13_Byte1);
case 14:
- return _Letter_Row02_Col14;
+ return float2(_Letter_Row02_Col14_Byte0, _Letter_Row02_Col14_Byte1);
case 15:
- return _Letter_Row02_Col15;
+ return float2(_Letter_Row02_Col15_Byte0, _Letter_Row02_Col15_Byte1);
case 16:
- return _Letter_Row02_Col16;
+ return float2(_Letter_Row02_Col16_Byte0, _Letter_Row02_Col16_Byte1);
case 17:
- return _Letter_Row02_Col17;
+ return float2(_Letter_Row02_Col17_Byte0, _Letter_Row02_Col17_Byte1);
case 18:
- return _Letter_Row02_Col18;
+ return float2(_Letter_Row02_Col18_Byte0, _Letter_Row02_Col18_Byte1);
case 19:
- return _Letter_Row02_Col19;
+ return float2(_Letter_Row02_Col19_Byte0, _Letter_Row02_Col19_Byte1);
case 20:
- return _Letter_Row02_Col20;
+ return float2(_Letter_Row02_Col20_Byte0, _Letter_Row02_Col20_Byte1);
case 21:
- return _Letter_Row02_Col21;
+ return float2(_Letter_Row02_Col21_Byte0, _Letter_Row02_Col21_Byte1);
case 22:
- return _Letter_Row02_Col22;
+ return float2(_Letter_Row02_Col22_Byte0, _Letter_Row02_Col22_Byte1);
case 23:
- return _Letter_Row02_Col23;
+ return float2(_Letter_Row02_Col23_Byte0, _Letter_Row02_Col23_Byte1);
case 24:
- return _Letter_Row02_Col24;
+ return float2(_Letter_Row02_Col24_Byte0, _Letter_Row02_Col24_Byte1);
case 25:
- return _Letter_Row02_Col25;
+ return float2(_Letter_Row02_Col25_Byte0, _Letter_Row02_Col25_Byte1);
case 26:
- return _Letter_Row02_Col26;
+ return float2(_Letter_Row02_Col26_Byte0, _Letter_Row02_Col26_Byte1);
case 27:
- return _Letter_Row02_Col27;
+ return float2(_Letter_Row02_Col27_Byte0, _Letter_Row02_Col27_Byte1);
case 28:
- return _Letter_Row02_Col28;
+ return float2(_Letter_Row02_Col28_Byte0, _Letter_Row02_Col28_Byte1);
case 29:
- return _Letter_Row02_Col29;
+ return float2(_Letter_Row02_Col29_Byte0, _Letter_Row02_Col29_Byte1);
case 30:
- return _Letter_Row02_Col30;
+ return float2(_Letter_Row02_Col30_Byte0, _Letter_Row02_Col30_Byte1);
case 31:
- return _Letter_Row02_Col31;
+ return float2(_Letter_Row02_Col31_Byte0, _Letter_Row02_Col31_Byte1);
case 32:
- return _Letter_Row02_Col32;
+ return float2(_Letter_Row02_Col32_Byte0, _Letter_Row02_Col32_Byte1);
case 33:
- return _Letter_Row02_Col33;
+ return float2(_Letter_Row02_Col33_Byte0, _Letter_Row02_Col33_Byte1);
case 34:
- return _Letter_Row02_Col34;
+ return float2(_Letter_Row02_Col34_Byte0, _Letter_Row02_Col34_Byte1);
case 35:
- return _Letter_Row02_Col35;
+ return float2(_Letter_Row02_Col35_Byte0, _Letter_Row02_Col35_Byte1);
case 36:
- return _Letter_Row02_Col36;
+ return float2(_Letter_Row02_Col36_Byte0, _Letter_Row02_Col36_Byte1);
case 37:
- return _Letter_Row02_Col37;
+ return float2(_Letter_Row02_Col37_Byte0, _Letter_Row02_Col37_Byte1);
case 38:
- return _Letter_Row02_Col38;
+ return float2(_Letter_Row02_Col38_Byte0, _Letter_Row02_Col38_Byte1);
case 39:
- return _Letter_Row02_Col39;
+ return float2(_Letter_Row02_Col39_Byte0, _Letter_Row02_Col39_Byte1);
case 40:
- return _Letter_Row02_Col40;
+ return float2(_Letter_Row02_Col40_Byte0, _Letter_Row02_Col40_Byte1);
case 41:
- return _Letter_Row02_Col41;
+ return float2(_Letter_Row02_Col41_Byte0, _Letter_Row02_Col41_Byte1);
case 42:
- return _Letter_Row02_Col42;
+ return float2(_Letter_Row02_Col42_Byte0, _Letter_Row02_Col42_Byte1);
case 43:
- return _Letter_Row02_Col43;
+ return float2(_Letter_Row02_Col43_Byte0, _Letter_Row02_Col43_Byte1);
default:
- return 0;
+ return float2(0, 0);
}
case 0:
[forcecase] switch (CHAR_COL) {
case 0:
- return _Letter_Row03_Col00;
+ return float2(_Letter_Row03_Col00_Byte0, _Letter_Row03_Col00_Byte1);
case 1:
- return _Letter_Row03_Col01;
+ return float2(_Letter_Row03_Col01_Byte0, _Letter_Row03_Col01_Byte1);
case 2:
- return _Letter_Row03_Col02;
+ return float2(_Letter_Row03_Col02_Byte0, _Letter_Row03_Col02_Byte1);
case 3:
- return _Letter_Row03_Col03;
+ return float2(_Letter_Row03_Col03_Byte0, _Letter_Row03_Col03_Byte1);
case 4:
- return _Letter_Row03_Col04;
+ return float2(_Letter_Row03_Col04_Byte0, _Letter_Row03_Col04_Byte1);
case 5:
- return _Letter_Row03_Col05;
+ return float2(_Letter_Row03_Col05_Byte0, _Letter_Row03_Col05_Byte1);
case 6:
- return _Letter_Row03_Col06;
+ return float2(_Letter_Row03_Col06_Byte0, _Letter_Row03_Col06_Byte1);
case 7:
- return _Letter_Row03_Col07;
+ return float2(_Letter_Row03_Col07_Byte0, _Letter_Row03_Col07_Byte1);
case 8:
- return _Letter_Row03_Col08;
+ return float2(_Letter_Row03_Col08_Byte0, _Letter_Row03_Col08_Byte1);
case 9:
- return _Letter_Row03_Col09;
+ return float2(_Letter_Row03_Col09_Byte0, _Letter_Row03_Col09_Byte1);
case 10:
- return _Letter_Row03_Col10;
+ return float2(_Letter_Row03_Col10_Byte0, _Letter_Row03_Col10_Byte1);
case 11:
- return _Letter_Row03_Col11;
+ return float2(_Letter_Row03_Col11_Byte0, _Letter_Row03_Col11_Byte1);
case 12:
- return _Letter_Row03_Col12;
+ return float2(_Letter_Row03_Col12_Byte0, _Letter_Row03_Col12_Byte1);
case 13:
- return _Letter_Row03_Col13;
+ return float2(_Letter_Row03_Col13_Byte0, _Letter_Row03_Col13_Byte1);
case 14:
- return _Letter_Row03_Col14;
+ return float2(_Letter_Row03_Col14_Byte0, _Letter_Row03_Col14_Byte1);
case 15:
- return _Letter_Row03_Col15;
+ return float2(_Letter_Row03_Col15_Byte0, _Letter_Row03_Col15_Byte1);
case 16:
- return _Letter_Row03_Col16;
+ return float2(_Letter_Row03_Col16_Byte0, _Letter_Row03_Col16_Byte1);
case 17:
- return _Letter_Row03_Col17;
+ return float2(_Letter_Row03_Col17_Byte0, _Letter_Row03_Col17_Byte1);
case 18:
- return _Letter_Row03_Col18;
+ return float2(_Letter_Row03_Col18_Byte0, _Letter_Row03_Col18_Byte1);
case 19:
- return _Letter_Row03_Col19;
+ return float2(_Letter_Row03_Col19_Byte0, _Letter_Row03_Col19_Byte1);
case 20:
- return _Letter_Row03_Col20;
+ return float2(_Letter_Row03_Col20_Byte0, _Letter_Row03_Col20_Byte1);
case 21:
- return _Letter_Row03_Col21;
+ return float2(_Letter_Row03_Col21_Byte0, _Letter_Row03_Col21_Byte1);
case 22:
- return _Letter_Row03_Col22;
+ return float2(_Letter_Row03_Col22_Byte0, _Letter_Row03_Col22_Byte1);
case 23:
- return _Letter_Row03_Col23;
+ return float2(_Letter_Row03_Col23_Byte0, _Letter_Row03_Col23_Byte1);
case 24:
- return _Letter_Row03_Col24;
+ return float2(_Letter_Row03_Col24_Byte0, _Letter_Row03_Col24_Byte1);
case 25:
- return _Letter_Row03_Col25;
+ return float2(_Letter_Row03_Col25_Byte0, _Letter_Row03_Col25_Byte1);
case 26:
- return _Letter_Row03_Col26;
+ return float2(_Letter_Row03_Col26_Byte0, _Letter_Row03_Col26_Byte1);
case 27:
- return _Letter_Row03_Col27;
+ return float2(_Letter_Row03_Col27_Byte0, _Letter_Row03_Col27_Byte1);
case 28:
- return _Letter_Row03_Col28;
+ return float2(_Letter_Row03_Col28_Byte0, _Letter_Row03_Col28_Byte1);
case 29:
- return _Letter_Row03_Col29;
+ return float2(_Letter_Row03_Col29_Byte0, _Letter_Row03_Col29_Byte1);
case 30:
- return _Letter_Row03_Col30;
+ return float2(_Letter_Row03_Col30_Byte0, _Letter_Row03_Col30_Byte1);
case 31:
- return _Letter_Row03_Col31;
+ return float2(_Letter_Row03_Col31_Byte0, _Letter_Row03_Col31_Byte1);
case 32:
- return _Letter_Row03_Col32;
+ return float2(_Letter_Row03_Col32_Byte0, _Letter_Row03_Col32_Byte1);
case 33:
- return _Letter_Row03_Col33;
+ return float2(_Letter_Row03_Col33_Byte0, _Letter_Row03_Col33_Byte1);
case 34:
- return _Letter_Row03_Col34;
+ return float2(_Letter_Row03_Col34_Byte0, _Letter_Row03_Col34_Byte1);
case 35:
- return _Letter_Row03_Col35;
+ return float2(_Letter_Row03_Col35_Byte0, _Letter_Row03_Col35_Byte1);
case 36:
- return _Letter_Row03_Col36;
+ return float2(_Letter_Row03_Col36_Byte0, _Letter_Row03_Col36_Byte1);
case 37:
- return _Letter_Row03_Col37;
+ return float2(_Letter_Row03_Col37_Byte0, _Letter_Row03_Col37_Byte1);
case 38:
- return _Letter_Row03_Col38;
+ return float2(_Letter_Row03_Col38_Byte0, _Letter_Row03_Col38_Byte1);
case 39:
- return _Letter_Row03_Col39;
+ return float2(_Letter_Row03_Col39_Byte0, _Letter_Row03_Col39_Byte1);
case 40:
- return _Letter_Row03_Col40;
+ return float2(_Letter_Row03_Col40_Byte0, _Letter_Row03_Col40_Byte1);
case 41:
- return _Letter_Row03_Col41;
+ return float2(_Letter_Row03_Col41_Byte0, _Letter_Row03_Col41_Byte1);
case 42:
- return _Letter_Row03_Col42;
+ return float2(_Letter_Row03_Col42_Byte0, _Letter_Row03_Col42_Byte1);
case 43:
- return _Letter_Row03_Col43;
+ return float2(_Letter_Row03_Col43_Byte0, _Letter_Row03_Col43_Byte1);
default:
- return 0;
+ return float2(0, 0);
}
}
- return 0;
+ return float2(0, 0);
}
fixed4 frag (v2f i) : SV_Target
@@ -856,10 +1232,31 @@
float uv_y_margin = 0.06;
uv = AddMarginToUV(uv, uv_x_margin, uv_y_margin);
- float letter = floor(GetLetterParameter(uv));
+ int2 letter_bytes = (int2) floor(GetLetterParameter(uv));
+ int letter = letter_bytes[0] | (letter_bytes[1] << 8);
+
uv = GetLetter(uv, letter);
- fixed4 ret = _Font_0x0000_0x1FFF.Sample(sampler_linear_repeat, uv);
- return ret;
+
+ int which_texture = (int) floor(letter / (64 * 128));
+ [forcecase] switch (which_texture)
+ {
+ case 0:
+ return _Font_0x0000_0x1FFF.Sample(sampler_linear_repeat, uv);
+ case 1:
+ return _Font_0x2000_0x3FFF.Sample(sampler_linear_repeat, uv);
+ case 2:
+ return _Font_0x4000_0x5FFF.Sample(sampler_linear_repeat, uv);
+ case 3:
+ return _Font_0x6000_0x7FFF.Sample(sampler_linear_repeat, uv);
+ case 4:
+ return _Font_0x8000_0x9FFF.Sample(sampler_linear_repeat, uv);
+ case 5:
+ return _Font_0xA000_0xBFFF.Sample(sampler_linear_repeat, uv);
+ case 6:
+ return _Font_0xC000_0xDFFF.Sample(sampler_linear_repeat, uv);
+ default:
+ return _Font_0x0000_0x1FFF.Sample(sampler_linear_repeat, uv);
+ }
}
ENDCG
}
diff --git a/font-0.png b/font-0.png
new file mode 100644
index 0000000..39656ef
--- /dev/null
+++ b/font-0.png
Binary files differ
diff --git a/font-0.png.meta b/font-0.png.meta
new file mode 100644
index 0000000..4316b24
--- /dev/null
+++ b/font-0.png.meta
@@ -0,0 +1,116 @@
+fileFormatVersion: 2
+guid: 0417deb9fee97e24e9099569bed34c6c
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/font-1.png b/font-1.png
new file mode 100644
index 0000000..993b090
--- /dev/null
+++ b/font-1.png
Binary files differ
diff --git a/font-1.png.meta b/font-1.png.meta
new file mode 100644
index 0000000..62c9a60
--- /dev/null
+++ b/font-1.png.meta
@@ -0,0 +1,116 @@
+fileFormatVersion: 2
+guid: 45d1d35ef90dd5742bab73718b1fa64e
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/font-2.png b/font-2.png
new file mode 100644
index 0000000..bcda0ae
--- /dev/null
+++ b/font-2.png
Binary files differ
diff --git a/font-2.png.meta b/font-2.png.meta
new file mode 100644
index 0000000..475ca07
--- /dev/null
+++ b/font-2.png.meta
@@ -0,0 +1,116 @@
+fileFormatVersion: 2
+guid: fbb9dcb303ae5fc46a1b4f6b82b55a16
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/font-3.png b/font-3.png
new file mode 100644
index 0000000..8c6ea47
--- /dev/null
+++ b/font-3.png
Binary files differ
diff --git a/font-3.png.meta b/font-3.png.meta
new file mode 100644
index 0000000..b1c1603
--- /dev/null
+++ b/font-3.png.meta
@@ -0,0 +1,116 @@
+fileFormatVersion: 2
+guid: cf2fc1dc6a21e9d42bf08d8148dba0b7
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/font-4.png b/font-4.png
new file mode 100644
index 0000000..307ebf8
--- /dev/null
+++ b/font-4.png
Binary files differ
diff --git a/font-4.png.meta b/font-4.png.meta
new file mode 100644
index 0000000..5b723d3
--- /dev/null
+++ b/font-4.png.meta
@@ -0,0 +1,116 @@
+fileFormatVersion: 2
+guid: d06c79dd35cbaa94c81b2eb9240a7c57
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/font-5.png b/font-5.png
new file mode 100644
index 0000000..ed6c860
--- /dev/null
+++ b/font-5.png
Binary files differ
diff --git a/font-5.png.meta b/font-5.png.meta
new file mode 100644
index 0000000..57852ac
--- /dev/null
+++ b/font-5.png.meta
@@ -0,0 +1,116 @@
+fileFormatVersion: 2
+guid: dea31226b42fe7e4d9470806d43afcf8
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/font-6.png b/font-6.png
new file mode 100644
index 0000000..ee0d5c8
--- /dev/null
+++ b/font-6.png
Binary files differ
diff --git a/font-6.png.meta b/font-6.png.meta
new file mode 100644
index 0000000..2a01dd3
--- /dev/null
+++ b/font-6.png.meta
@@ -0,0 +1,116 @@
+fileFormatVersion: 2
+guid: e8c2974f31efa7a4e9e7588c90561a85
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Android
+ maxTextureSize: 8192
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/generate_fonts.py b/generate_fonts.py
index ccd9870..c21382d 100644
--- a/generate_fonts.py
+++ b/generate_fonts.py
@@ -5,8 +5,9 @@ from PIL import Image, ImageFont, ImageDraw
import math
# Use a power of 2 pixels per character so we can evenly divide the plane.
-font_pixels = 64
+font_pixels = 128
font = ImageFont.truetype("unifont-15.0.01.ttf", font_pixels)
+font_half_sz = ImageFont.truetype("unifont-15.0.01.ttf", int(font_pixels / 2))
n_rows = 64
n_cols = 128
@@ -60,8 +61,8 @@ total_textures = math.ceil(total_rows / n_rows)
print("total textures {}".format(total_textures))
for nth_texture in range(0, total_textures):
- # Create a 4K grayscale ("L") image
- image = Image.new(mode="L", size=(4096,4096), color=0)
+ # Create an 8K grayscale ("L") image
+ image = Image.new(mode="1", size=(8192,8192), color=0)
draw = ImageDraw.Draw(image)
row_begin = nth_texture * n_rows
@@ -71,11 +72,19 @@ for nth_texture in range(0, total_textures):
for col in range(0, n_cols):
# Generate the unicode character for this spot.
n = row * n_cols + col
+ char = None
if n in allowlist:
- line += chr(n)
+ char = chr(n)
else:
- line += " "
- draw.text((0, (row - row_begin) * font_pixels), line, font=font, fill=255)
+ char = " "
+ # Hack: Chinese, Japanese, and Korean characters are all double
+ # width and are all on textures [1,6]. To fit them in the same
+ # grid, we use a half-size font.
+ if nth_texture == 0:
+ draw.text((col * font_pixels / 2, (row - row_begin) * font_pixels), char, font=font, fill=255)
+ else:
+ draw.text((col * font_pixels / 2, (row - row_begin) * font_pixels), char,
+ font=font_half_sz, fill=255)
image.save("font-%01d.png" % nth_texture)
diff --git a/generate_params.py b/generate_params.py
index 4cdab00..63203d0 100644
--- a/generate_params.py
+++ b/generate_params.py
@@ -82,6 +82,7 @@ print(generate_utils.replaceMacros(BOOL_PARAM, params))
params["PARAM_NAME"] = generate_utils.getSelectParam()
print(generate_utils.replaceMacros(INT_PARAM, params))
-for i in range(0, generate_utils.NUM_LAYERS):
- params["PARAM_NAME"] = generate_utils.getBlendParam(i)
- print(generate_utils.replaceMacros(FLOAT_PARAM, params))
+for byte in range(0, generate_utils.BYTES_PER_CHAR):
+ for i in range(0, generate_utils.NUM_LAYERS):
+ params["PARAM_NAME"] = generate_utils.getBlendParam(i, byte)
+ print(generate_utils.replaceMacros(FLOAT_PARAM, params))
diff --git a/generate_utils.py b/generate_utils.py
index 171857b..119714d 100644
--- a/generate_utils.py
+++ b/generate_utils.py
@@ -13,6 +13,7 @@ BOARD_ROWS=4
BOARD_COLS=44
INDEX_BITS=4
CHARS_PER_CELL=256
+BYTES_PER_CHAR=2
NUM_LAYERS=ceil((BOARD_ROWS * BOARD_COLS) / (2**INDEX_BITS))
@@ -63,29 +64,29 @@ def getLockWorldParam():
# Each layer controls a group of cells. There's only one letter per layer, thus
# this is also the name of the parameter which sets the letter for a layer.
-def getLayerParam(which_layer: int) -> str:
- return "TaSTT_L%02d" % which_layer
+def getLayerParam(which_layer: int, byte: int) -> str:
+ return "TaSTT_L%02dB%01d" % (which_layer, byte)
-def getLayerName(which_layer: int) -> str:
- return getLayerParam(which_layer)
+def getLayerName(which_layer: int, byte: int) -> str:
+ return getLayerParam(which_layer, byte)
-def getBlendParam(which_layer: int) -> str:
- return "TaSTT_L%02d_Blend" % which_layer
+def getBlendParam(which_layer: int, byte: int) -> str:
+ return "TaSTT_L%02dB%01d_Blend" % (which_layer, byte)
-def getDefaultStateName(which_layer):
- return "TaSTT_L%02d_Do_Nothing" % which_layer
+def getDefaultStateName(which_layer:int , byte: int):
+ return "TaSTT_L%02dB%01d_Do_Nothing" % (which_layer, byte)
-def getActiveStateName(which_layer):
- return "TaSTT_L%02d_Active" % which_layer
+def getActiveStateName(which_layer: int, byte: int):
+ return "TaSTT_L%02dB%01d_Active" % (which_layer, byte)
def getSelectStateName(which_layer, select):
- return "TaSTT_L%02d_S%02d" % (which_layer, select)
+ return "TaSTT_L%02d_S%02d_B%01d" % (which_layer, select, byte)
-def getBlendStateName(which_layer, select):
- return "TaSTT_L%02d_S%02d_Blend" % (which_layer, select)
+def getBlendStateName(which_layer, select, byte):
+ return "TaSTT_L%02d_S%02d_B%01d_Blend" % (which_layer, select, byte)
-def getLetterStateName(which_layer, select, letter):
- return "TaSTT_L%02d_S%02d_L%03d" % (which_layer, select, letter)
+def getLetterStateName(which_layer, select, letter, byte):
+ return "TaSTT_L%02d_S%02d_L%03d_B%01d" % (which_layer, select, letter, byte)
def getSelectParam() -> str:
return "TaSTT_Select"
@@ -101,34 +102,34 @@ def getBoardIndex(which_layer, select):
# those cells.
return (select * NUM_LAYERS + which_layer) % (BOARD_ROWS * BOARD_COLS)
-def getShaderParamByRowCol(row, col):
- return "_Letter_Row%02d_Col%02d" % (row, col)
+def getShaderParamByRowColByte(row, col, byte):
+ return "_Letter_Row%02d_Col%02d_Byte%01d" % (row, col, byte)
# Mapping from layer to shader param.
-def getShaderParam(which_layer, select):
+def getShaderParam(which_layer, select, byte):
index = getBoardIndex(which_layer, select)
col = index % BOARD_COLS
row = floor(index / BOARD_COLS)
- return getShaderParamByRowCol(row, col)
+ return getShaderParamByRowCol(row, col, byte)
# The name of the animation which writes `letter` at a specific position in the
# display.
-def getLetterAnimationName(row, col, letter):
- return "R%02dC%02dL%02d" % (row, col, letter)
+def getLetterAnimationName(row, col, letter, nth_byte):
+ return "R%02dC%02dL%02dB%01d" % (row, col, letter, nth_byte)
# The name of the animation which clears the entire board.
def getClearAnimationName():
return "TaSTT_Clear_Board"
-def getAnimationNameByLayerAndIndex(which_layer, select, letter):
+def getAnimationNameByLayerAndIndex(which_layer, select, letter, nth_byte):
index = getBoardIndex(which_layer, select)
col = index % BOARD_COLS
row = floor(index / BOARD_COLS)
- return "R%02dC%02dL%02d" % (row, col, letter)
+ return "R%02dC%02dL%02dB%01d" % (row, col, letter, nth_byte)
# Returns the path to the animation for the given shader parameter + letter.
def getAnimationPath(shader_param, letter):
diff --git a/libtastt.py b/libtastt.py
index 7d9f11a..46f2515 100644
--- a/libtastt.py
+++ b/libtastt.py
@@ -166,17 +166,18 @@ def generateClearAnimation(anim_dir, guid_map):
encoding = osc_ctrl.generateEncoding()
letter = encoding[' ']
- for row in range(0, generate_utils.BOARD_ROWS):
- for col in range(0, generate_utils.BOARD_COLS):
- curve = curve_template.copy()
- for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
- keyframe.mapping['value'] = str(letter +
- UNITY_ANIMATION_FUDGE_MARGIN)
- curve.mapping['attribute'] = "material.{}".format(generate_utils.getShaderParamByRowCol(row, col))
- curve.mapping['path'] = "World Constraint/Container/TaSTT"
- # Add curve to animation
- anim_clip.mapping['m_FloatCurves'].sequence.append(curve)
- anim_clip.mapping['m_EditorCurves'].sequence.append(curve)
+ for byte in range(0, generate_utils.BYTES_PER_CHAR):
+ for row in range(0, generate_utils.BOARD_ROWS):
+ for col in range(0, generate_utils.BOARD_COLS):
+ curve = curve_template.copy()
+ for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
+ keyframe.mapping['value'] = str(letter +
+ UNITY_ANIMATION_FUDGE_MARGIN)
+ curve.mapping['attribute'] = "material.{}".format(generate_utils.getShaderParamByRowColByte(row, col, byte))
+ curve.mapping['path'] = "World Constraint/Container/TaSTT"
+ # Add curve to animation
+ anim_clip.mapping['m_FloatCurves'].sequence.append(curve)
+ anim_clip.mapping['m_EditorCurves'].sequence.append(curve)
# Serialize animation to file
anim_name = generate_utils.getClearAnimationName()
anim_path = anim_dir + anim_name + ".anim"
@@ -204,41 +205,43 @@ def generateAnimations(anim_dir, guid_map):
anim_clip.mapping['m_FloatCurves'].sequence = []
anim_clip.mapping['m_EditorCurves'].sequence = []
- for row in range(0, generate_utils.BOARD_ROWS):
- print("Generating letter animations (row {}/{})".format(row,
- generate_utils.BOARD_ROWS), file=sys.stderr)
- for col in range(0, generate_utils.BOARD_COLS):
- for letter in range(0, 2):
- if letter == 1:
- letter = generate_utils.CHARS_PER_CELL - 1
-
- # Make a deep copy of the templates
- node = anim_node.copy()
- curve = curve_template.copy()
- clip = node.mapping['AnimationClip']
- # Populate animation name
- anim_name = generate_utils.getLetterAnimationName(row, col, letter)
- clip.mapping['m_Name'] = anim_name
- # Populate letter value
- for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
- keyframe.mapping['value'] = str(letter + UNITY_ANIMATION_FUDGE_MARGIN)
- # Populate path to letter parameter
- curve.mapping['attribute'] = "material.{}".format(generate_utils.getShaderParamByRowCol(row, col))
- curve.mapping['path'] = "World Constraint/Container/TaSTT"
- # Add curve to animation
- clip.mapping['m_FloatCurves'].sequence.append(curve)
- clip.mapping['m_EditorCurves'].sequence.append(curve)
- # Serialize animation to file
- anim_path = anim_dir + anim_name + ".anim"
- with open(anim_path, "w") as f:
- f.write(libunity.unityYamlToString([node]))
- # Generate metadata
- meta = libunity.Metadata()
- with open(anim_path + ".meta", "w") as f:
- f.write(str(meta))
- # Add metadata to guid map
- guid_map[anim_path] = meta.guid
- guid_map[meta.guid] = anim_path
+ # To support more languages, we use 2 bytes per character, giving us a 64K character set.
+ for byte in range(0, generate_utils.BYTES_PER_CHAR):
+ for row in range(0, generate_utils.BOARD_ROWS):
+ print("Generating letter animations (row {}/{}) (byte {}/2)".format(row,
+ generate_utils.BOARD_ROWS, byte), file=sys.stderr)
+ for col in range(0, generate_utils.BOARD_COLS):
+ for letter in range(0, 2):
+ if letter == 1:
+ letter = generate_utils.CHARS_PER_CELL - 1
+
+ # Make a deep copy of the templates
+ node = anim_node.copy()
+ curve = curve_template.copy()
+ clip = node.mapping['AnimationClip']
+ # Populate animation name
+ anim_name = generate_utils.getLetterAnimationName(row, col, letter, byte)
+ clip.mapping['m_Name'] = anim_name
+ # Populate letter value
+ for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
+ keyframe.mapping['value'] = str(letter + UNITY_ANIMATION_FUDGE_MARGIN)
+ # Populate path to letter parameter
+ curve.mapping['attribute'] = "material.{}".format(generate_utils.getShaderParamByRowColByte(row, col, byte))
+ curve.mapping['path'] = "World Constraint/Container/TaSTT"
+ # Add curve to animation
+ clip.mapping['m_FloatCurves'].sequence.append(curve)
+ clip.mapping['m_EditorCurves'].sequence.append(curve)
+ # Serialize animation to file
+ anim_path = anim_dir + anim_name + ".anim"
+ with open(anim_path, "w") as f:
+ f.write(libunity.unityYamlToString([node]))
+ # Generate metadata
+ meta = libunity.Metadata()
+ with open(anim_path + ".meta", "w") as f:
+ f.write(str(meta))
+ # Add metadata to guid map
+ guid_map[anim_path] = meta.guid
+ guid_map[meta.guid] = anim_path
def generateFXController(anim: libunity.UnityAnimator) -> typing.Dict[int, libunity.UnityDocument]:
parser = libunity.UnityParser()
@@ -257,24 +260,26 @@ def generateFXController(anim: libunity.UnityAnimator) -> typing.Dict[int, libun
anim.addParameter(generate_utils.getClearBoardParam(), bool)
layers = {}
- for i in range(0, generate_utils.NUM_LAYERS):
- anim.addParameter(generate_utils.getBlendParam(i), float)
+ for byte in range(0, generate_utils.BYTES_PER_CHAR):
+ layers[byte] = {}
+ for i in range(0, generate_utils.NUM_LAYERS):
+ anim.addParameter(generate_utils.getBlendParam(i, byte), float)
- layer = anim.addLayer(generate_utils.getLayerName(i))
- layers[i] = layer
+ layer = anim.addLayer(generate_utils.getLayerName(i, byte))
+ layers[byte][i] = layer
anim.addParameter(generate_utils.getSelectParam(), int)
return layers
def generateFXLayer(which_layer: int, anim: libunity.UnityAnimator, layer:
- libunity.UnityDocument, gen_anim_dir: str):
+ libunity.UnityDocument, gen_anim_dir: str, byte: int):
is_default_state = True
default_state = anim.addAnimatorState(layer,
- generate_utils.getDefaultStateName(which_layer), is_default_state)
+ generate_utils.getDefaultStateName(which_layer, byte), is_default_state)
dy = 100
active_state = anim.addAnimatorState(layer,
- generate_utils.getActiveStateName(which_layer), dy = dy)
+ generate_utils.getActiveStateName(which_layer, byte), dy = dy)
active_state_transition = anim.addTransition(active_state)
enable_param = generate_utils.getEnableParam()
@@ -289,18 +294,18 @@ def generateFXLayer(which_layer: int, anim: libunity.UnityAnimator, layer:
# Create blend tree for this region.
anim_lo_path = gen_anim_dir + \
generate_utils.getAnimationNameByLayerAndIndex(
- which_layer, i, 0) + \
+ which_layer, i, 0, byte) + \
".anim"
guid_lo = guid_map[anim_lo_path]
anim_hi_path = gen_anim_dir + \
generate_utils.getAnimationNameByLayerAndIndex(
- which_layer, i, generate_utils.CHARS_PER_CELL - 1) + \
+ which_layer, i, generate_utils.CHARS_PER_CELL - 1, byte) + \
".anim"
guid_hi = guid_map[anim_hi_path]
select_states[i] = anim.addAnimatorBlendTree(layer,
- generate_utils.getBlendStateName(which_layer, i),
- generate_utils.getBlendParam(which_layer),
+ generate_utils.getBlendStateName(which_layer, i, byte),
+ generate_utils.getBlendParam(which_layer, byte),
guid_lo, guid_hi, dx = dx, dy = dy)
state = select_states[i]
@@ -372,9 +377,10 @@ def generateFX(guid_map, gen_anim_dir):
layers = generateFXController(anim)
# TODO(yum) parallelize
- for which_layer, layer in layers.items():
- print("Generating layer {}/{}".format(which_layer, len(layers.items())), file=sys.stderr)
- generateFXLayer(which_layer, anim, layer, gen_anim_dir)
+ for byte in range(0, generate_utils.BYTES_PER_CHAR):
+ for which_layer, layer in layers[byte].items():
+ print("Generating layer {}/{}".format(which_layer, len(layers[byte].items())), file=sys.stderr)
+ generateFXLayer(which_layer, anim, layer, gen_anim_dir, byte)
states = generateToggle(
generate_utils.getSpeechNoiseToggleParam(),
diff --git a/osc_ctrl.py b/osc_ctrl.py
index aebfa56..e5a2608 100644
--- a/osc_ctrl.py
+++ b/osc_ctrl.py
@@ -38,23 +38,8 @@ state = EvilGlobalState()
# This function provides a mapping from letter ('a') to index (26).
def generateEncoding():
encoding = {}
- for i in range(0, 26):
- encoding[chr(ord('A') + i)] = i
- for i in range(26, 52):
- encoding[chr(ord('a') + i - 26)] = i
- for i in range(52, 62):
- encoding[chr(ord('0') + i - 52)] = i
- encoding[','] = 62
- encoding['.'] = 63
- encoding[' '] = 64
- encoding['?'] = 65
- encoding['!'] = 66
- encoding[';'] = 67
- encoding[':'] = 68
- encoding['-'] = 69
- encoding['_'] = 70
- encoding["'"] = 71
- encoding['"'] = 72
+ for i in range(0, 65535):
+ encoding[chr(i)] = (i % 256, int(i / 256))
return encoding
state.encoding = generateEncoding()
@@ -75,9 +60,10 @@ def encodeMessage(lines):
return result
def updateCell(client, cell_idx, letter_encoded):
- addr="/avatar/parameters/" + generate_utils.getBlendParam(cell_idx)
- letter_remapped = (-127.5 + letter_encoded) / 127.5
- client.send_message(addr, letter_remapped)
+ for byte in range(0, generate_utils.BYTES_PER_CHAR):
+ addr="/avatar/parameters/" + generate_utils.getBlendParam(cell_idx, byte)
+ letter_remapped = (-127.5 + letter_encoded[byte]) / 127.5
+ client.send_message(addr, letter_remapped)
def enable(client):
addr="/avatar/parameters/" + getEnableParam()
@@ -331,6 +317,11 @@ if __name__ == "__main__":
state.encoding = generateEncoding()
+ sendRawMessage(client, [ \
+ (65,0), \
+ (0x20,0xAD), \
+ ])
+
tx_state = OscTxState()
for line in fileinput.input():
while not sendMessageLazy(client, line, tx_state):
diff --git a/transcribe.py b/transcribe.py
index be2275b..5d2897c 100644
--- a/transcribe.py
+++ b/transcribe.py
@@ -179,10 +179,8 @@ def transcribe(model, filename):
audio = whisper.pad_or_trim(audio)
mel = whisper.log_mel_spectrogram(audio).to(model.device)
- #_, probs = model.detect_language(mel)
- #print(f"Detected language: {max(probs, key=probs.get)}")
options = whisper.DecodingOptions(language = "en",
- beam_size = 3)
+ beam_size = 5)
result = whisper.decode(model, mel, options)
if result.no_speech_prob > 0.15: