summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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