1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
static char osd_header_shader[] = \
"#define ch_dgr uvec4(0x001824,0x241800,0x000000,0x000000)\n"
"#define ch_spc uvec4(0x000000,0x000000,0x000000,0x000000)\n"
"#define ch_exc uvec4(0x003078,0x787830,0x300030,0x300000)\n"
"#define ch_quo uvec4(0x006666,0x662400,0x000000,0x000000)\n"
"#define ch_hsh uvec4(0x006C6C,0xFE6C6C,0x6CFE6C,0x6C0000)\n"
"#define ch_dol uvec4(0x30307C,0xC0C078,0x0C0CF8,0x303000)\n"
"#define ch_pct uvec4(0x000000,0xC4CC18,0x3060CC,0x8C0000)\n"
"#define ch_amp uvec4(0x0070D8,0xD870FA,0xDECCDC,0x760000)\n"
"#define ch_apo uvec4(0x003030,0x306000,0x000000,0x000000)\n"
"#define ch_lbr uvec4(0x000C18,0x306060,0x603018,0x0C0000)\n"
"#define ch_rbr uvec4(0x006030,0x180C0C,0x0C1830,0x600000)\n"
"#define ch_ast uvec4(0x000000,0x663CFF,0x3C6600,0x000000)\n"
"#define ch_crs uvec4(0x000000,0x18187E,0x181800,0x000000)\n"
"#define ch_com uvec4(0x000000,0x000000,0x000038,0x386000)\n"
"#define ch_dsh uvec4(0x000000,0x0000FE,0x000000,0x000000)\n"
"#define ch_per uvec4(0x000000,0x000000,0x000038,0x380000)\n"
"#define ch_lsl uvec4(0x000002,0x060C18,0x3060C0,0x800000)\n"
"#define ch_0 uvec4(0x007CC6,0xD6D6D6,0xD6D6C6,0x7C0000)\n"
"#define ch_1 uvec4(0x001030,0xF03030,0x303030,0xFC0000)\n"
"#define ch_2 uvec4(0x0078CC,0xCC0C18,0x3060CC,0xFC0000)\n"
"#define ch_3 uvec4(0x0078CC,0x0C0C38,0x0C0CCC,0x780000)\n"
"#define ch_4 uvec4(0x000C1C,0x3C6CCC,0xFE0C0C,0x1E0000)\n"
"#define ch_5 uvec4(0x00FCC0,0xC0C0F8,0x0C0CCC,0x780000)\n"
"#define ch_6 uvec4(0x003860,0xC0C0F8,0xCCCCCC,0x780000)\n"
"#define ch_7 uvec4(0x00FEC6,0xC6060C,0x183030,0x300000)\n"
"#define ch_8 uvec4(0x0078CC,0xCCEC78,0xDCCCCC,0x780000)\n"
"#define ch_9 uvec4(0x0078CC,0xCCCC7C,0x181830,0x700000)\n"
"#define ch_col uvec4(0x000000,0x383800,0x003838,0x000000)\n"
"#define ch_scl uvec4(0x000000,0x383800,0x003838,0x183000)\n"
"#define ch_les uvec4(0x000C18,0x3060C0,0x603018,0x0C0000)\n"
"#define ch_equ uvec4(0x000000,0x007E00,0x7E0000,0x000000)\n"
"#define ch_grt uvec4(0x006030,0x180C06,0x0C1830,0x600000)\n"
"#define ch_que uvec4(0x0078CC,0x0C1830,0x300030,0x300000)\n"
"#define ch_ats uvec4(0x007CC6,0xC6DEDE,0xDEC0C0,0x7C0000)\n"
"#define ch_A uvec4(0x003078,0xCCCCCC,0xFCCCCC,0xCC0000)\n"
"#define ch_B uvec4(0x00FC66,0x66667C,0x666666,0xFC0000)\n"
"#define ch_C uvec4(0x003C66,0xC6C0C0,0xC0C666,0x3C0000)\n"
"#define ch_D uvec4(0x00F86C,0x666666,0x66666C,0xF80000)\n"
"#define ch_E uvec4(0x00FE62,0x60647C,0x646062,0xFE0000)\n"
"#define ch_F uvec4(0x00FE66,0x62647C,0x646060,0xF00000)\n"
"#define ch_G uvec4(0x003C66,0xC6C0C0,0xCEC666,0x3E0000)\n"
"#define ch_H uvec4(0x00CCCC,0xCCCCFC,0xCCCCCC,0xCC0000)\n"
"#define ch_I uvec4(0x007830,0x303030,0x303030,0x780000)\n"
"#define ch_J uvec4(0x001E0C,0x0C0C0C,0xCCCCCC,0x780000)\n"
"#define ch_K uvec4(0x00E666,0x6C6C78,0x6C6C66,0xE60000)\n"
"#define ch_L uvec4(0x00F060,0x606060,0x626666,0xFE0000)\n"
"#define ch_M uvec4(0x00C6EE,0xFEFED6,0xC6C6C6,0xC60000)\n"
"#define ch_N uvec4(0x00C6C6,0xE6F6FE,0xDECEC6,0xC60000)\n"
"#define ch_O uvec4(0x00386C,0xC6C6C6,0xC6C66C,0x380000)\n"
"#define ch_P uvec4(0x00FC66,0x66667C,0x606060,0xF00000)\n"
"#define ch_Q uvec4(0x00386C,0xC6C6C6,0xCEDE7C,0x0C1E00)\n"
"#define ch_R uvec4(0x00FC66,0x66667C,0x6C6666,0xE60000)\n"
"#define ch_S uvec4(0x0078CC,0xCCC070,0x18CCCC,0x780000)\n"
"#define ch_T uvec4(0x00FCB4,0x303030,0x303030,0x780000)\n"
"#define ch_U uvec4(0x00CCCC,0xCCCCCC,0xCCCCCC,0x780000)\n"
"#define ch_V uvec4(0x00CCCC,0xCCCCCC,0xCCCC78,0x300000)\n"
"#define ch_W uvec4(0x00C6C6,0xC6C6D6,0xD66C6C,0x6C0000)\n"
"#define ch_X uvec4(0x00CCCC,0xCC7830,0x78CCCC,0xCC0000)\n"
"#define ch_Y uvec4(0x00CCCC,0xCCCC78,0x303030,0x780000)\n"
"#define ch_Z uvec4(0x00FECE,0x981830,0x6062C6,0xFE0000)\n"
"#define ch_lsb uvec4(0x003C30,0x303030,0x303030,0x3C0000)\n"
"#define ch_rsl uvec4(0x000080,0xC06030,0x180C06,0x020000)\n"
"#define ch_rsb uvec4(0x003C0C,0x0C0C0C,0x0C0C0C,0x3C0000)\n"
"#define ch_pow uvec4(0x10386C,0xC60000,0x000000,0x000000)\n"
"#define ch_usc uvec4(0x000000,0x000000,0x000000,0x00FF00)\n"
"#define ch_a uvec4(0x000000,0x00780C,0x7CCCCC,0x760000)\n"
"#define ch_b uvec4(0x00E060,0x607C66,0x666666,0xDC0000)\n"
"#define ch_c uvec4(0x000000,0x0078CC,0xC0C0CC,0x780000)\n"
"#define ch_d uvec4(0x001C0C,0x0C7CCC,0xCCCCCC,0x760000)\n"
"#define ch_e uvec4(0x000000,0x0078CC,0xFCC0CC,0x780000)\n"
"#define ch_f uvec4(0x00386C,0x6060F8,0x606060,0xF00000)\n"
"#define ch_g uvec4(0x000000,0x0076CC,0xCCCC7C,0x0CCC78)\n"
"#define ch_h uvec4(0x00E060,0x606C76,0x666666,0xE60000)\n"
"#define ch_i uvec4(0x001818,0x007818,0x181818,0x7E0000)\n"
"#define ch_j uvec4(0x000C0C,0x003C0C,0x0C0C0C,0xCCCC78)\n"
"#define ch_k uvec4(0x00E060,0x60666C,0x786C66,0xE60000)\n"
"#define ch_l uvec4(0x007818,0x181818,0x181818,0x7E0000)\n"
"#define ch_m uvec4(0x000000,0x00FCD6,0xD6D6D6,0xC60000)\n"
"#define ch_n uvec4(0x000000,0x00F8CC,0xCCCCCC,0xCC0000)\n"
"#define ch_o uvec4(0x000000,0x0078CC,0xCCCCCC,0x780000)\n"
"#define ch_p uvec4(0x000000,0x00DC66,0x666666,0x7C60F0)\n"
"#define ch_q uvec4(0x000000,0x0076CC,0xCCCCCC,0x7C0C1E)\n"
"#define ch_r uvec4(0x000000,0x00EC6E,0x766060,0xF00000)\n"
"#define ch_s uvec4(0x000000,0x0078CC,0x6018CC,0x780000)\n"
"#define ch_t uvec4(0x000020,0x60FC60,0x60606C,0x380000)\n"
"#define ch_u uvec4(0x000000,0x00CCCC,0xCCCCCC,0x760000)\n"
"#define ch_v uvec4(0x000000,0x00CCCC,0xCCCC78,0x300000)\n"
"#define ch_w uvec4(0x000000,0x00C6C6,0xD6D66C,0x6C0000)\n"
"#define ch_x uvec4(0x000000,0x00C66C,0x38386C,0xC60000)\n"
"#define ch_y uvec4(0x000000,0x006666,0x66663C,0x0C18F0)\n"
"#define ch_z uvec4(0x000000,0x00FC8C,0x1860C4,0xFC0000)\n"
"#define ch_lpa uvec4(0x001C30,0x3060C0,0x603030,0x1C0000)\n"
"#define ch_bar uvec4(0x001818,0x181800,0x181818,0x180000)\n"
"#define ch_rpa uvec4(0x00E030,0x30180C,0x183030,0xE00000)\n"
"#define ch_tid uvec4(0x0073DA,0xCE0000,0x000000,0x000000)\n"
"#define ch_lar uvec4(0x000000,0x10386C,0xC6C6FE,0x000000)\n"
"#define spaces(n) for (int i = 0; i < n; i++) { col += char(ch_spc,uv); }\n"
"#define STRW(c) (c*8.)\n"
"#define STRH(c) (c*12.)\n"
"const vec4 tcolor = vec4(0.78,0.76,0.76,1.);\n"
"const vec4 bcolor = vec4(0.1,0.1,0.1,0.65);\n"
"vec2 pp = vec2(0.);\n"
"float in_box(vec2 v, vec2 bl, vec2 tr) {\n"
" vec2 s = step(bl,v)-step(tr,v);\n"
" return s.x*s.y;\n"
"}\n"
"float sprite(uvec4 spr, vec2 uv) {\n"
" uint b = uint((7.-uv.x)+uv.y*8.);\n"
" uvec4 bv = (spr>>min(uvec4(b-72u,b-48u,b-24u,b),31u))&1u;\n"
#ifndef NAUNET_ON_ANDROID
#define HAVE_UVEC_DOT
#endif
#ifdef HAVE_UVEC_DOT
" return in_box(uv,vec2(0.),vec2(8.,12.))*float(dot(bv,uvec4(1u)));\n"
#else
" return in_box(uv,vec2(0.),vec2(8.,12.))*float(bv.x+bv.y+bv.z+bv.w);\n"
#endif
"}\n"
"float char(uvec4 ch, vec2 uv) {\n"
" float px = sprite(ch,floor(uv-pp));\n"
" pp += vec2(8.,0.);\n"
" return px;\n"
"}\n"
"uvec4 digit(uint d) {\n"
" switch (d) {\n"
" case 0: return ch_0;\n"
" case 1: return ch_1;\n"
" case 2: return ch_2;\n"
" case 3: return ch_3;\n"
" case 4: return ch_4;\n"
" case 5: return ch_5;\n"
" case 6: return ch_6;\n"
" case 7: return ch_7;\n"
" case 8: return ch_8;\n"
" case 9:\n"
" default: return ch_9;\n"
" }\n"
"}\n"
"float integer(uint number, vec2 uv) {\n"
" float r = 0.;\n"
" for (int i = 1; i >= 0; i--) {\n"
" r += char(digit(uint(mod(float(number)/max(1.,float(i)*10.),10.))),uv);\n"
" }\n"
" return r;\n"
"}\n";
|