diff options
| -rw-r--r-- | TaSTT.shader | 1489 | ||||
| -rw-r--r-- | font-0.png | bin | 0 -> 26850 bytes | |||
| -rw-r--r-- | font-0.png.meta | 116 | ||||
| -rw-r--r-- | font-1.png | bin | 0 -> 134918 bytes | |||
| -rw-r--r-- | font-1.png.meta | 116 | ||||
| -rw-r--r-- | font-2.png | bin | 0 -> 303593 bytes | |||
| -rw-r--r-- | font-2.png.meta | 116 | ||||
| -rw-r--r-- | font-3.png | bin | 0 -> 308942 bytes | |||
| -rw-r--r-- | font-3.png.meta | 116 | ||||
| -rw-r--r-- | font-4.png | bin | 0 -> 302029 bytes | |||
| -rw-r--r-- | font-4.png.meta | 116 | ||||
| -rw-r--r-- | font-5.png | bin | 0 -> 50643 bytes | |||
| -rw-r--r-- | font-5.png.meta | 116 | ||||
| -rw-r--r-- | font-6.png | bin | 0 -> 59629 bytes | |||
| -rw-r--r-- | font-6.png.meta | 116 | ||||
| -rw-r--r-- | generate_fonts.py | 21 | ||||
| -rw-r--r-- | generate_params.py | 7 | ||||
| -rw-r--r-- | generate_utils.py | 47 | ||||
| -rw-r--r-- | libtastt.py | 126 | ||||
| -rw-r--r-- | osc_ctrl.py | 31 | ||||
| -rw-r--r-- | transcribe.py | 4 |
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 Binary files differnew file mode 100644 index 0000000..39656ef --- /dev/null +++ b/font-0.png 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 Binary files differnew file mode 100644 index 0000000..993b090 --- /dev/null +++ b/font-1.png 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 Binary files differnew file mode 100644 index 0000000..bcda0ae --- /dev/null +++ b/font-2.png 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 Binary files differnew file mode 100644 index 0000000..8c6ea47 --- /dev/null +++ b/font-3.png 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 Binary files differnew file mode 100644 index 0000000..307ebf8 --- /dev/null +++ b/font-4.png 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 Binary files differnew file mode 100644 index 0000000..ed6c860 --- /dev/null +++ b/font-5.png 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 Binary files differnew file mode 100644 index 0000000..ee0d5c8 --- /dev/null +++ b/font-6.png 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: |
