summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-05-04 18:16:24 -0700
committeryum <yum.food.vr@gmail.com>2025-05-04 18:16:24 -0700
commitfb341dacf0b1bebc2412a3f9e0f4b8b764b7b3d7 (patch)
tree487eaf2aa1d9a1ef3dfee6f6f78d8e574ec9818e
parent9c03c3d916d4533fd1ada394b7171456466a4336 (diff)
Checkpoint - unigram decoding approximately works
-rw-r--r--2ner.shader196
-rw-r--r--unigram_letter_grid.cginc337
2 files changed, 354 insertions, 179 deletions
diff --git a/2ner.shader b/2ner.shader
index a7e015e..6a3bb4a 100644
--- a/2ner.shader
+++ b/2ner.shader
@@ -641,104 +641,104 @@ Shader "yum_food/2ner"
_Unigram_Letter_Grid_Data_Block00_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
_Unigram_Letter_Grid_Data_Block00_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum00_Byte00("Block 00, Datum 00, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum00_Byte01("Block 00, Datum 00, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum01_Byte00("Block 00, Datum 01, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum01_Byte01("Block 00, Datum 01, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum02_Byte00("Block 00, Datum 02, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum02_Byte01("Block 00, Datum 02, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum03_Byte00("Block 00, Datum 03, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum03_Byte01("Block 00, Datum 03, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block01_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
-
- _Unigram_Letter_Grid_Data_Block02_Datum00_Byte00("Block 00, Datum 00, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block02_Datum00_Byte01("Block 00, Datum 00, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block02_Datum01_Byte00("Block 00, Datum 01, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block02_Datum01_Byte01("Block 00, Datum 01, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block02_Datum02_Byte00("Block 00, Datum 02, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block02_Datum02_Byte01("Block 00, Datum 02, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block02_Datum03_Byte00("Block 00, Datum 03, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block02_Datum03_Byte01("Block 00, Datum 03, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block02_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block02_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
-
- _Unigram_Letter_Grid_Data_Block03_Datum00_Byte00("Block 00, Datum 00, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block03_Datum00_Byte01("Block 00, Datum 00, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block03_Datum01_Byte00("Block 00, Datum 01, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block03_Datum01_Byte01("Block 00, Datum 01, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block03_Datum02_Byte00("Block 00, Datum 02, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block03_Datum02_Byte01("Block 00, Datum 02, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block03_Datum03_Byte00("Block 00, Datum 03, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block03_Datum03_Byte01("Block 00, Datum 03, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block03_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block03_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
-
- _Unigram_Letter_Grid_Data_Block04_Datum00_Byte00("Block 00, Datum 00, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block04_Datum00_Byte01("Block 00, Datum 00, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block04_Datum01_Byte00("Block 00, Datum 01, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block04_Datum01_Byte01("Block 00, Datum 01, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block04_Datum02_Byte00("Block 00, Datum 02, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block04_Datum02_Byte01("Block 00, Datum 02, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block04_Datum03_Byte00("Block 00, Datum 03, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block04_Datum03_Byte01("Block 00, Datum 03, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block04_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block04_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
-
- _Unigram_Letter_Grid_Data_Block05_Datum00_Byte00("Block 00, Datum 00, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block05_Datum00_Byte01("Block 00, Datum 00, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block05_Datum01_Byte00("Block 00, Datum 01, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block05_Datum01_Byte01("Block 00, Datum 01, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block05_Datum02_Byte00("Block 00, Datum 02, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block05_Datum02_Byte01("Block 00, Datum 02, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block05_Datum03_Byte00("Block 00, Datum 03, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block05_Datum03_Byte01("Block 00, Datum 03, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block05_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block05_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
-
- _Unigram_Letter_Grid_Data_Block06_Datum00_Byte00("Block 00, Datum 00, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block06_Datum00_Byte01("Block 00, Datum 00, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block06_Datum01_Byte00("Block 00, Datum 01, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block06_Datum01_Byte01("Block 00, Datum 01, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block06_Datum02_Byte00("Block 00, Datum 02, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block06_Datum02_Byte01("Block 00, Datum 02, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block06_Datum03_Byte00("Block 00, Datum 03, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block06_Datum03_Byte01("Block 00, Datum 03, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block06_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block06_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
-
- _Unigram_Letter_Grid_Data_Block07_Datum00_Byte00("Block 00, Datum 00, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block07_Datum00_Byte01("Block 00, Datum 00, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block07_Datum01_Byte00("Block 00, Datum 01, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block07_Datum01_Byte01("Block 00, Datum 01, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block07_Datum02_Byte00("Block 00, Datum 02, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block07_Datum02_Byte01("Block 00, Datum 02, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block07_Datum03_Byte00("Block 00, Datum 03, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block07_Datum03_Byte01("Block 00, Datum 03, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block07_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block07_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
-
- _Unigram_Letter_Grid_Data_Block08_Datum00_Byte00("Block 00, Datum 00, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block08_Datum00_Byte01("Block 00, Datum 00, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block08_Datum01_Byte00("Block 00, Datum 01, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block08_Datum01_Byte01("Block 00, Datum 01, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block08_Datum02_Byte00("Block 00, Datum 02, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block08_Datum02_Byte01("Block 00, Datum 02, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block08_Datum03_Byte00("Block 00, Datum 03, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block08_Datum03_Byte01("Block 00, Datum 03, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block08_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block08_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
-
- _Unigram_Letter_Grid_Data_Block09_Datum00_Byte00("Block 00, Datum 00, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block09_Datum00_Byte01("Block 00, Datum 00, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block09_Datum01_Byte00("Block 00, Datum 01, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block09_Datum01_Byte01("Block 00, Datum 01, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block09_Datum02_Byte00("Block 00, Datum 02, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block09_Datum02_Byte01("Block 00, Datum 02, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block09_Datum03_Byte00("Block 00, Datum 03, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block09_Datum03_Byte01("Block 00, Datum 03, Byte 01", Float) = 0
- _Unigram_Letter_Grid_Data_Block09_Datum04_Byte00("Block 00, Datum 04, Byte 00", Float) = 0
- _Unigram_Letter_Grid_Data_Block09_Datum04_Byte01("Block 00, Datum 04, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum00_Byte00("Block 01, Datum 00, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum00_Byte01("Block 01, Datum 00, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum01_Byte00("Block 01, Datum 01, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum01_Byte01("Block 01, Datum 01, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum02_Byte00("Block 01, Datum 02, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum02_Byte01("Block 01, Datum 02, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum03_Byte00("Block 01, Datum 03, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum03_Byte01("Block 01, Datum 03, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum04_Byte00("Block 01, Datum 04, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block01_Datum04_Byte01("Block 01, Datum 04, Byte 01", Float) = 0
+
+ _Unigram_Letter_Grid_Data_Block02_Datum00_Byte00("Block 02, Datum 00, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block02_Datum00_Byte01("Block 02, Datum 00, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block02_Datum01_Byte00("Block 02, Datum 01, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block02_Datum01_Byte01("Block 02, Datum 01, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block02_Datum02_Byte00("Block 02, Datum 02, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block02_Datum02_Byte01("Block 02, Datum 02, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block02_Datum03_Byte00("Block 02, Datum 03, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block02_Datum03_Byte01("Block 02, Datum 03, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block02_Datum04_Byte00("Block 02, Datum 04, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block02_Datum04_Byte01("Block 02, Datum 04, Byte 01", Float) = 0
+
+ _Unigram_Letter_Grid_Data_Block03_Datum00_Byte00("Block 03, Datum 00, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block03_Datum00_Byte01("Block 03, Datum 00, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block03_Datum01_Byte00("Block 03, Datum 01, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block03_Datum01_Byte01("Block 03, Datum 01, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block03_Datum02_Byte00("Block 03, Datum 02, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block03_Datum02_Byte01("Block 03, Datum 02, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block03_Datum03_Byte00("Block 03, Datum 03, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block03_Datum03_Byte01("Block 03, Datum 03, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block03_Datum04_Byte00("Block 03, Datum 04, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block03_Datum04_Byte01("Block 03, Datum 04, Byte 01", Float) = 0
+
+ _Unigram_Letter_Grid_Data_Block04_Datum00_Byte00("Block 04, Datum 00, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block04_Datum00_Byte01("Block 04, Datum 00, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block04_Datum01_Byte00("Block 04, Datum 01, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block04_Datum01_Byte01("Block 04, Datum 01, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block04_Datum02_Byte00("Block 04, Datum 02, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block04_Datum02_Byte01("Block 04, Datum 02, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block04_Datum03_Byte00("Block 04, Datum 03, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block04_Datum03_Byte01("Block 04, Datum 03, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block04_Datum04_Byte00("Block 04, Datum 04, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block04_Datum04_Byte01("Block 04, Datum 04, Byte 01", Float) = 0
+
+ _Unigram_Letter_Grid_Data_Block05_Datum00_Byte00("Block 05, Datum 00, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block05_Datum00_Byte01("Block 05, Datum 00, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block05_Datum01_Byte00("Block 05, Datum 01, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block05_Datum01_Byte01("Block 05, Datum 01, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block05_Datum02_Byte00("Block 05, Datum 02, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block05_Datum02_Byte01("Block 05, Datum 02, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block05_Datum03_Byte00("Block 05, Datum 03, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block05_Datum03_Byte01("Block 05, Datum 03, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block05_Datum04_Byte00("Block 05, Datum 04, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block05_Datum04_Byte01("Block 05, Datum 04, Byte 01", Float) = 0
+
+ _Unigram_Letter_Grid_Data_Block06_Datum00_Byte00("Block 06, Datum 00, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block06_Datum00_Byte01("Block 06, Datum 00, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block06_Datum01_Byte00("Block 06, Datum 01, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block06_Datum01_Byte01("Block 06, Datum 01, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block06_Datum02_Byte00("Block 06, Datum 02, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block06_Datum02_Byte01("Block 06, Datum 02, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block06_Datum03_Byte00("Block 06, Datum 03, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block06_Datum03_Byte01("Block 06, Datum 03, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block06_Datum04_Byte00("Block 06, Datum 04, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block06_Datum04_Byte01("Block 06, Datum 04, Byte 01", Float) = 0
+
+ _Unigram_Letter_Grid_Data_Block07_Datum00_Byte00("Block 07, Datum 00, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block07_Datum00_Byte01("Block 07, Datum 00, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block07_Datum01_Byte00("Block 07, Datum 01, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block07_Datum01_Byte01("Block 07, Datum 01, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block07_Datum02_Byte00("Block 07, Datum 02, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block07_Datum02_Byte01("Block 07, Datum 02, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block07_Datum03_Byte00("Block 07, Datum 03, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block07_Datum03_Byte01("Block 07, Datum 03, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block07_Datum04_Byte00("Block 07, Datum 04, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block07_Datum04_Byte01("Block 07, Datum 04, Byte 01", Float) = 0
+
+ _Unigram_Letter_Grid_Data_Block08_Datum00_Byte00("Block 08, Datum 00, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block08_Datum00_Byte01("Block 08, Datum 00, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block08_Datum01_Byte00("Block 08, Datum 01, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block08_Datum01_Byte01("Block 08, Datum 01, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block08_Datum02_Byte00("Block 08, Datum 02, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block08_Datum02_Byte01("Block 08, Datum 02, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block08_Datum03_Byte00("Block 08, Datum 03, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block08_Datum03_Byte01("Block 08, Datum 03, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block08_Datum04_Byte00("Block 08, Datum 04, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block08_Datum04_Byte01("Block 08, Datum 04, Byte 01", Float) = 0
+
+ _Unigram_Letter_Grid_Data_Block09_Datum00_Byte00("Block 09, Datum 00, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block09_Datum00_Byte01("Block 09, Datum 00, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block09_Datum01_Byte00("Block 09, Datum 01, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block09_Datum01_Byte01("Block 09, Datum 01, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block09_Datum02_Byte00("Block 09, Datum 02, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block09_Datum02_Byte01("Block 09, Datum 02, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block09_Datum03_Byte00("Block 09, Datum 03, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block09_Datum03_Byte01("Block 09, Datum 03, Byte 01", Float) = 0
+ _Unigram_Letter_Grid_Data_Block09_Datum04_Byte00("Block 09, Datum 04, Byte 00", Float) = 0
+ _Unigram_Letter_Grid_Data_Block09_Datum04_Byte01("Block 09, iatum 04, Byte 01", Float) = 0
[HideInInspector] m_end_Unigram_Letter_Grid("Unigram letter grid", Float) = 0
//endex
diff --git a/unigram_letter_grid.cginc b/unigram_letter_grid.cginc
index e31102e..9b5dc81 100644
--- a/unigram_letter_grid.cginc
+++ b/unigram_letter_grid.cginc
@@ -10,11 +10,11 @@
#include "math.cginc"
#include "texture_utils.cginc"
-// ULD = unigram letter grid
+// ULG = unigram letter grid
// Block width = number of tokens sent per block
-#define ULD_BLOCK_WIDTH 5
+#define ULG_BLOCK_WIDTH 5
// Num blocks = total # of blocks in memory
-#define ULD_NUM_BLOCKS 10
+#define ULG_NUM_BLOCKS 10
texture2D _Unigram_Letter_Grid_Glyphs;
float4 _Unigram_Letter_Grid_Glyphs_TexelSize;
@@ -31,12 +31,17 @@ float _Unigram_Letter_Grid_Min_Screen_Px_Range;
float _Unigram_Letter_Grid_Blurriness;
float _Unigram_Letter_Grid_Alpha_Threshold;
+#define ULG_VP
+#define ULG_D0
+#define ULG_D1
+
+#if defined(ULG_VP)
// For posterity: this syntax is called "cbuffer aliasing".
// The purpose here is to map a bunch of material properties onto an indexable
// array (the first element of the cbuffer).
cbuffer UnigramLetterGridVisualPointers
{
- float _Unigram_Letter_Visual_Pointers[ULD_NUM_BLOCKS] : packoffset(c0);
+ float _Unigram_Letter_Visual_Pointers[ULG_NUM_BLOCKS] : packoffset(c0);
float _Unigram_Letter_Grid_Block00_Visual_Pointer : packoffset(c0);
float _Unigram_Letter_Grid_Block01_Visual_Pointer : packoffset(c1);
float _Unigram_Letter_Grid_Block02_Visual_Pointer : packoffset(c2);
@@ -48,10 +53,12 @@ cbuffer UnigramLetterGridVisualPointers
float _Unigram_Letter_Grid_Block08_Visual_Pointer : packoffset(c8);
float _Unigram_Letter_Grid_Block09_Visual_Pointer : packoffset(c9);
}
+#endif // ULG_VP
+#if defined(ULG_D0)
cbuffer UnigramLetterGridDataByte00
{
- float _Unigram_Letter_Data_Byte00[ULD_NUM_BLOCKS][ULD_BLOCK_WIDTH] : packoffset(c0);
+ float _Unigram_Letter_Data_Byte00[ULG_NUM_BLOCKS * ULG_BLOCK_WIDTH] : packoffset(c0);
float _Unigram_Letter_Grid_Data_Block00_Datum00_Byte00 : packoffset(c0);
float _Unigram_Letter_Grid_Data_Block00_Datum01_Byte00 : packoffset(c1);
@@ -113,10 +120,12 @@ cbuffer UnigramLetterGridDataByte00
float _Unigram_Letter_Grid_Data_Block09_Datum03_Byte00 : packoffset(c48);
float _Unigram_Letter_Grid_Data_Block09_Datum04_Byte00 : packoffset(c49);
}
+#endif // ULG_D0
+#if defined(ULG_D1)
cbuffer UnigramLetterGridDataByte01
{
- float _Unigram_Letter_Data_Byte01[ULD_NUM_BLOCKS][ULD_BLOCK_WIDTH] : packoffset(c0);
+ float _Unigram_Letter_Data_Byte01[ULG_NUM_BLOCKS * ULG_BLOCK_WIDTH] : packoffset(c0);
float _Unigram_Letter_Grid_Data_Block00_Datum00_Byte01 : packoffset(c0);
float _Unigram_Letter_Grid_Data_Block00_Datum01_Byte01 : packoffset(c1);
@@ -178,31 +187,164 @@ cbuffer UnigramLetterGridDataByte01
float _Unigram_Letter_Grid_Data_Block09_Datum03_Byte01 : packoffset(c48);
float _Unigram_Letter_Grid_Data_Block09_Datum04_Byte01 : packoffset(c49);
}
+#endif // ULG_D1
+
+void PreventCbufferElision(v2f i, inout float a) {
+ // Hack to prevent cbuffer from getting optimized out.
+ [branch]
+ if (i.uv01.x < 0) {
+ a = 0;
+#if defined(ULG_VP)
+ a +=
+ _Unigram_Letter_Grid_Block00_Visual_Pointer +
+ _Unigram_Letter_Grid_Block01_Visual_Pointer +
+ _Unigram_Letter_Grid_Block02_Visual_Pointer +
+ _Unigram_Letter_Grid_Block03_Visual_Pointer +
+ _Unigram_Letter_Grid_Block04_Visual_Pointer +
+ _Unigram_Letter_Grid_Block05_Visual_Pointer +
+ _Unigram_Letter_Grid_Block06_Visual_Pointer +
+ _Unigram_Letter_Grid_Block07_Visual_Pointer +
+ _Unigram_Letter_Grid_Block08_Visual_Pointer +
+ _Unigram_Letter_Grid_Block09_Visual_Pointer;
+#endif // ULG_VP
+#if defined(ULG_D0)
+ a +=
+ _Unigram_Letter_Grid_Data_Block00_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block00_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block00_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block00_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block00_Datum04_Byte00 +
+ _Unigram_Letter_Grid_Data_Block01_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block01_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block01_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block01_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block01_Datum04_Byte00 +
+ _Unigram_Letter_Grid_Data_Block02_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block02_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block02_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block02_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block02_Datum04_Byte00 +
+ _Unigram_Letter_Grid_Data_Block03_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block03_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block03_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block03_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block03_Datum04_Byte00 +
+ _Unigram_Letter_Grid_Data_Block04_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block04_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block04_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block04_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block04_Datum04_Byte00 +
+ _Unigram_Letter_Grid_Data_Block05_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block05_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block05_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block05_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block05_Datum04_Byte00 +
+ _Unigram_Letter_Grid_Data_Block06_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block06_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block06_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block06_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block06_Datum04_Byte00 +
+ _Unigram_Letter_Grid_Data_Block07_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block07_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block07_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block07_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block07_Datum04_Byte00 +
+ _Unigram_Letter_Grid_Data_Block08_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block08_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block08_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block08_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block08_Datum04_Byte00 +
+ _Unigram_Letter_Grid_Data_Block09_Datum00_Byte00 +
+ _Unigram_Letter_Grid_Data_Block09_Datum01_Byte00 +
+ _Unigram_Letter_Grid_Data_Block09_Datum02_Byte00 +
+ _Unigram_Letter_Grid_Data_Block09_Datum03_Byte00 +
+ _Unigram_Letter_Grid_Data_Block09_Datum04_Byte00;
+#endif // ULG_D0
+#if defined(ULG_D1)
+ a +=
+ _Unigram_Letter_Grid_Data_Block00_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block00_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block00_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block00_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block00_Datum04_Byte01 +
+ _Unigram_Letter_Grid_Data_Block01_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block01_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block01_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block01_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block01_Datum04_Byte01 +
+ _Unigram_Letter_Grid_Data_Block02_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block02_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block02_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block02_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block02_Datum04_Byte01 +
+ _Unigram_Letter_Grid_Data_Block03_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block03_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block03_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block03_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block03_Datum04_Byte01 +
+ _Unigram_Letter_Grid_Data_Block04_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block04_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block04_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block04_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block04_Datum04_Byte01 +
+ _Unigram_Letter_Grid_Data_Block05_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block05_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block05_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block05_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block05_Datum04_Byte01 +
+ _Unigram_Letter_Grid_Data_Block06_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block06_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block06_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block06_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block06_Datum04_Byte01 +
+ _Unigram_Letter_Grid_Data_Block07_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block07_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block07_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block07_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block07_Datum04_Byte01 +
+ _Unigram_Letter_Grid_Data_Block08_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block08_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block08_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block08_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block08_Datum04_Byte01 +
+ _Unigram_Letter_Grid_Data_Block09_Datum00_Byte01 +
+ _Unigram_Letter_Grid_Data_Block09_Datum01_Byte01 +
+ _Unigram_Letter_Grid_Data_Block09_Datum02_Byte01 +
+ _Unigram_Letter_Grid_Data_Block09_Datum03_Byte01 +
+ _Unigram_Letter_Grid_Data_Block09_Datum04_Byte01;
+#endif // ULG_D1
+ }
+}
-void GetBlock(uint which_block, out uint data[ULD_BLOCK_WIDTH]) {
+#if defined(ULG_D0) && defined(ULG_D1)
+void GetBlock(uint which_block, out uint data[ULG_BLOCK_WIDTH]) {
[loop]
- for (uint i = 0; i < ULD_BLOCK_WIDTH; i++) {
- data[i] = ((uint) _Unigram_Letter_Data_Byte00[which_block][i]);
- data[i] |= ((uint) _Unigram_Letter_Data_Byte01[which_block][i]) << 8;
- }
+ for (uint i = 0; i < ULG_BLOCK_WIDTH; i++) {
+ data[i] = ((uint) _Unigram_Letter_Data_Byte00[which_block * ULG_BLOCK_WIDTH + i]);
+ data[i] |= ((uint) _Unigram_Letter_Data_Byte01[which_block * ULG_BLOCK_WIDTH + i]) << 8;
+ }
}
+#endif
+#if defined(ULG_VP)
// Get the tokens that cover `screen_ptr`. Also return `block_ptr`, the
// location where this block of tokens begins.
void GetTokens(uint screen_ptr,
out uint block_ptr,
- out uint tokens[ULD_BLOCK_WIDTH]) {
- block_ptr = 0;
+ out uint tokens[ULG_BLOCK_WIDTH]) {
+ block_ptr = _Unigram_Letter_Visual_Pointers[0];
uint which_block = 0;
[loop]
- for (uint i = 0; i < ULD_BLOCK_WIDTH; i++) {
- if (screen_ptr >= _Unigram_Letter_Visual_Pointers[i]) {
- block_ptr = _Unigram_Letter_Visual_Pointers[i];
- which_block = i;
+ for (uint i = 1; i < ULG_BLOCK_WIDTH; i++) {
+ if (screen_ptr < _Unigram_Letter_Visual_Pointers[i]) {
+ break;
}
+ block_ptr = _Unigram_Letter_Visual_Pointers[i];
+ which_block = i;
}
GetBlock(which_block, tokens);
}
+#endif
uint2 FoldIndex(uint flat_idx, uint img_res) {
return uint2(flat_idx % img_res, floor(flat_idx / img_res));
@@ -220,7 +362,7 @@ float2 GetUnigramLutUV(uint idx)
// Remap onto [0, 1] x [0, 1].
float2 uv = idx_2d * _Unigram_Letter_Grid_LUT_TexelSize.xy;
// Center the UV coordinate in its texel.
- uv += _Unigram_Letter_Grid_LUT_TexelSize.x * 0.5;
+ uv += _Unigram_Letter_Grid_LUT_TexelSize.xy * 0.5;
// uvs have 0,0 at bottom left. LUT has 0,0 at top left. yerr.
uv.y = 1.0 - uv.y;
return uv;
@@ -254,27 +396,31 @@ uint GetTokenChar(uint token_offset, uint nth)
return chars[nth % 4];
}
+#if defined(ULG_VP) && defined(ULG_D0) && defined(ULG_D1)
// Get the character which covers the screen position.
uint GetChar(uint screen_ptr) {
uint block_ptr;
- uint tokens[ULD_BLOCK_WIDTH];
+ uint tokens[ULG_BLOCK_WIDTH];
GetTokens(screen_ptr, block_ptr, tokens);
// Begin scanning at the start of the block.
uint start = block_ptr;
- uint covering_token = 0;
+ // The current token is rendered starting at this location.
+ // In other words, it covers [token_ptr, token_ptr + token_length)
uint token_ptr = block_ptr;
uint token_offset;
- for (uint i = 0; i < ULD_BLOCK_WIDTH; i++) {
+ for (uint i = 0; i < ULG_BLOCK_WIDTH; i++) {
uint token_length;
TokenLengthOffset(tokens[i], token_length, token_offset);
- if (token_ptr + token_length >= screen_ptr) {
- covering_token = tokens[i];
+ if (screen_ptr >= token_ptr &&
+ screen_ptr < token_ptr + token_length) {
+ break;
}
token_ptr += token_length;
}
uint nth_char = screen_ptr - token_ptr;
return GetTokenChar(token_offset, nth_char);
}
+#endif
struct UnigramLetterGridOutput {
float4 albedo;
@@ -284,64 +430,93 @@ struct UnigramLetterGridOutput {
};
UnigramLetterGridOutput UnigramLetterGrid(v2f i) {
- UnigramLetterGridOutput output;
-
- int2 cell_pos;
- int2 font_res = int2(round(_Unigram_Letter_Grid_Tex_Res_X), round(_Unigram_Letter_Grid_Tex_Res_Y));
- int2 grid_res = int2(round(_Unigram_Letter_Grid_Res_X), round(_Unigram_Letter_Grid_Res_Y));
- float2 cell_uv; // uv within each letter cell
-
- float4 scoff = _Unigram_Letter_Grid_UV_Scale_Offset;
- float2 uv = ((i.uv01.xy - 0.5) - scoff.zw) * scoff.xy + 0.5;
-
- bool in_box = getBoxLoc(uv, 0, 1, grid_res, _Unigram_Letter_Grid_Padding, cell_pos, cell_uv);
- cell_pos.y = (grid_res.y - cell_pos.y) - 1;
-
- //float c = GetChar(cell_pos.x) + '0';
- // DEBUG: show the token offset and length for the first 4 tokens.
- uint tok_len, tok_off;
- TokenLengthOffset(cell_pos.y, tok_len, tok_off);
- float c;
- switch (cell_pos.x % 4) {
- case 0:
- c = tok_off & 0xff;
- break;
- case 1:
- c = (tok_off >> 8) & 0xff;
- break;
- case 2:
- c = (tok_off >> 16) & 0xff;
- break;
- case 3:
- c = tok_len;
- break;
- }
- c += '0';
-
- float3 msd = renderInBox(c, uv, cell_uv, _Unigram_Letter_Grid_Glyphs, font_res).rgb;
- float sd = median(msd);
-
- // Calculate screen pixel range
- float screen_px_range;
- {
- float2 tex_size = float2(_Unigram_Letter_Grid_Glyphs_TexelSize.zw);
- float2 real_cell_size = floor(tex_size / grid_res); // size of cell in texels
- float2 unit_range = _Unigram_Letter_Grid_Screen_Px_Range / real_cell_size;
- float2 screen_tex_size = 1 / fwidth(cell_uv);
- screen_px_range = max(0.5 * dot(unit_range, screen_tex_size), _Unigram_Letter_Grid_Min_Screen_Px_Range);
- }
-
- float screen_px_distance = screen_px_range * (sd - _Unigram_Letter_Grid_Alpha_Threshold);
- float smooth_range = (length(grid_res) / sqrt(screen_px_range)) * _Unigram_Letter_Grid_Blurriness;
- float op = smoothstep(-smooth_range, smooth_range, screen_px_distance);
-
- // Apply blending to output
- output.albedo = float4(float3(1,1,1), op * in_box);
- output.metallic = 0;
- output.roughness = 1;
- output.emission = 0;
-
- return output;
+ UnigramLetterGridOutput output;
+
+ int2 cell_pos;
+ int2 font_res = int2(round(_Unigram_Letter_Grid_Tex_Res_X), round(_Unigram_Letter_Grid_Tex_Res_Y));
+ int2 grid_res = int2(round(_Unigram_Letter_Grid_Res_X), round(_Unigram_Letter_Grid_Res_Y));
+ float2 cell_uv; // uv within each letter cell
+
+ float4 scoff = _Unigram_Letter_Grid_UV_Scale_Offset;
+ float2 uv = ((i.uv01.xy - 0.5) - scoff.zw) * scoff.xy + 0.5;
+
+ bool in_box = getBoxLoc(uv, 0, 1, grid_res, _Unigram_Letter_Grid_Padding, cell_pos, cell_uv);
+ cell_pos.y = (grid_res.y - cell_pos.y) - 1;
+
+#if 1
+ float c = GetChar(cell_pos.x);
+#elif 0
+ float token_offset=65536;
+ float c = GetTokenChar(token_offset, cell_pos.x);
+#elif 0
+ float offset = 0;
+ [branch]
+ if (i.uv01.x < 0) {
+ offset = 1;
+ }
+ float c0 = _Unigram_Letter_Visual_Pointers[cell_pos.x+offset] + '0';
+ float c1 = _Unigram_Letter_Data_Byte00[cell_pos.x+offset] + '0';
+ float c2 = _Unigram_Letter_Data_Byte01[cell_pos.x+offset] + '0';
+ float c;
+ switch (cell_pos.y % 3) {
+ case 0:
+ c = c0;
+ break;
+ case 1:
+ c = c1;
+ break;
+ case 2:
+ c = c2;
+ break;
+ }
+#else
+ // DEBUG: show the token offset and length for the first 4 tokens.
+ uint tok_len, tok_off;
+ TokenLengthOffset(cell_pos.y, tok_len, tok_off);
+ float c;
+ switch (cell_pos.x % 4) {
+ case 0:
+ c = tok_off & 0xff;
+ break;
+ case 1:
+ c = (tok_off >> 8) & 0xff;
+ break;
+ case 2:
+ c = (tok_off >> 16) & 0xff;
+ break;
+ case 3:
+ c = tok_len;
+ break;
+ }
+ c += '0';
+#endif
+
+ float3 msd = renderInBox(c, uv, cell_uv, _Unigram_Letter_Grid_Glyphs, font_res).rgb;
+ float sd = median(msd);
+
+ // Calculate screen pixel range
+ float screen_px_range;
+ {
+ float2 tex_size = float2(_Unigram_Letter_Grid_Glyphs_TexelSize.zw);
+ float2 real_cell_size = floor(tex_size / grid_res); // size of cell in texels
+ float2 unit_range = _Unigram_Letter_Grid_Screen_Px_Range / real_cell_size;
+ float2 screen_tex_size = 1 / fwidth(cell_uv);
+ screen_px_range = max(0.5 * dot(unit_range, screen_tex_size), _Unigram_Letter_Grid_Min_Screen_Px_Range);
+ }
+
+ float screen_px_distance = screen_px_range * (sd - _Unigram_Letter_Grid_Alpha_Threshold);
+ float smooth_range = (length(grid_res) / sqrt(screen_px_range)) * _Unigram_Letter_Grid_Blurriness;
+ float op = smoothstep(-smooth_range, smooth_range, screen_px_distance);
+
+ // Apply blending to output
+ output.albedo.a = 1;
+ PreventCbufferElision(i, output.albedo.a);
+ output.albedo = float4(float3(1,1,1), output.albedo.a * op * in_box);
+ output.metallic = 0;
+ output.roughness = 1;
+ output.emission = 0;
+
+ return output;
}
#endif // _UNIGRAM_LETTER_GRID