MythTV master
mythrenderopenglshaders.h
Go to the documentation of this file.
1#ifndef MYTHRENDER_OPENGL_SHADERS_H
2#define MYTHRENDER_OPENGL_SHADERS_H
3
4#include <QString>
5
6static const QString kDefaultVertexShader =
7"attribute vec2 a_position;\n"
8"attribute vec4 a_color;\n"
9"attribute vec2 a_texcoord0;\n"
10"varying vec4 v_color;\n"
11"varying vec2 v_texcoord0;\n"
12"uniform mat4 u_projection;\n"
13"uniform mat4 u_transform;\n"
14"void main() {\n"
15" gl_Position = u_projection * u_transform * vec4(a_position, 0.0, 1.0);\n"
16" v_texcoord0 = a_texcoord0;\n"
17" v_color = a_color;\n"
18"}\n";
19
20static const QString kDefaultFragmentShader =
21"uniform sampler2D s_texture0;\n"
22"varying highp vec4 v_color;\n"
23"varying highp vec2 v_texcoord0;\n"
24"void main(void)\n"
25"{\n"
26" gl_FragColor = texture2D(s_texture0, v_texcoord0) * v_color;\n"
27"}\n";
28
29static const QString kDefaultFragmentShaderLimited =
30"uniform sampler2D s_texture0;\n"
31"varying highp vec4 v_color;\n"
32"varying highp vec2 v_texcoord0;\n"
33"void main(void)\n"
34"{\n"
35" gl_FragColor = (texture2D(s_texture0, v_texcoord0) * v_color * vec4(0.85882, 0.85882, 0.85882, 1.0)) + vec4(0.06274, 0.06274, 0.06274, 0.0);\n"
36"}\n";
37
38static const QString kSimpleVertexShader =
39"attribute vec2 a_position;\n"
40"attribute vec4 a_color;\n"
41"varying vec4 v_color;\n"
42"uniform mat4 u_projection;\n"
43"uniform mat4 u_transform;\n"
44"void main() {\n"
45" gl_Position = u_projection * u_transform * vec4(a_position, 0.0, 1.0);\n"
46" v_color = a_color;\n"
47"}\n";
48
49static const QString kSimpleFragmentShader =
50"varying highp vec4 v_color;\n"
51"void main(void)\n"
52"{\n"
53" gl_FragColor = v_color;\n"
54"}\n";
55
56static const QString kDrawVertexShader =
57"attribute vec2 a_position;\n"
58"attribute vec4 a_color;\n"
59"varying vec4 v_color;\n"
60"varying vec2 v_position;\n"
61"uniform mat4 u_projection;\n"
62"uniform mat4 u_transform;\n"
63"void main() {\n"
64" gl_Position = u_projection * u_transform * vec4(a_position, 0.0, 1.0);\n"
65" v_color = a_color;\n"
66" v_position = a_position;\n"
67"}\n";
68
69static const QString kSDF =
70"highp float SignedDistance(highp vec2 p, highp vec2 b, highp float r)\n"
71"{\n"
72" return length(max(abs(p) - b + r, 0.0)) - r;\n"
73"}\n";
74
75static const QString kRoundedRectShader =
76"varying highp vec4 v_color;\n"
77"varying highp vec2 v_position;\n"
78"uniform highp mat4 u_parameters;\n"
79+ kSDF +
80"void main(void)\n"
81"{\n"
82" highp float dist = SignedDistance(v_position - u_parameters[0].xy,\n"
83" u_parameters[1].xy, u_parameters[0].z);\n"
84" gl_FragColor = vec4(v_color.rgb, v_color.a * smoothstep(-1.0, 0.0, dist * -1.0));\n"
85"}\n";
86
87static const QString kRoundedEdgeShader =
88"varying highp vec4 v_color;\n"
89"varying highp vec2 v_position;\n"
90"uniform highp mat4 u_parameters;\n"
91+ kSDF +
92"void main(void)\n"
93"{\n"
94" highp float outer = SignedDistance(v_position - u_parameters[0].xy,\n"
95" u_parameters[1].xy, u_parameters[0].z);\n"
96" highp float inner = SignedDistance(v_position - u_parameters[0].xy,\n"
97" u_parameters[1].zw, u_parameters[0].w);\n"
98" highp float both = smoothstep(-1.0, 0.0, outer * -1.0) * smoothstep(-1.0, 0.0, inner);\n"
99" gl_FragColor = vec4(v_color.rgb, v_color.a * both);\n"
100"}\n";
101#endif
static const QString kRoundedEdgeShader
static const QString kDefaultVertexShader
static const QString kRoundedRectShader
static const QString kDrawVertexShader
static const QString kDefaultFragmentShaderLimited
static const QString kSDF
static const QString kSimpleVertexShader
static const QString kDefaultFragmentShader
static const QString kSimpleFragmentShader