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