summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2022-12-29 23:01:09 -0800
committeryum <yum.food.vr@gmail.com>2022-12-29 23:01:09 -0800
commit12bcd1d40df21cb9bad6ae353ea4f6697e1275a6 (patch)
treebb39f59098cbb4e83235c6561ff30ce444d7dedd
parent7214653f9354ef885ef4131e455e0a63f12a17f2 (diff)
GUI: Users can now control board dimensions
Users can now control how many letters wide and tall the board is. Tested at 4x48, 5x60, 10x120, and 20x240. At 20x240, Unity freezes and does not make forward progress. Perhaps creating 4800 float parameters isn't a truly scalable interface.
-rw-r--r--GUI/GUI/GUI/Frame.cpp78
-rw-r--r--GUI/GUI/GUI/Frame.h5
-rw-r--r--GUI/GUI/GUI/PythonWrapper.cpp44
-rw-r--r--GUI/GUI/GUI/PythonWrapper.h4
-rw-r--r--Scripts/generate_shader.py5
-rw-r--r--Scripts/libtastt.py16
-rw-r--r--Scripts/transcribe.py8
-rw-r--r--Shaders/TaSTT.shader2013
8 files changed, 151 insertions, 2022 deletions
diff --git a/GUI/GUI/GUI/Frame.cpp b/GUI/GUI/GUI/Frame.cpp
index 6ed408f..b708953 100644
--- a/GUI/GUI/GUI/Frame.cpp
+++ b/GUI/GUI/GUI/Frame.cpp
@@ -32,6 +32,8 @@ namespace {
ID_PY_APP_BYTES_PER_CHAR,
ID_PY_APP_MODEL_PANEL,
ID_PY_APP_ENABLE_LOCAL_BEEP,
+ ID_PY_APP_ROWS,
+ ID_PY_APP_COLS,
ID_UNITY_PANEL,
ID_UNITY_CONFIG_PANEL,
ID_UNITY_OUT,
@@ -47,6 +49,8 @@ namespace {
ID_UNITY_BUTTON_GEN_ANIMATOR,
ID_UNITY_CHARS_PER_SYNC,
ID_UNITY_BYTES_PER_CHAR,
+ ID_UNITY_ROWS,
+ ID_UNITY_COLS,
};
const wxString kMicChoices[] = {
@@ -324,6 +328,20 @@ Frame::Frame()
"characters (i.e. not English), set this to 2.");
py_app_bytes_per_char_ = py_app_bytes_per_char;
+ auto* py_app_rows = new wxTextCtrl(py_app_config_panel_pairs,
+ ID_PY_APP_ROWS, /*value=*/"4",
+ wxDefaultPosition, wxDefaultSize, /*style=*/0);
+ py_app_rows->SetToolTip(
+ "The number of rows on the text box.");
+ py_app_rows_ = py_app_rows;
+
+ auto* py_app_cols = new wxTextCtrl(py_app_config_panel_pairs,
+ ID_PY_APP_COLS, /*value=*/"48",
+ wxDefaultPosition, wxDefaultSize, /*style=*/0);
+ py_app_cols->SetToolTip(
+ "The number of columns on the text box.");
+ py_app_cols_ = py_app_cols;
+
auto* sizer = new wxFlexGridSizer(/*cols=*/2);
py_app_config_panel_pairs->SetSizer(sizer);
@@ -341,6 +359,12 @@ Frame::Frame()
sizer->Add(new wxStaticText(py_app_config_panel_pairs, wxID_ANY, /*label=*/"Bytes per character:"));
sizer->Add(py_app_bytes_per_char, /*proportion=*/0, /*flags=*/wxEXPAND);
+
+ sizer->Add(new wxStaticText(py_app_config_panel_pairs, wxID_ANY, /*label=*/"Text box rows:"));
+ sizer->Add(py_app_rows, /*proportion=*/0, /*flags=*/wxEXPAND);
+
+ sizer->Add(new wxStaticText(py_app_config_panel_pairs, wxID_ANY, /*label=*/"Text box columns:"));
+ sizer->Add(py_app_cols, /*proportion=*/0, /*flags=*/wxEXPAND);
}
auto* py_app_enable_local_beep = new wxCheckBox(py_config_panel,
@@ -513,6 +537,19 @@ Frame::Frame()
"characters (i.e. not English), set this to 2.");
unity_bytes_per_char_ = unity_bytes_per_char;
+ auto* unity_rows = new wxTextCtrl(unity_config_panel_pairs,
+ ID_UNITY_ROWS, /*value=*/"4",
+ wxDefaultPosition, wxDefaultSize, /*style=*/0);
+ unity_rows->SetToolTip(
+ "The number of rows on the text box.");
+ unity_rows_ = unity_rows;
+
+ auto* unity_cols = new wxTextCtrl(unity_config_panel_pairs,
+ ID_UNITY_COLS, /*value=*/"48",
+ wxDefaultPosition, wxDefaultSize, /*style=*/0);
+ unity_cols->SetToolTip(
+ "The number of columns on the text box.");
+ unity_cols_ = unity_cols;
auto* sizer = new wxFlexGridSizer(/*cols=*/2);
unity_config_panel_pairs->SetSizer(sizer);
@@ -546,6 +583,12 @@ Frame::Frame()
sizer->Add(new wxStaticText(unity_config_panel_pairs, wxID_ANY, /*label=*/"Bytes per character:"));
sizer->Add(unity_bytes_per_char, /*proportion=*/0, /*flags=*/wxEXPAND);
+
+ sizer->Add(new wxStaticText(unity_config_panel_pairs, wxID_ANY, /*label=*/"Text box rows:"));
+ sizer->Add(unity_rows, /*proportion=*/0, /*flags=*/wxEXPAND);
+
+ sizer->Add(new wxStaticText(unity_config_panel_pairs, wxID_ANY, /*label=*/"Text box columns:"));
+ sizer->Add(unity_cols, /*proportion=*/0, /*flags=*/wxEXPAND);
}
auto* unity_button_gen_fx = new wxButton(unity_config_panel, ID_UNITY_BUTTON_GEN_ANIMATOR, "Generate avatar assets");
@@ -713,6 +756,22 @@ void Frame::OnGenerateFX(wxCommandEvent& event)
}
std::string bytes_per_char = kBytesPerChar[bytes_per_char_idx].ToStdString();
+ std::string rows_str = unity_rows_->GetValue().ToStdString();
+ std::string cols_str = unity_cols_->GetValue().ToStdString();
+ int rows, cols;
+ try {
+ rows = std::stoi(rows_str);
+ cols = std::stoi(cols_str);
+ }
+ catch (const std::invalid_argument& e) {
+ Log(unity_out_, "Could not parse rows \"{}\" or cols \"{}\" as an integer\n", rows_str, cols_str);
+ return;
+ }
+ catch (const std::out_of_range& e) {
+ Log(unity_out_, "Rows \"{}\" or cols \"{}\" are out of range\n", rows_str, cols_str);
+ return;
+ }
+
std::string out;
if (!PythonWrapper::GenerateAnimator(
unity_assets_path.string(),
@@ -725,6 +784,8 @@ void Frame::OnGenerateFX(wxCommandEvent& event)
unity_menu_generated_name,
chars_per_sync,
bytes_per_char,
+ rows,
+ cols,
unity_out_)) {
wxLogError("Failed to generate animator:\n%s\n", out.c_str());
}
@@ -810,6 +871,21 @@ void Frame::OnAppStart(wxCommandEvent& event) {
bytes_per_char_idx = kBytesDefault;
}
const bool enable_local_beep = py_app_enable_local_beep_->GetValue();
+ std::string rows_str = py_app_rows_->GetValue().ToStdString();
+ std::string cols_str = py_app_cols_->GetValue().ToStdString();
+ int rows, cols;
+ try {
+ rows = std::stoi(rows_str);
+ cols = std::stoi(cols_str);
+ }
+ catch (const std::invalid_argument& e) {
+ Log(transcribe_out_, "Could not parse rows \"{}\" or cols \"{}\" as an integer\n", rows_str, cols_str);
+ return;
+ }
+ catch (const std::out_of_range& e) {
+ Log(transcribe_out_, "Rows \"{}\" or cols \"{}\" are out of range\n", rows_str, cols_str);
+ return;
+ }
wxProcess* p = PythonWrapper::StartApp(std::move(cb),
kMicChoices[which_mic].ToStdString(),
@@ -817,6 +893,8 @@ void Frame::OnAppStart(wxCommandEvent& event) {
kModelChoices[which_model].ToStdString(),
kCharsPerSync[chars_per_sync_idx].ToStdString(),
kBytesPerChar[bytes_per_char_idx].ToStdString(),
+ rows,
+ cols,
enable_local_beep);
if (!p) {
Log(transcribe_out_, "Failed to launch transcription engine\n");
diff --git a/GUI/GUI/GUI/Frame.h b/GUI/GUI/GUI/Frame.h
index 8a17ff2..3ce6cb9 100644
--- a/GUI/GUI/GUI/Frame.h
+++ b/GUI/GUI/GUI/Frame.h
@@ -29,6 +29,11 @@ private:
wxTextCtrl* unity_parameters_generated_name_;
wxTextCtrl* unity_menu_generated_name_;
+ wxTextCtrl* py_app_rows_;
+ wxTextCtrl* py_app_cols_;
+ wxTextCtrl* unity_rows_;
+ wxTextCtrl* unity_cols_;
+
wxDirPickerCtrl* unity_assets_file_picker_;
wxFilePickerCtrl* unity_animator_file_picker_;
wxFilePickerCtrl* unity_parameters_file_picker_;
diff --git a/GUI/GUI/GUI/PythonWrapper.cpp b/GUI/GUI/GUI/PythonWrapper.cpp
index 9cfaeba..4162a4e 100644
--- a/GUI/GUI/GUI/PythonWrapper.cpp
+++ b/GUI/GUI/GUI/PythonWrapper.cpp
@@ -125,7 +125,7 @@ wxProcess* PythonWrapper::StartApp(
std::function<void(wxProcess* proc, int ret)>&& exit_callback,
const std::string& mic, const std::string& lang, const std::string& model,
const std::string& chars_per_sync, const std::string& bytes_per_char,
- const bool enable_local_beep) {
+ int rows, int cols, bool enable_local_beep) {
return InvokeAsyncWithArgs({
"-u",
"Resources/Scripts/transcribe.py",
@@ -135,6 +135,8 @@ wxProcess* PythonWrapper::StartApp(
"--chars_per_sync", chars_per_sync,
"--bytes_per_char", bytes_per_char,
"--enable_local_beep", enable_local_beep ? "1" : "0",
+ "--rows", std::to_string(rows),
+ "--cols", std::to_string(cols),
},
std::move(exit_callback));
}
@@ -150,12 +152,17 @@ bool PythonWrapper::GenerateAnimator(
const std::string& unity_menu_generated_name,
const std::string& chars_per_sync,
const std::string& bytes_per_char,
+ const int rows,
+ const int cols,
wxTextCtrl* out) {
// Python script locations
std::string libunity_path = "Resources/Scripts/libunity.py";
std::string libtastt_path = "Resources/Scripts/libtastt.py";
std::string generate_params_path = "Resources/Scripts/generate_params.py";
std::string generate_menu_path = "Resources/Scripts/generate_menu.py";
+ std::string generate_shader_path = "Resources/Scripts/generate_shader.py";
+ std::string shader_template_path = "Resources/Shaders/TaSTT_template.shader";
+ std::string shader_path = "Resources/Shaders/TaSTT.shader";
// Generated directory locations
std::filesystem::path tastt_generated_dir_path =
@@ -187,6 +194,33 @@ bool PythonWrapper::GenerateAnimator(
tastt_generated_dir_path / unity_animator_generated_name;
{
+ Log(out, "Generating shader for {}x{} board...", rows, cols);
+
+ std::string py_stdout, py_stderr;
+ if (InvokeWithArgs({ generate_shader_path,
+ "--bytes_per_char", bytes_per_char,
+ "--rows", std::to_string(rows),
+ "--cols", std::to_string(cols),
+ "--shader_template", shader_template_path,
+ "--shader_path", shader_path },
+ &py_stdout, &py_stderr)) {
+ Log(out, "success!\n");
+ Log(out, py_stdout.c_str());
+ if (!py_stdout.empty()) {
+ Log(out, "\n");
+ }
+ Log(out, py_stderr.c_str());
+ if (!py_stderr.empty()) {
+ Log(out, "\n");
+ }
+ }
+ else {
+ wxLogError("Failed to generate shader: %s", py_stderr.c_str());
+ Log(out, "failed!\n");
+ return false;
+ }
+ }
+ {
Log(out, "Creating {}\n", tastt_generated_dir_path.string());
std::filesystem::create_directories(tastt_generated_dir_path);
}
@@ -276,7 +310,9 @@ bool PythonWrapper::GenerateAnimator(
"--gen_anim_dir", tastt_animations_path.string(),
"--guid_map", guid_map_path.string(),
"--chars_per_sync", chars_per_sync,
- "--bytes_per_char", bytes_per_char },
+ "--bytes_per_char", bytes_per_char,
+ "--rows", std::to_string(rows),
+ "--cols", std::to_string(cols)},
&py_stdout, &py_stderr)) {
Log(out, "success!\n");
Log(out, py_stdout.c_str());
@@ -302,7 +338,9 @@ bool PythonWrapper::GenerateAnimator(
"--gen_anim_dir", tastt_animations_path.string(),
"--guid_map", guid_map_path.string(),
"--chars_per_sync", chars_per_sync,
- "--bytes_per_char", bytes_per_char },
+ "--bytes_per_char", bytes_per_char,
+ "--rows", std::to_string(rows),
+ "--cols", std::to_string(cols)},
&py_stdout, &py_stderr)) {
Log(out, "success!\n");
Log(out, py_stdout.c_str());
diff --git a/GUI/GUI/GUI/PythonWrapper.h b/GUI/GUI/GUI/PythonWrapper.h
index b0a66aa..95195b9 100644
--- a/GUI/GUI/GUI/PythonWrapper.h
+++ b/GUI/GUI/GUI/PythonWrapper.h
@@ -44,7 +44,7 @@ namespace PythonWrapper
std::function<void(wxProcess* proc, int ret)>&& exit_callback,
const std::string& mic, const std::string& lang, const std::string& model,
const std::string& chars_per_sync, const std::string& bytes_per_char,
- const bool enable_local_beep
+ int rows, int cols, bool enable_local_beep
);
bool GenerateAnimator(
@@ -58,6 +58,8 @@ namespace PythonWrapper
const std::string& unity_menu_generated_name,
const std::string& chars_per_sync,
const std::string& bytes_per_char,
+ int rows,
+ int cols,
wxTextCtrl* out);
};
diff --git a/Scripts/generate_shader.py b/Scripts/generate_shader.py
index 67f916d..5ad9e70 100644
--- a/Scripts/generate_shader.py
+++ b/Scripts/generate_shader.py
@@ -115,11 +115,6 @@ if __name__ == "__main__":
print("args: {}".format(" ".join(sys.argv)))
- # Set cwd to the directory holding the script
- abspath = os.path.abspath(__file__)
- dname = os.path.dirname(abspath)
- os.chdir(dname)
-
parser = argparse.ArgumentParser()
parser.add_argument("--bytes_per_char", type=str, help="The number of bytes to use to represent each character")
parser.add_argument("--rows", type=str, help="The number of rows on the board")
diff --git a/Scripts/libtastt.py b/Scripts/libtastt.py
index 3168517..18de922 100644
--- a/Scripts/libtastt.py
+++ b/Scripts/libtastt.py
@@ -539,6 +539,8 @@ def generateFX(guid_map, gen_anim_dir):
return anim
def parseArgs():
+ print("args: {}".format(" ".join(sys.argv)))
+
parser = argparse.ArgumentParser()
parser.add_argument("cmd", type=str, help="")
parser.add_argument("--gen_dir", type=str, help="The directory under " +
@@ -549,6 +551,8 @@ def parseArgs():
parser.add_argument("--fx_dest", type=str, help="The path at which to save the generated FX controller")
parser.add_argument("--bytes_per_char", type=str, help="The number of bytes to use to represent each character")
parser.add_argument("--chars_per_sync", type=str, help="The number of characters to send on each sync event")
+ parser.add_argument("--rows", type=int, help="The number of rows on the board")
+ parser.add_argument("--cols", type=int, help="The number of columns on the board")
args = parser.parse_args()
if not args.gen_dir:
@@ -575,8 +579,14 @@ if __name__ == "__main__":
print("--bytes_per_char and --chars_per_sync required", file=sys.stderr)
sys.exit(1)
+ if not args.rows or not args.cols:
+ print("--rows and --cols required", file=sys.stderr)
+ sys.exit(1)
+
generate_utils.config.BYTES_PER_CHAR = int(args.bytes_per_char)
generate_utils.config.CHARS_PER_SYNC = int(args.chars_per_sync)
+ generate_utils.config.BOARD_ROWS = int(args.rows)
+ generate_utils.config.BOARD_COLS = int(args.cols)
guid_map = {}
with open(args.guid_map, 'rb') as f:
@@ -592,8 +602,14 @@ if __name__ == "__main__":
print("--bytes_per_char and --chars_per_sync required", file=sys.stderr)
sys.exit(1)
+ if not args.rows or not args.cols:
+ print("--rows and --cols required", file=sys.stderr)
+ sys.exit(1)
+
generate_utils.config.BYTES_PER_CHAR = int(args.bytes_per_char)
generate_utils.config.CHARS_PER_SYNC = int(args.chars_per_sync)
+ generate_utils.config.BOARD_ROWS = int(args.rows)
+ generate_utils.config.BOARD_COLS = int(args.cols)
guid_map = {}
with open(args.guid_map, 'rb') as f:
diff --git a/Scripts/transcribe.py b/Scripts/transcribe.py
index 678ec59..37a8407 100644
--- a/Scripts/transcribe.py
+++ b/Scripts/transcribe.py
@@ -426,6 +426,8 @@ if __name__ == "__main__":
parser.add_argument("--bytes_per_char", type=str, help="The number of bytes to use to represent each character")
parser.add_argument("--chars_per_sync", type=str, help="The number of characters to send on each sync event")
parser.add_argument("--enable_local_beep", type=int, help="Whether to play a local auditory indicator when transcription starts/stops.");
+ parser.add_argument("--rows", type=int, help="The number of rows on the board")
+ parser.add_argument("--cols", type=int, help="The number of columns on the board")
args = parser.parse_args()
if not args.mic:
@@ -441,8 +443,14 @@ if __name__ == "__main__":
print("--bytes_per_char and --chars_per_sync required", file=sys.stderr)
sys.exit(1)
+ if not args.rows or not args.cols:
+ print("--rows and --cols required", file=sys.stderr)
+ sys.exit(1)
+
generate_utils.config.BYTES_PER_CHAR = int(args.bytes_per_char)
generate_utils.config.CHARS_PER_SYNC = int(args.chars_per_sync)
+ generate_utils.config.BOARD_ROWS = int(args.rows)
+ generate_utils.config.BOARD_COLS = int(args.cols)
transcribeLoop(args.mic, args.language, args.model, args.enable_local_beep)
diff --git a/Shaders/TaSTT.shader b/Shaders/TaSTT.shader
index 946d139..8b13789 100644
--- a/Shaders/TaSTT.shader
+++ b/Shaders/TaSTT.shader
@@ -1,2014 +1 @@
-Shader "Unlit/TaSTT"
-{
- Properties
- {
- _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" {}
- _Img_0xE000_0xE03F ("Images 0", 2D) = "white" {}
- [MaterialToggle] Render_Margin("Render margin", float) = 1
- [MaterialToggle] Render_Visual_Indicator("Render visual speech indicator", float) = 1
- Margin_Scale("Margin scale", float) = 0.03
- Margin_Rounding_Scale("Margin rounding scale", float) = 0.03
-
- TaSTT_Backplate("TaSTT_Backplate", 2D) = "black" {}
- TaSTT_Indicator_0("TaSTT_Indicator_0", float) = 0
- TaSTT_Indicator_1("TaSTT_Indicator_1", float) = 0
-
- // BEGIN GENERATED CODE BLOCK
- _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_Row00_Col44_Byte0("_Letter_Row00_Col44_Byte0", float) = 0
- _Letter_Row00_Col45_Byte0("_Letter_Row00_Col45_Byte0", float) = 0
- _Letter_Row00_Col46_Byte0("_Letter_Row00_Col46_Byte0", float) = 0
- _Letter_Row00_Col47_Byte0("_Letter_Row00_Col47_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_Row01_Col44_Byte0("_Letter_Row01_Col44_Byte0", float) = 0
- _Letter_Row01_Col45_Byte0("_Letter_Row01_Col45_Byte0", float) = 0
- _Letter_Row01_Col46_Byte0("_Letter_Row01_Col46_Byte0", float) = 0
- _Letter_Row01_Col47_Byte0("_Letter_Row01_Col47_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_Row02_Col44_Byte0("_Letter_Row02_Col44_Byte0", float) = 0
- _Letter_Row02_Col45_Byte0("_Letter_Row02_Col45_Byte0", float) = 0
- _Letter_Row02_Col46_Byte0("_Letter_Row02_Col46_Byte0", float) = 0
- _Letter_Row02_Col47_Byte0("_Letter_Row02_Col47_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_Row03_Col44_Byte0("_Letter_Row03_Col44_Byte0", float) = 0
- _Letter_Row03_Col45_Byte0("_Letter_Row03_Col45_Byte0", float) = 0
- _Letter_Row03_Col46_Byte0("_Letter_Row03_Col46_Byte0", float) = 0
- _Letter_Row03_Col47_Byte0("_Letter_Row03_Col47_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_Row00_Col44_Byte1("_Letter_Row00_Col44_Byte1", float) = 0
- _Letter_Row00_Col45_Byte1("_Letter_Row00_Col45_Byte1", float) = 0
- _Letter_Row00_Col46_Byte1("_Letter_Row00_Col46_Byte1", float) = 0
- _Letter_Row00_Col47_Byte1("_Letter_Row00_Col47_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_Row01_Col44_Byte1("_Letter_Row01_Col44_Byte1", float) = 0
- _Letter_Row01_Col45_Byte1("_Letter_Row01_Col45_Byte1", float) = 0
- _Letter_Row01_Col46_Byte1("_Letter_Row01_Col46_Byte1", float) = 0
- _Letter_Row01_Col47_Byte1("_Letter_Row01_Col47_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_Row02_Col44_Byte1("_Letter_Row02_Col44_Byte1", float) = 0
- _Letter_Row02_Col45_Byte1("_Letter_Row02_Col45_Byte1", float) = 0
- _Letter_Row02_Col46_Byte1("_Letter_Row02_Col46_Byte1", float) = 0
- _Letter_Row02_Col47_Byte1("_Letter_Row02_Col47_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
- _Letter_Row03_Col44_Byte1("_Letter_Row03_Col44_Byte1", float) = 0
- _Letter_Row03_Col45_Byte1("_Letter_Row03_Col45_Byte1", float) = 0
- _Letter_Row03_Col46_Byte1("_Letter_Row03_Col46_Byte1", float) = 0
- _Letter_Row03_Col47_Byte1("_Letter_Row03_Col47_Byte1", float) = 0
- // END GENERATED CODE BLOCK
- }
- SubShader
- {
- Tags { "RenderType"="Opaque" "Queue"="AlphaTest"}
- LOD 100
-
- Pass
- {
- Blend SrcAlpha OneMinusSrcAlpha
-
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #pragma multi_compile
-
- //#include "UnityCG.cginc"
-
- struct appdata
- {
- float4 vertex : POSITION;
- float2 uv : TEXCOORD0;
- float3 normal : NORMAL;
- };
-
- struct v2f
- {
- float2 uv : TEXCOORD0;
- float4 vertex : SV_POSITION;
- };
-
- SamplerState sampler_linear_repeat;
-
- Texture2D _Font_0x0000_0x1FFF;
- Texture2D _Font_0x2000_0x3FFF;
- Texture2D _Font_0x4000_0x5FFF;
- Texture2D _Font_0x6000_0x7FFF;
- Texture2D _Font_0x8000_0x9FFF;
- Texture2D _Font_0xA000_0xBFFF;
- Texture2D _Font_0xC000_0xDFFF;
- Texture2D _Img_0xE000_0xE03F;
-
- float Render_Margin;
- float Render_Visual_Indicator;
- float Margin_Scale;
- float Margin_Rounding_Scale;
-
- // BEGIN GENERATED CODE BLOCK
- #define BYTES_PER_CHAR 2
- #define NROWS 4
- #define NCOLS 48
- // END GENERATED CODE BLOCK
-
- float3 HUEtoRGB(in float H)
- {
- float R = abs(H * 6 - 3) - 1;
- float G = 2 - abs(H * 6 - 2);
- float B = 2 - abs(H * 6 - 4);
- return saturate(float3(R, G, B));
- }
-
- float3 HSVtoRGB(in float3 HSV)
- {
- float3 RGB = HUEtoRGB(HSV.x);
- return ((RGB - 1) * HSV.y + 1) * HSV.z;
- }
-
- float TaSTT_Indicator_0;
- float TaSTT_Indicator_1;
- static const float3 TaSTT_Indicator_Color_0 = HSVtoRGB(float3(0.00, 0.7, 1.0));
- static const float3 TaSTT_Indicator_Color_1 = HSVtoRGB(float3(0.07, 0.7, 1.0));
- static const float3 TaSTT_Indicator_Color_2 = HSVtoRGB(float3(0.30, 0.7, 1.0));
-
- fixed4 float3tofixed4(in float3 f3, in float alpha)
- {
- return fixed4(
- f3.r,
- f3.g,
- f3.b,
- alpha);
- }
-
- Texture2D TaSTT_Backplate;
-
- // BEGIN GENERATED CODE BLOCK
- 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_Row00_Col44_Byte0;
- float _Letter_Row00_Col45_Byte0;
- float _Letter_Row00_Col46_Byte0;
- float _Letter_Row00_Col47_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_Row01_Col44_Byte0;
- float _Letter_Row01_Col45_Byte0;
- float _Letter_Row01_Col46_Byte0;
- float _Letter_Row01_Col47_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_Row02_Col44_Byte0;
- float _Letter_Row02_Col45_Byte0;
- float _Letter_Row02_Col46_Byte0;
- float _Letter_Row02_Col47_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_Row03_Col44_Byte0;
- float _Letter_Row03_Col45_Byte0;
- float _Letter_Row03_Col46_Byte0;
- float _Letter_Row03_Col47_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_Row00_Col44_Byte1;
- float _Letter_Row00_Col45_Byte1;
- float _Letter_Row00_Col46_Byte1;
- float _Letter_Row00_Col47_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_Row01_Col44_Byte1;
- float _Letter_Row01_Col45_Byte1;
- float _Letter_Row01_Col46_Byte1;
- float _Letter_Row01_Col47_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_Row02_Col44_Byte1;
- float _Letter_Row02_Col45_Byte1;
- float _Letter_Row02_Col46_Byte1;
- float _Letter_Row02_Col47_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;
- float _Letter_Row03_Col44_Byte1;
- float _Letter_Row03_Col45_Byte1;
- float _Letter_Row03_Col46_Byte1;
- float _Letter_Row03_Col47_Byte1;
- // END GENERATED CODE BLOCK
-
- v2f vert (appdata v)
- {
- v2f o;
- o.vertex = UnityObjectToClipPos(v.vertex);
- o.uv = 1.0 - v.uv;
- return o;
- }
-
- float2 AddMarginToUV(float2 uv, float2 margin)
- {
- float2 lo = float2(-margin.x / 2, -margin.y / 2);
- float2 hi = float2(1.0 + margin.x / 2, 1.0 + margin.y / 2);
-
- return clamp(lerp(lo, hi, uv), 0.0, 1.0);
- }
-
- // dist = sqrt(dx^2 + dy^2) = sqrt(<dx,dy> * <dx,dy>)
- bool InRadius2(float2 uv, float2 pos, float radius2)
- {
- float2 delta = uv - pos;
- return dot(delta, delta) < radius2;
- }
-
- bool InMargin(float2 uv, float2 margin)
- {
- if (uv.x < margin.x ||
- uv.x > 1 - margin.x ||
- uv.y < margin.y ||
- uv.y > 1 - margin.y) {
- return true;
- }
-
- return false;
- }
-
- bool InSpeechIndicator(float2 uv, float2 margin)
- {
- if (!Render_Visual_Indicator) {
- return false;
- }
-
- // Margin is uv_margin/2 wide/tall.
- // We want a circle whose radius is ~80% of that.
- float radius_factor = 0.95;
- float radius = margin.x * radius_factor;
- // We want this circle to be centered halfway through the margin
- // vertically, and at 1.5x the margin width horizontally.
- float2 indicator_center = float2(margin.x + radius, margin.y * 0.5);
- // Finally, translate it to the top of the board instead of the
- // bottom.
- indicator_center.y = 1.0 - indicator_center.y;
-
- if (InRadius2(uv, indicator_center, radius * radius)) {
- return true;
- }
-
- return false;
- }
-
- bool InMarginRounding(float2 uv, float2 margin, float rounding, bool interior)
- {
- if (!interior) {
- rounding += margin.x;
- margin = float2(0, 0);
- }
-
- // This is the center of a circle whose perimeter touches the
- // upper left corner of the margin.
- float2 c0 = float2(rounding + margin.x, rounding + margin.y);
- if (uv.x < c0.x && uv.y < c0.y && uv.x > margin.x && uv.y > margin.y && !InRadius2(uv, c0, rounding * rounding)) {
- return true;
- }
- c0 = float2(rounding + margin.x, 1 - (rounding + margin.y));
- if (uv.x < c0.x && uv.y > c0.y && uv.x > margin.x && uv.y < 1 - margin.y && !InRadius2(uv, c0, rounding * rounding)) {
- return true;
- }
- c0 = float2(1 - (rounding + margin.x), 1 - (rounding + margin.y));
- if (uv.x > c0.x && uv.y > c0.y && uv.x < 1 - margin.x && uv.y < 1 - margin.y && !InRadius2(uv, c0, rounding * rounding)) {
- return true;
- }
- c0 = float2(1 - (rounding + margin.x), rounding + margin.y);
- if (uv.x > c0.x && uv.y < c0.y && uv.x < 1 - margin.x && uv.y > margin.y && !InRadius2(uv, c0, rounding * rounding)) {
- return true;
- }
-
- return false;
- }
-
- // Write the nth letter in the current cell and return the value of the
- // pixel.
- // `texture_rows` and `texture_cols` indicate how many rows and columns are
- // in the texture being sampled.
- float2 GetLetter(float2 uv, int nth_letter,
- float texture_cols, float texture_rows,
- float board_cols, float board_rows)
- {
- // UV spans from [0,1] to [0,1].
- // 'U' is horizontal; cols.
- // 'V' is vertical; rows.
- //
- // I want to divide the mesh into an m x n grid.
- // I want to know what grid cell I'm in. This is simply u * m, v * n.
-
- // OK, I know what cell I'm in. Now I need to know how far across it I
- // am. Produce a float in the range [0, 1).
- float CHAR_FRAC_COL = uv.x * board_cols - floor(uv.x * board_cols);
- float CHAR_FRAC_ROW = uv.y * board_rows - floor(uv.y * board_rows);
-
- // Avoid rendering pixels right on the edge of the slot. If we were to
- // do this, then that value would get stretched due to clamping
- // (AddMarginToUV), resulting in long lines on the edge of the display.
- if (CHAR_FRAC_ROW < 0.01 ||
- CHAR_FRAC_COL < 0.01 ||
- CHAR_FRAC_ROW > 0.99 ||
- CHAR_FRAC_COL > 0.99) {
- return float2(0, 0);
- }
-
- float LETTER_COL = fmod(nth_letter, floor(texture_cols));
- float LETTER_ROW = floor(texture_rows) - floor(nth_letter / floor(texture_cols));
-
- float LETTER_UV_ROW = (LETTER_ROW + CHAR_FRAC_ROW - 1.00) / texture_rows;
- float LETTER_UV_COL = (LETTER_COL + CHAR_FRAC_COL) / texture_cols;
-
- float2 result;
- result.x = LETTER_UV_COL;
- result.y = LETTER_UV_ROW;
-
- 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.
- int GetLetterParameter(float2 uv)
- {
- float CHAR_COL = floor(uv.x * NCOLS);
- float CHAR_ROW = floor(uv.y * NROWS);
- int res = 0;
-
- // BEGIN GENERATED CODE BLOCK
- [forcecase] switch (CHAR_ROW) {
- case 3:
- [forcecase] switch (CHAR_COL) {
- case 0:
- res |= ((int) _Letter_Row00_Col00_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col00_Byte1) << (1 * 8);
- return res;
- case 1:
- res |= ((int) _Letter_Row00_Col01_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col01_Byte1) << (1 * 8);
- return res;
- case 2:
- res |= ((int) _Letter_Row00_Col02_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col02_Byte1) << (1 * 8);
- return res;
- case 3:
- res |= ((int) _Letter_Row00_Col03_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col03_Byte1) << (1 * 8);
- return res;
- case 4:
- res |= ((int) _Letter_Row00_Col04_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col04_Byte1) << (1 * 8);
- return res;
- case 5:
- res |= ((int) _Letter_Row00_Col05_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col05_Byte1) << (1 * 8);
- return res;
- case 6:
- res |= ((int) _Letter_Row00_Col06_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col06_Byte1) << (1 * 8);
- return res;
- case 7:
- res |= ((int) _Letter_Row00_Col07_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col07_Byte1) << (1 * 8);
- return res;
- case 8:
- res |= ((int) _Letter_Row00_Col08_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col08_Byte1) << (1 * 8);
- return res;
- case 9:
- res |= ((int) _Letter_Row00_Col09_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col09_Byte1) << (1 * 8);
- return res;
- case 10:
- res |= ((int) _Letter_Row00_Col10_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col10_Byte1) << (1 * 8);
- return res;
- case 11:
- res |= ((int) _Letter_Row00_Col11_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col11_Byte1) << (1 * 8);
- return res;
- case 12:
- res |= ((int) _Letter_Row00_Col12_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col12_Byte1) << (1 * 8);
- return res;
- case 13:
- res |= ((int) _Letter_Row00_Col13_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col13_Byte1) << (1 * 8);
- return res;
- case 14:
- res |= ((int) _Letter_Row00_Col14_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col14_Byte1) << (1 * 8);
- return res;
- case 15:
- res |= ((int) _Letter_Row00_Col15_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col15_Byte1) << (1 * 8);
- return res;
- case 16:
- res |= ((int) _Letter_Row00_Col16_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col16_Byte1) << (1 * 8);
- return res;
- case 17:
- res |= ((int) _Letter_Row00_Col17_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col17_Byte1) << (1 * 8);
- return res;
- case 18:
- res |= ((int) _Letter_Row00_Col18_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col18_Byte1) << (1 * 8);
- return res;
- case 19:
- res |= ((int) _Letter_Row00_Col19_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col19_Byte1) << (1 * 8);
- return res;
- case 20:
- res |= ((int) _Letter_Row00_Col20_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col20_Byte1) << (1 * 8);
- return res;
- case 21:
- res |= ((int) _Letter_Row00_Col21_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col21_Byte1) << (1 * 8);
- return res;
- case 22:
- res |= ((int) _Letter_Row00_Col22_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col22_Byte1) << (1 * 8);
- return res;
- case 23:
- res |= ((int) _Letter_Row00_Col23_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col23_Byte1) << (1 * 8);
- return res;
- case 24:
- res |= ((int) _Letter_Row00_Col24_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col24_Byte1) << (1 * 8);
- return res;
- case 25:
- res |= ((int) _Letter_Row00_Col25_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col25_Byte1) << (1 * 8);
- return res;
- case 26:
- res |= ((int) _Letter_Row00_Col26_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col26_Byte1) << (1 * 8);
- return res;
- case 27:
- res |= ((int) _Letter_Row00_Col27_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col27_Byte1) << (1 * 8);
- return res;
- case 28:
- res |= ((int) _Letter_Row00_Col28_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col28_Byte1) << (1 * 8);
- return res;
- case 29:
- res |= ((int) _Letter_Row00_Col29_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col29_Byte1) << (1 * 8);
- return res;
- case 30:
- res |= ((int) _Letter_Row00_Col30_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col30_Byte1) << (1 * 8);
- return res;
- case 31:
- res |= ((int) _Letter_Row00_Col31_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col31_Byte1) << (1 * 8);
- return res;
- case 32:
- res |= ((int) _Letter_Row00_Col32_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col32_Byte1) << (1 * 8);
- return res;
- case 33:
- res |= ((int) _Letter_Row00_Col33_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col33_Byte1) << (1 * 8);
- return res;
- case 34:
- res |= ((int) _Letter_Row00_Col34_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col34_Byte1) << (1 * 8);
- return res;
- case 35:
- res |= ((int) _Letter_Row00_Col35_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col35_Byte1) << (1 * 8);
- return res;
- case 36:
- res |= ((int) _Letter_Row00_Col36_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col36_Byte1) << (1 * 8);
- return res;
- case 37:
- res |= ((int) _Letter_Row00_Col37_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col37_Byte1) << (1 * 8);
- return res;
- case 38:
- res |= ((int) _Letter_Row00_Col38_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col38_Byte1) << (1 * 8);
- return res;
- case 39:
- res |= ((int) _Letter_Row00_Col39_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col39_Byte1) << (1 * 8);
- return res;
- case 40:
- res |= ((int) _Letter_Row00_Col40_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col40_Byte1) << (1 * 8);
- return res;
- case 41:
- res |= ((int) _Letter_Row00_Col41_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col41_Byte1) << (1 * 8);
- return res;
- case 42:
- res |= ((int) _Letter_Row00_Col42_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col42_Byte1) << (1 * 8);
- return res;
- case 43:
- res |= ((int) _Letter_Row00_Col43_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col43_Byte1) << (1 * 8);
- return res;
- case 44:
- res |= ((int) _Letter_Row00_Col44_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col44_Byte1) << (1 * 8);
- return res;
- case 45:
- res |= ((int) _Letter_Row00_Col45_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col45_Byte1) << (1 * 8);
- return res;
- case 46:
- res |= ((int) _Letter_Row00_Col46_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col46_Byte1) << (1 * 8);
- return res;
- case 47:
- res |= ((int) _Letter_Row00_Col47_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row00_Col47_Byte1) << (1 * 8);
- return res;
- default:
- return 0;
- }
- case 2:
- [forcecase] switch (CHAR_COL) {
- case 0:
- res |= ((int) _Letter_Row01_Col00_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col00_Byte1) << (1 * 8);
- return res;
- case 1:
- res |= ((int) _Letter_Row01_Col01_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col01_Byte1) << (1 * 8);
- return res;
- case 2:
- res |= ((int) _Letter_Row01_Col02_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col02_Byte1) << (1 * 8);
- return res;
- case 3:
- res |= ((int) _Letter_Row01_Col03_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col03_Byte1) << (1 * 8);
- return res;
- case 4:
- res |= ((int) _Letter_Row01_Col04_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col04_Byte1) << (1 * 8);
- return res;
- case 5:
- res |= ((int) _Letter_Row01_Col05_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col05_Byte1) << (1 * 8);
- return res;
- case 6:
- res |= ((int) _Letter_Row01_Col06_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col06_Byte1) << (1 * 8);
- return res;
- case 7:
- res |= ((int) _Letter_Row01_Col07_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col07_Byte1) << (1 * 8);
- return res;
- case 8:
- res |= ((int) _Letter_Row01_Col08_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col08_Byte1) << (1 * 8);
- return res;
- case 9:
- res |= ((int) _Letter_Row01_Col09_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col09_Byte1) << (1 * 8);
- return res;
- case 10:
- res |= ((int) _Letter_Row01_Col10_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col10_Byte1) << (1 * 8);
- return res;
- case 11:
- res |= ((int) _Letter_Row01_Col11_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col11_Byte1) << (1 * 8);
- return res;
- case 12:
- res |= ((int) _Letter_Row01_Col12_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col12_Byte1) << (1 * 8);
- return res;
- case 13:
- res |= ((int) _Letter_Row01_Col13_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col13_Byte1) << (1 * 8);
- return res;
- case 14:
- res |= ((int) _Letter_Row01_Col14_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col14_Byte1) << (1 * 8);
- return res;
- case 15:
- res |= ((int) _Letter_Row01_Col15_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col15_Byte1) << (1 * 8);
- return res;
- case 16:
- res |= ((int) _Letter_Row01_Col16_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col16_Byte1) << (1 * 8);
- return res;
- case 17:
- res |= ((int) _Letter_Row01_Col17_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col17_Byte1) << (1 * 8);
- return res;
- case 18:
- res |= ((int) _Letter_Row01_Col18_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col18_Byte1) << (1 * 8);
- return res;
- case 19:
- res |= ((int) _Letter_Row01_Col19_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col19_Byte1) << (1 * 8);
- return res;
- case 20:
- res |= ((int) _Letter_Row01_Col20_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col20_Byte1) << (1 * 8);
- return res;
- case 21:
- res |= ((int) _Letter_Row01_Col21_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col21_Byte1) << (1 * 8);
- return res;
- case 22:
- res |= ((int) _Letter_Row01_Col22_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col22_Byte1) << (1 * 8);
- return res;
- case 23:
- res |= ((int) _Letter_Row01_Col23_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col23_Byte1) << (1 * 8);
- return res;
- case 24:
- res |= ((int) _Letter_Row01_Col24_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col24_Byte1) << (1 * 8);
- return res;
- case 25:
- res |= ((int) _Letter_Row01_Col25_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col25_Byte1) << (1 * 8);
- return res;
- case 26:
- res |= ((int) _Letter_Row01_Col26_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col26_Byte1) << (1 * 8);
- return res;
- case 27:
- res |= ((int) _Letter_Row01_Col27_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col27_Byte1) << (1 * 8);
- return res;
- case 28:
- res |= ((int) _Letter_Row01_Col28_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col28_Byte1) << (1 * 8);
- return res;
- case 29:
- res |= ((int) _Letter_Row01_Col29_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col29_Byte1) << (1 * 8);
- return res;
- case 30:
- res |= ((int) _Letter_Row01_Col30_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col30_Byte1) << (1 * 8);
- return res;
- case 31:
- res |= ((int) _Letter_Row01_Col31_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col31_Byte1) << (1 * 8);
- return res;
- case 32:
- res |= ((int) _Letter_Row01_Col32_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col32_Byte1) << (1 * 8);
- return res;
- case 33:
- res |= ((int) _Letter_Row01_Col33_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col33_Byte1) << (1 * 8);
- return res;
- case 34:
- res |= ((int) _Letter_Row01_Col34_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col34_Byte1) << (1 * 8);
- return res;
- case 35:
- res |= ((int) _Letter_Row01_Col35_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col35_Byte1) << (1 * 8);
- return res;
- case 36:
- res |= ((int) _Letter_Row01_Col36_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col36_Byte1) << (1 * 8);
- return res;
- case 37:
- res |= ((int) _Letter_Row01_Col37_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col37_Byte1) << (1 * 8);
- return res;
- case 38:
- res |= ((int) _Letter_Row01_Col38_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col38_Byte1) << (1 * 8);
- return res;
- case 39:
- res |= ((int) _Letter_Row01_Col39_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col39_Byte1) << (1 * 8);
- return res;
- case 40:
- res |= ((int) _Letter_Row01_Col40_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col40_Byte1) << (1 * 8);
- return res;
- case 41:
- res |= ((int) _Letter_Row01_Col41_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col41_Byte1) << (1 * 8);
- return res;
- case 42:
- res |= ((int) _Letter_Row01_Col42_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col42_Byte1) << (1 * 8);
- return res;
- case 43:
- res |= ((int) _Letter_Row01_Col43_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col43_Byte1) << (1 * 8);
- return res;
- case 44:
- res |= ((int) _Letter_Row01_Col44_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col44_Byte1) << (1 * 8);
- return res;
- case 45:
- res |= ((int) _Letter_Row01_Col45_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col45_Byte1) << (1 * 8);
- return res;
- case 46:
- res |= ((int) _Letter_Row01_Col46_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col46_Byte1) << (1 * 8);
- return res;
- case 47:
- res |= ((int) _Letter_Row01_Col47_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row01_Col47_Byte1) << (1 * 8);
- return res;
- default:
- return 0;
- }
- case 1:
- [forcecase] switch (CHAR_COL) {
- case 0:
- res |= ((int) _Letter_Row02_Col00_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col00_Byte1) << (1 * 8);
- return res;
- case 1:
- res |= ((int) _Letter_Row02_Col01_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col01_Byte1) << (1 * 8);
- return res;
- case 2:
- res |= ((int) _Letter_Row02_Col02_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col02_Byte1) << (1 * 8);
- return res;
- case 3:
- res |= ((int) _Letter_Row02_Col03_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col03_Byte1) << (1 * 8);
- return res;
- case 4:
- res |= ((int) _Letter_Row02_Col04_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col04_Byte1) << (1 * 8);
- return res;
- case 5:
- res |= ((int) _Letter_Row02_Col05_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col05_Byte1) << (1 * 8);
- return res;
- case 6:
- res |= ((int) _Letter_Row02_Col06_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col06_Byte1) << (1 * 8);
- return res;
- case 7:
- res |= ((int) _Letter_Row02_Col07_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col07_Byte1) << (1 * 8);
- return res;
- case 8:
- res |= ((int) _Letter_Row02_Col08_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col08_Byte1) << (1 * 8);
- return res;
- case 9:
- res |= ((int) _Letter_Row02_Col09_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col09_Byte1) << (1 * 8);
- return res;
- case 10:
- res |= ((int) _Letter_Row02_Col10_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col10_Byte1) << (1 * 8);
- return res;
- case 11:
- res |= ((int) _Letter_Row02_Col11_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col11_Byte1) << (1 * 8);
- return res;
- case 12:
- res |= ((int) _Letter_Row02_Col12_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col12_Byte1) << (1 * 8);
- return res;
- case 13:
- res |= ((int) _Letter_Row02_Col13_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col13_Byte1) << (1 * 8);
- return res;
- case 14:
- res |= ((int) _Letter_Row02_Col14_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col14_Byte1) << (1 * 8);
- return res;
- case 15:
- res |= ((int) _Letter_Row02_Col15_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col15_Byte1) << (1 * 8);
- return res;
- case 16:
- res |= ((int) _Letter_Row02_Col16_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col16_Byte1) << (1 * 8);
- return res;
- case 17:
- res |= ((int) _Letter_Row02_Col17_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col17_Byte1) << (1 * 8);
- return res;
- case 18:
- res |= ((int) _Letter_Row02_Col18_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col18_Byte1) << (1 * 8);
- return res;
- case 19:
- res |= ((int) _Letter_Row02_Col19_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col19_Byte1) << (1 * 8);
- return res;
- case 20:
- res |= ((int) _Letter_Row02_Col20_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col20_Byte1) << (1 * 8);
- return res;
- case 21:
- res |= ((int) _Letter_Row02_Col21_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col21_Byte1) << (1 * 8);
- return res;
- case 22:
- res |= ((int) _Letter_Row02_Col22_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col22_Byte1) << (1 * 8);
- return res;
- case 23:
- res |= ((int) _Letter_Row02_Col23_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col23_Byte1) << (1 * 8);
- return res;
- case 24:
- res |= ((int) _Letter_Row02_Col24_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col24_Byte1) << (1 * 8);
- return res;
- case 25:
- res |= ((int) _Letter_Row02_Col25_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col25_Byte1) << (1 * 8);
- return res;
- case 26:
- res |= ((int) _Letter_Row02_Col26_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col26_Byte1) << (1 * 8);
- return res;
- case 27:
- res |= ((int) _Letter_Row02_Col27_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col27_Byte1) << (1 * 8);
- return res;
- case 28:
- res |= ((int) _Letter_Row02_Col28_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col28_Byte1) << (1 * 8);
- return res;
- case 29:
- res |= ((int) _Letter_Row02_Col29_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col29_Byte1) << (1 * 8);
- return res;
- case 30:
- res |= ((int) _Letter_Row02_Col30_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col30_Byte1) << (1 * 8);
- return res;
- case 31:
- res |= ((int) _Letter_Row02_Col31_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col31_Byte1) << (1 * 8);
- return res;
- case 32:
- res |= ((int) _Letter_Row02_Col32_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col32_Byte1) << (1 * 8);
- return res;
- case 33:
- res |= ((int) _Letter_Row02_Col33_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col33_Byte1) << (1 * 8);
- return res;
- case 34:
- res |= ((int) _Letter_Row02_Col34_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col34_Byte1) << (1 * 8);
- return res;
- case 35:
- res |= ((int) _Letter_Row02_Col35_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col35_Byte1) << (1 * 8);
- return res;
- case 36:
- res |= ((int) _Letter_Row02_Col36_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col36_Byte1) << (1 * 8);
- return res;
- case 37:
- res |= ((int) _Letter_Row02_Col37_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col37_Byte1) << (1 * 8);
- return res;
- case 38:
- res |= ((int) _Letter_Row02_Col38_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col38_Byte1) << (1 * 8);
- return res;
- case 39:
- res |= ((int) _Letter_Row02_Col39_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col39_Byte1) << (1 * 8);
- return res;
- case 40:
- res |= ((int) _Letter_Row02_Col40_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col40_Byte1) << (1 * 8);
- return res;
- case 41:
- res |= ((int) _Letter_Row02_Col41_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col41_Byte1) << (1 * 8);
- return res;
- case 42:
- res |= ((int) _Letter_Row02_Col42_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col42_Byte1) << (1 * 8);
- return res;
- case 43:
- res |= ((int) _Letter_Row02_Col43_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col43_Byte1) << (1 * 8);
- return res;
- case 44:
- res |= ((int) _Letter_Row02_Col44_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col44_Byte1) << (1 * 8);
- return res;
- case 45:
- res |= ((int) _Letter_Row02_Col45_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col45_Byte1) << (1 * 8);
- return res;
- case 46:
- res |= ((int) _Letter_Row02_Col46_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col46_Byte1) << (1 * 8);
- return res;
- case 47:
- res |= ((int) _Letter_Row02_Col47_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row02_Col47_Byte1) << (1 * 8);
- return res;
- default:
- return 0;
- }
- case 0:
- [forcecase] switch (CHAR_COL) {
- case 0:
- res |= ((int) _Letter_Row03_Col00_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col00_Byte1) << (1 * 8);
- return res;
- case 1:
- res |= ((int) _Letter_Row03_Col01_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col01_Byte1) << (1 * 8);
- return res;
- case 2:
- res |= ((int) _Letter_Row03_Col02_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col02_Byte1) << (1 * 8);
- return res;
- case 3:
- res |= ((int) _Letter_Row03_Col03_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col03_Byte1) << (1 * 8);
- return res;
- case 4:
- res |= ((int) _Letter_Row03_Col04_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col04_Byte1) << (1 * 8);
- return res;
- case 5:
- res |= ((int) _Letter_Row03_Col05_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col05_Byte1) << (1 * 8);
- return res;
- case 6:
- res |= ((int) _Letter_Row03_Col06_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col06_Byte1) << (1 * 8);
- return res;
- case 7:
- res |= ((int) _Letter_Row03_Col07_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col07_Byte1) << (1 * 8);
- return res;
- case 8:
- res |= ((int) _Letter_Row03_Col08_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col08_Byte1) << (1 * 8);
- return res;
- case 9:
- res |= ((int) _Letter_Row03_Col09_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col09_Byte1) << (1 * 8);
- return res;
- case 10:
- res |= ((int) _Letter_Row03_Col10_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col10_Byte1) << (1 * 8);
- return res;
- case 11:
- res |= ((int) _Letter_Row03_Col11_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col11_Byte1) << (1 * 8);
- return res;
- case 12:
- res |= ((int) _Letter_Row03_Col12_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col12_Byte1) << (1 * 8);
- return res;
- case 13:
- res |= ((int) _Letter_Row03_Col13_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col13_Byte1) << (1 * 8);
- return res;
- case 14:
- res |= ((int) _Letter_Row03_Col14_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col14_Byte1) << (1 * 8);
- return res;
- case 15:
- res |= ((int) _Letter_Row03_Col15_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col15_Byte1) << (1 * 8);
- return res;
- case 16:
- res |= ((int) _Letter_Row03_Col16_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col16_Byte1) << (1 * 8);
- return res;
- case 17:
- res |= ((int) _Letter_Row03_Col17_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col17_Byte1) << (1 * 8);
- return res;
- case 18:
- res |= ((int) _Letter_Row03_Col18_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col18_Byte1) << (1 * 8);
- return res;
- case 19:
- res |= ((int) _Letter_Row03_Col19_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col19_Byte1) << (1 * 8);
- return res;
- case 20:
- res |= ((int) _Letter_Row03_Col20_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col20_Byte1) << (1 * 8);
- return res;
- case 21:
- res |= ((int) _Letter_Row03_Col21_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col21_Byte1) << (1 * 8);
- return res;
- case 22:
- res |= ((int) _Letter_Row03_Col22_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col22_Byte1) << (1 * 8);
- return res;
- case 23:
- res |= ((int) _Letter_Row03_Col23_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col23_Byte1) << (1 * 8);
- return res;
- case 24:
- res |= ((int) _Letter_Row03_Col24_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col24_Byte1) << (1 * 8);
- return res;
- case 25:
- res |= ((int) _Letter_Row03_Col25_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col25_Byte1) << (1 * 8);
- return res;
- case 26:
- res |= ((int) _Letter_Row03_Col26_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col26_Byte1) << (1 * 8);
- return res;
- case 27:
- res |= ((int) _Letter_Row03_Col27_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col27_Byte1) << (1 * 8);
- return res;
- case 28:
- res |= ((int) _Letter_Row03_Col28_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col28_Byte1) << (1 * 8);
- return res;
- case 29:
- res |= ((int) _Letter_Row03_Col29_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col29_Byte1) << (1 * 8);
- return res;
- case 30:
- res |= ((int) _Letter_Row03_Col30_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col30_Byte1) << (1 * 8);
- return res;
- case 31:
- res |= ((int) _Letter_Row03_Col31_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col31_Byte1) << (1 * 8);
- return res;
- case 32:
- res |= ((int) _Letter_Row03_Col32_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col32_Byte1) << (1 * 8);
- return res;
- case 33:
- res |= ((int) _Letter_Row03_Col33_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col33_Byte1) << (1 * 8);
- return res;
- case 34:
- res |= ((int) _Letter_Row03_Col34_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col34_Byte1) << (1 * 8);
- return res;
- case 35:
- res |= ((int) _Letter_Row03_Col35_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col35_Byte1) << (1 * 8);
- return res;
- case 36:
- res |= ((int) _Letter_Row03_Col36_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col36_Byte1) << (1 * 8);
- return res;
- case 37:
- res |= ((int) _Letter_Row03_Col37_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col37_Byte1) << (1 * 8);
- return res;
- case 38:
- res |= ((int) _Letter_Row03_Col38_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col38_Byte1) << (1 * 8);
- return res;
- case 39:
- res |= ((int) _Letter_Row03_Col39_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col39_Byte1) << (1 * 8);
- return res;
- case 40:
- res |= ((int) _Letter_Row03_Col40_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col40_Byte1) << (1 * 8);
- return res;
- case 41:
- res |= ((int) _Letter_Row03_Col41_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col41_Byte1) << (1 * 8);
- return res;
- case 42:
- res |= ((int) _Letter_Row03_Col42_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col42_Byte1) << (1 * 8);
- return res;
- case 43:
- res |= ((int) _Letter_Row03_Col43_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col43_Byte1) << (1 * 8);
- return res;
- case 44:
- res |= ((int) _Letter_Row03_Col44_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col44_Byte1) << (1 * 8);
- return res;
- case 45:
- res |= ((int) _Letter_Row03_Col45_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col45_Byte1) << (1 * 8);
- return res;
- case 46:
- res |= ((int) _Letter_Row03_Col46_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col46_Byte1) << (1 * 8);
- return res;
- case 47:
- res |= ((int) _Letter_Row03_Col47_Byte0) << (0 * 8);
- res |= ((int) _Letter_Row03_Col47_Byte1) << (1 * 8);
- return res;
- default:
- return 0;
- }
- }
- // END GENERATED CODE BLOCK
- return res;
- }
-
- fixed sq_dist(fixed2 p0, fixed2 p1)
- {
- fixed2 delta = p1 - p0;
- //return abs(delta.x) + abs(delta.y);
- return max(abs(delta.x), abs(delta.y));
- }
-
- fixed4 effect_squares (v2f i)
- {
- const fixed time = _Time.y;
-
- #define PI 3.1415926535
- fixed theta = PI/4 + sin(time / 4) * 0.1;
- fixed2x2 rot =
- fixed2x2(cos(theta), -1 * sin(theta),
- sin(theta), cos(theta));
-
- #define NSQ_X 9.0
- #define NSQ_Y 5.0
-
- // Map uv from [0, 1] to [-.5, .5].
- fixed2 p = i.uv - 0.5;
- p *= fixed2(NSQ_X, NSQ_Y);
- p = mul(rot, p);
- p -= 0.5;
-
- // See how far we are from the nearest grid point
- fixed2 intra_pos = frac(p);
- fixed2 intra_center = fixed2(0.5, 0.5);
- fixed intra_dist = sq_dist(intra_pos, intra_center);
-
- fixed st0 = (sin(time) + 1) / 2;
- fixed st1 = (sin(time + PI/8) + 1) / 2;
- fixed st2 = (sin(time + PI/2) + 1) / 2;
- fixed st3 = (sin(time + PI/2 + PI/8) + 1) / 2;
-
- fixed2 center = fixed2(0, 0);
- center = mul(rot, center);
- center -= 0.5;
- fixed2 rot_lim = fixed2(NSQ_X, NSQ_Y);
- rot_lim = mul(rot, rot_lim);
- rot_lim -= 0.5;
-
- float v = 0;
- float x = 0;
-
- if (intra_dist > 0.5 * (0.5 + sin(time * 1.5) * 0.1)) {
- v = intra_dist;
- } else {
- v = 0;
- }
-
- fixed extra_dist = sq_dist(p, center);
- fixed check = max(rot_lim.x, rot_lim.y) / 2;
- if (extra_dist > check * st0) {
- v = 1.0 - v;
- }
- if (extra_dist > check * st1) {
- v = 1.0 - v;
- }
- if (extra_dist > check * st2) {
- v = 1.0 - v;
- }
- if (extra_dist > check * st3) {
- v = 1.0 - v;
- } else {
- x = 0.50;
- }
-
- fixed3 hsv;
- hsv[0] = (v * 0.2 * (1 - x * .8) + 0.55) - x;
- hsv[1] = 0.7;
- hsv[2] = 0.8;
-
- fixed3 col = HSVtoRGB(hsv);
-
- return fixed4(col, 1.0);
- }
-
- fixed4 frag (v2f i) : SV_Target
- {
- float2 uv = i.uv;
-
- // Derived from github.com/pema99/shader-knowledge (MIT license).
- if (unity_CameraProjection[2][0] != 0.0 ||
- unity_CameraProjection[2][1] != 0.0) {
- uv.x = 1.0 - uv.x;
- }
-
- float2 uv_margin = float2(Margin_Scale, Margin_Scale * 2) / 2;
- if (Render_Margin) {
- if (Margin_Rounding_Scale > 0.0) {
- if (InMarginRounding(uv, uv_margin, Margin_Rounding_Scale, /*interior=*/true)) {
- return effect_squares(i);
- }
- if (InMarginRounding(uv, uv_margin, Margin_Rounding_Scale, /*interior=*/false)) {
- return fixed4(0, 0, 0, 0);
- }
- }
- if (InMargin(uv, uv_margin)) {
- if (InSpeechIndicator(uv, uv_margin)) {
- if (floor(TaSTT_Indicator_0) == 1.0) {
- // Actively speaking
- return float3tofixed4(TaSTT_Indicator_Color_2, 1.0);
- } else if (floor(TaSTT_Indicator_1) == 1.0) {
- // Done speaking, waiting for paging.
- return float3tofixed4(TaSTT_Indicator_Color_1, 1.0);
- } else {
- // Neither speaking nor paging.
- return float3tofixed4(TaSTT_Indicator_Color_0, 1.0);
- }
- }
-
- if (Render_Margin) {
- return effect_squares(i);
- }
- }
- }
-
- uv_margin *= 4;
- float2 uv_with_margin = AddMarginToUV(uv, uv_margin);
-
- int letter = GetLetterParameter(uv_with_margin);
-
- float texture_cols;
- float texture_rows;
- float2 letter_uv;
- if (letter < 0xE000) {
- texture_cols = 128.0;
- texture_rows = 64.0;
- letter_uv = GetLetter(uv_with_margin, letter, texture_cols, texture_rows, NCOLS, NROWS);
- } else {
- texture_cols = 8.0;
- texture_rows = 8.0;
- letter_uv = GetLetter(uv_with_margin, letter, texture_cols, texture_rows, 8, 4);
- }
-
- fixed4 background = TaSTT_Backplate.Sample(sampler_linear_repeat, uv);
- fixed4 text;
-
- int which_texture = (int) floor(letter / (64 * 128));
- [forcecase] switch (which_texture)
- {
- case 0:
- text = _Font_0x0000_0x1FFF.Sample(sampler_linear_repeat, letter_uv);
- break;
- case 1:
- text = _Font_0x2000_0x3FFF.Sample(sampler_linear_repeat, letter_uv);
- break;
- case 2:
- text = _Font_0x4000_0x5FFF.Sample(sampler_linear_repeat, letter_uv);
- break;
- case 3:
- text = _Font_0x6000_0x7FFF.Sample(sampler_linear_repeat, letter_uv);
- break;
- case 4:
- text = _Font_0x8000_0x9FFF.Sample(sampler_linear_repeat, letter_uv);
- break;
- case 5:
- text = _Font_0xA000_0xBFFF.Sample(sampler_linear_repeat, letter_uv);
- break;
- case 6:
- text = _Font_0xC000_0xDFFF.Sample(sampler_linear_repeat, letter_uv);
- break;
- default:
- text = _Img_0xE000_0xE03F.Sample(sampler_linear_repeat, letter_uv);
- break;
- }
- fixed4 black = fixed4(0,0,0,1);
- if (text.r == black.r && text.g == black.g && text.b == black.b && text.a == black.a) {
- return background;
- } else {
- return text;
- }
- }
- ENDCG
- }
- }
-} \ No newline at end of file