summaryrefslogtreecommitdiff
path: root/src/render/shaders/osd.h
blob: 32e12e6ff7f8171413aea7989a01feee64815994 (plain)
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
static char osd_shader[] = \
"float text(vec2 uv, vec2 pos1, vec2 pos2) {\n"
" float col = 0.;\n"
" pp = pos1;\n"
" if (connecting != 0u) {\n"
"  float t = mod(time,1.8);\n"
"  for (int i = 0; i < 3; i++) {\n"
"    col += ch(ch_per,uv)*float(t >= float(i)*0.6);\n"
"  }\n"
" } else if (paused != 0u) {\n"
"  col = ch(ch_p,uv)+ch(ch_a,uv)+ch(ch_u,uv)+ch(ch_s,uv)+ch(ch_e,uv)+ch(ch_d,uv);\n"
" }\n"
" pp = pos2;\n"
" if (negative != 0u) {\n"
"  col += ch(ch_dsh,uv);\n"
" }\n"
" if (show_hour != 0u) {\n"
"  col += integer(num1,uv)+ch(ch_col,uv);\n"
" }\n"
" col += integer(num2,uv)+ch(ch_col,uv)+integer(num3,uv)+ch(ch_lsl,uv);\n"
" if (show_hour != 0u) {\n"
"  col += integer(num4,uv)+ch(ch_col,uv);\n"
" }\n"
" col += integer(num5,uv)+ch(ch_col,uv)+integer(num6,uv);\n"
" return col;\n"
"}\n"
"float text_over(vec2 uv, vec2 pos3) {\n"
" float col = 0.;\n"
" pp = pos3;\n"
" if (show_hour != 0u && bar_mode == 1u) {\n"
"  col = integer(num7,uv)+ch(ch_col,uv);\n"
" }\n"
" col += integer(num8,uv)+((bar_mode == 2u) ? ch(ch_per,uv) : ch(ch_col,uv))+integer(num9,uv);\n"
" return col;\n"
"}\n"
"vec4 draw_osd() {\n"
" vec2 sf = vec2(screen/scale);\n"
" vec2 ss = sf/3.;\n"
" vec2 c = vec2(coord.x,1.-coord.y);\n"
" vec2 uv = c*ss;\n"
" vec2 pos1 = vec2(8.,ss.y-4.-STRH(1.));\n"
" float width1 = (show_hour != 0u) ? 17. : 11.;\n"
" width1 += float(negative);\n"
" vec2 pos2 = floor(vec2(ss.x/2.-STRW(width1)/2.,ss.y/9.));\n"
" pos2.x -= STRW(0.5) * float(negative);\n"
" float ov = fract(bar);\n"
" ov = (-1.+(bar-ov)+float(c.x < ov))/1.5;\n"
" vec4 color = mix(bcolor,mix(tcolor-0.075,vec4(0.7,0.45,0.,1.),ov),float(c.x < bar));\n"
" float alpha = (c.x >= bar) ? 0.7 : 1.;\n"
" color = mix(color,vec4(tcolor.xyz,alpha)+float(bar > dbar)*0.15,float(c.x < dbar));\n"
" color = mix(color,vec4(tcolor.xyz,alpha-0.1)+float(bar > bbar)*0.15,float(c.x < bbar)*0.5);\n"
" color *= float(uv.y <= 5.);\n"
" if (connecting == 0u && paused != 0u) {\n"
"  color = mix(color,bcolor,in_box(uv,pos1-vec2(2.,2.),pos1+vec2(STRW(6.)+1.,STRH(1.)+1.)));\n"
" }\n"
" color = mix(color,bcolor,in_box(uv,pos2-vec2(3.,1.),pos2+vec2(STRW(width1)+2.,STRH(1.)+2.)));\n"
" float pixel = text(uv,pos1,pos2);\n"
" color = mix(color,tcolor,pixel);\n"
" color -= pixel*float(mod(c.y*sf.y,3.) < 1.)*0.5;\n"
" if (bar_mode != 0u) {\n"
"  ss = sf/2.;\n"
"  uv = c*ss;\n"
"  float width2 = (show_hour != 0u && bar_mode == 1u) ? 8. : 5.;\n"
"  vec2 pos3 = floor(vec2(ss.x/2.-STRW(width2)/2.,11.));\n"
"  float box = in_box(uv,pos3-vec2(4.,2.),pos3+vec2(STRW(width2)+3.,STRH(1.)+3.));\n"
"  color.xyz = mix(color.xyz,bcolor.xyz,box);\n"
"  color.w = color.w+(bcolor.w*box);\n"
"  pixel = text_over(uv,pos3);\n"
"  color = mix(color,tcolor,pixel);\n"
"  color -= pixel*float(mod(c.y*sf.y,2.) < 1.)*0.5;\n"
" }\n"
" return color;\n"
"}\n";