MythTV  master
mythshadersvulkan.h
Go to the documentation of this file.
1 #ifndef MYTHSHADERSVULKAN_H
2 #define MYTHSHADERSVULKAN_H
3 
4 // Qt
5 #include <QString>
6 
7 // MythTV
10 
11 // GLSL 4.50 shaders for Vulkan.
12 // N.B. These cannot, as written, be used for OpenGL as they use descriptor sets
13 // and push constants - which are Vulkan only features.
14 
15 // Normal/release builds will always use SPIR-V bytecode for shaders.
16 // To update shaders you must:
17 // - install libglslang (not usually available as a package)
18 // - edit GLSL sources as needed
19 // - set MYTHTV_GLSLANG environment variable
20 // - run mythfrontend
21 // - cut and paste updated SPIR-V from the logs (if compilation worked!)
22 
23 #define DefaultVertex450 (VK_SHADER_STAGE_VERTEX_BIT | (1 << 6))
24 #define DefaultFragment450 (VK_SHADER_STAGE_FRAGMENT_BIT | (1 << 7))
25 
28  { VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
29  { { 0, { 0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1, VK_SHADER_STAGE_VERTEX_BIT, nullptr } } },
30  { },
31  { },
32  { VK_SHADER_STAGE_VERTEX_BIT, 0, MYTH_PUSHBUFFER_SIZE } }
33  },
35  { VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
36  { { 1, { 0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr } } },
37  { },
38  { },
39  { } }
40  }
41 };
42 
44 {
46 {
47 "#version 450\n"
48 "#extension GL_ARB_separate_shader_objects : enable\n"
49 "layout(set = 0, binding = 0) uniform Projection { mat4 projection; } proj;\n"
50 "layout(push_constant) uniform ComboBuffer {\n"
51 " mat4 transform;\n"
52 " vec4 positions;\n"
53 " vec4 texcoords;\n"
54 " vec4 color;\n"
55 "} cb;\n"
56 "layout(location = 0) out vec2 fragCoord;\n"
57 "layout(location = 1) out vec4 fragColor;\n"
58 "void main() {\n"
59 " vec2 vertices[4] = { vec2(cb.positions[0], cb.positions[1]),\n"
60 " vec2(cb.positions[0], cb.positions[3]),\n"
61 " vec2(cb.positions[2], cb.positions[1]),\n"
62 " vec2(cb.positions[2], cb.positions[3]) };\n"
63 " vec2 texcoord[4] = { vec2(cb.texcoords[0], cb.texcoords[1]),\n"
64 " vec2(cb.texcoords[0], cb.texcoords[3]),\n"
65 " vec2(cb.texcoords[2], cb.texcoords[1]),\n"
66 " vec2(cb.texcoords[2], cb.texcoords[3]) };\n"
67 " gl_Position = proj.projection * cb.transform * vec4(vertices[gl_VertexIndex], 0.0, 1.0);\n"
68 " fragCoord = texcoord[gl_VertexIndex];\n"
69 " fragColor = cb.color;\n"
70 "}\n",
71 {
72 0x07230203, 0x00010300, 0x00080008, 0x0000006C,
73 0x00000000, 0x00020011, 0x00000001, 0x0006000B,
74 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
75 0x00000000, 0x0003000E, 0x00000000, 0x00000001,
76 0x0009000F, 0x00000000, 0x00000004, 0x6E69616D,
77 0x00000000, 0x00000048, 0x00000055, 0x00000063,
78 0x00000067, 0x00030003, 0x00000002, 0x000001C2,
79 0x00090004, 0x415F4C47, 0x735F4252, 0x72617065,
80 0x5F657461, 0x64616873, 0x6F5F7265, 0x63656A62,
81 0x00007374, 0x00040005, 0x00000004, 0x6E69616D,
82 0x00000000, 0x00050005, 0x0000000C, 0x74726576,
83 0x73656369, 0x00000000, 0x00050005, 0x0000000F,
84 0x626D6F43, 0x6675426F, 0x00726566, 0x00060006,
85 0x0000000F, 0x00000000, 0x6E617274, 0x726F6673,
86 0x0000006D, 0x00060006, 0x0000000F, 0x00000001,
87 0x69736F70, 0x6E6F6974, 0x00000073, 0x00060006,
88 0x0000000F, 0x00000002, 0x63786574, 0x64726F6F,
89 0x00000073, 0x00050006, 0x0000000F, 0x00000003,
90 0x6F6C6F63, 0x00000072, 0x00030005, 0x00000011,
91 0x00006263, 0x00050005, 0x0000002E, 0x63786574,
92 0x64726F6F, 0x00000000, 0x00060005, 0x00000046,
93 0x505F6C67, 0x65567265, 0x78657472, 0x00000000,
94 0x00060006, 0x00000046, 0x00000000, 0x505F6C67,
95 0x7469736F, 0x006E6F69, 0x00070006, 0x00000046,
96 0x00000001, 0x505F6C67, 0x746E696F, 0x657A6953,
97 0x00000000, 0x00070006, 0x00000046, 0x00000002,
98 0x435F6C67, 0x4470696C, 0x61747369, 0x0065636E,
99 0x00070006, 0x00000046, 0x00000003, 0x435F6C67,
100 0x446C6C75, 0x61747369, 0x0065636E, 0x00030005,
101 0x00000048, 0x00000000, 0x00050005, 0x0000004A,
102 0x6A6F7250, 0x69746365, 0x00006E6F, 0x00060006,
103 0x0000004A, 0x00000000, 0x6A6F7270, 0x69746365,
104 0x00006E6F, 0x00040005, 0x0000004C, 0x6A6F7270,
105 0x00000000, 0x00060005, 0x00000055, 0x565F6C67,
106 0x65747265, 0x646E4978, 0x00007865, 0x00050005,
107 0x00000063, 0x67617266, 0x726F6F43, 0x00000064,
108 0x00050005, 0x00000067, 0x67617266, 0x6F6C6F43,
109 0x00000072, 0x00040048, 0x0000000F, 0x00000000,
110 0x00000005, 0x00050048, 0x0000000F, 0x00000000,
111 0x00000023, 0x00000000, 0x00050048, 0x0000000F,
112 0x00000000, 0x00000007, 0x00000010, 0x00050048,
113 0x0000000F, 0x00000001, 0x00000023, 0x00000040,
114 0x00050048, 0x0000000F, 0x00000002, 0x00000023,
115 0x00000050, 0x00050048, 0x0000000F, 0x00000003,
116 0x00000023, 0x00000060, 0x00030047, 0x0000000F,
117 0x00000002, 0x00050048, 0x00000046, 0x00000000,
118 0x0000000B, 0x00000000, 0x00050048, 0x00000046,
119 0x00000001, 0x0000000B, 0x00000001, 0x00050048,
120 0x00000046, 0x00000002, 0x0000000B, 0x00000003,
121 0x00050048, 0x00000046, 0x00000003, 0x0000000B,
122 0x00000004, 0x00030047, 0x00000046, 0x00000002,
123 0x00040048, 0x0000004A, 0x00000000, 0x00000005,
124 0x00050048, 0x0000004A, 0x00000000, 0x00000023,
125 0x00000000, 0x00050048, 0x0000004A, 0x00000000,
126 0x00000007, 0x00000010, 0x00030047, 0x0000004A,
127 0x00000002, 0x00040047, 0x0000004C, 0x00000022,
128 0x00000000, 0x00040047, 0x0000004C, 0x00000021,
129 0x00000000, 0x00040047, 0x00000055, 0x0000000B,
130 0x0000002A, 0x00040047, 0x00000063, 0x0000001E,
131 0x00000000, 0x00040047, 0x00000067, 0x0000001E,
132 0x00000001, 0x00020013, 0x00000002, 0x00030021,
133 0x00000003, 0x00000002, 0x00030016, 0x00000006,
134 0x00000020, 0x00040017, 0x00000007, 0x00000006,
135 0x00000002, 0x00040015, 0x00000008, 0x00000020,
136 0x00000000, 0x0004002B, 0x00000008, 0x00000009,
137 0x00000004, 0x0004001C, 0x0000000A, 0x00000007,
138 0x00000009, 0x00040020, 0x0000000B, 0x00000007,
139 0x0000000A, 0x00040017, 0x0000000D, 0x00000006,
140 0x00000004, 0x00040018, 0x0000000E, 0x0000000D,
141 0x00000004, 0x0006001E, 0x0000000F, 0x0000000E,
142 0x0000000D, 0x0000000D, 0x0000000D, 0x00040020,
143 0x00000010, 0x00000009, 0x0000000F, 0x0004003B,
144 0x00000010, 0x00000011, 0x00000009, 0x00040015,
145 0x00000012, 0x00000020, 0x00000001, 0x0004002B,
146 0x00000012, 0x00000013, 0x00000001, 0x0004002B,
147 0x00000008, 0x00000014, 0x00000000, 0x00040020,
148 0x00000015, 0x00000009, 0x00000006, 0x0004002B,
149 0x00000008, 0x00000018, 0x00000001, 0x0004002B,
150 0x00000008, 0x0000001E, 0x00000003, 0x0004002B,
151 0x00000008, 0x00000022, 0x00000002, 0x0004002B,
152 0x00000012, 0x0000002F, 0x00000002, 0x0004001C,
153 0x00000045, 0x00000006, 0x00000018, 0x0006001E,
154 0x00000046, 0x0000000D, 0x00000006, 0x00000045,
155 0x00000045, 0x00040020, 0x00000047, 0x00000003,
156 0x00000046, 0x0004003B, 0x00000047, 0x00000048,
157 0x00000003, 0x0004002B, 0x00000012, 0x00000049,
158 0x00000000, 0x0003001E, 0x0000004A, 0x0000000E,
159 0x00040020, 0x0000004B, 0x00000002, 0x0000004A,
160 0x0004003B, 0x0000004B, 0x0000004C, 0x00000002,
161 0x00040020, 0x0000004D, 0x00000002, 0x0000000E,
162 0x00040020, 0x00000050, 0x00000009, 0x0000000E,
163 0x00040020, 0x00000054, 0x00000001, 0x00000012,
164 0x0004003B, 0x00000054, 0x00000055, 0x00000001,
165 0x00040020, 0x00000057, 0x00000007, 0x00000007,
166 0x0004002B, 0x00000006, 0x0000005A, 0x00000000,
167 0x0004002B, 0x00000006, 0x0000005B, 0x3F800000,
168 0x00040020, 0x00000060, 0x00000003, 0x0000000D,
169 0x00040020, 0x00000062, 0x00000003, 0x00000007,
170 0x0004003B, 0x00000062, 0x00000063, 0x00000003,
171 0x0004003B, 0x00000060, 0x00000067, 0x00000003,
172 0x0004002B, 0x00000012, 0x00000068, 0x00000003,
173 0x00040020, 0x00000069, 0x00000009, 0x0000000D,
174 0x00050036, 0x00000002, 0x00000004, 0x00000000,
175 0x00000003, 0x000200F8, 0x00000005, 0x0004003B,
176 0x0000000B, 0x0000000C, 0x00000007, 0x0004003B,
177 0x0000000B, 0x0000002E, 0x00000007, 0x00060041,
178 0x00000015, 0x00000016, 0x00000011, 0x00000013,
179 0x00000014, 0x0004003D, 0x00000006, 0x00000017,
180 0x00000016, 0x00060041, 0x00000015, 0x00000019,
181 0x00000011, 0x00000013, 0x00000018, 0x0004003D,
182 0x00000006, 0x0000001A, 0x00000019, 0x00050050,
183 0x00000007, 0x0000001B, 0x00000017, 0x0000001A,
184 0x00060041, 0x00000015, 0x0000001C, 0x00000011,
185 0x00000013, 0x00000014, 0x0004003D, 0x00000006,
186 0x0000001D, 0x0000001C, 0x00060041, 0x00000015,
187 0x0000001F, 0x00000011, 0x00000013, 0x0000001E,
188 0x0004003D, 0x00000006, 0x00000020, 0x0000001F,
189 0x00050050, 0x00000007, 0x00000021, 0x0000001D,
190 0x00000020, 0x00060041, 0x00000015, 0x00000023,
191 0x00000011, 0x00000013, 0x00000022, 0x0004003D,
192 0x00000006, 0x00000024, 0x00000023, 0x00060041,
193 0x00000015, 0x00000025, 0x00000011, 0x00000013,
194 0x00000018, 0x0004003D, 0x00000006, 0x00000026,
195 0x00000025, 0x00050050, 0x00000007, 0x00000027,
196 0x00000024, 0x00000026, 0x00060041, 0x00000015,
197 0x00000028, 0x00000011, 0x00000013, 0x00000022,
198 0x0004003D, 0x00000006, 0x00000029, 0x00000028,
199 0x00060041, 0x00000015, 0x0000002A, 0x00000011,
200 0x00000013, 0x0000001E, 0x0004003D, 0x00000006,
201 0x0000002B, 0x0000002A, 0x00050050, 0x00000007,
202 0x0000002C, 0x00000029, 0x0000002B, 0x00070050,
203 0x0000000A, 0x0000002D, 0x0000001B, 0x00000021,
204 0x00000027, 0x0000002C, 0x0003003E, 0x0000000C,
205 0x0000002D, 0x00060041, 0x00000015, 0x00000030,
206 0x00000011, 0x0000002F, 0x00000014, 0x0004003D,
207 0x00000006, 0x00000031, 0x00000030, 0x00060041,
208 0x00000015, 0x00000032, 0x00000011, 0x0000002F,
209 0x00000018, 0x0004003D, 0x00000006, 0x00000033,
210 0x00000032, 0x00050050, 0x00000007, 0x00000034,
211 0x00000031, 0x00000033, 0x00060041, 0x00000015,
212 0x00000035, 0x00000011, 0x0000002F, 0x00000014,
213 0x0004003D, 0x00000006, 0x00000036, 0x00000035,
214 0x00060041, 0x00000015, 0x00000037, 0x00000011,
215 0x0000002F, 0x0000001E, 0x0004003D, 0x00000006,
216 0x00000038, 0x00000037, 0x00050050, 0x00000007,
217 0x00000039, 0x00000036, 0x00000038, 0x00060041,
218 0x00000015, 0x0000003A, 0x00000011, 0x0000002F,
219 0x00000022, 0x0004003D, 0x00000006, 0x0000003B,
220 0x0000003A, 0x00060041, 0x00000015, 0x0000003C,
221 0x00000011, 0x0000002F, 0x00000018, 0x0004003D,
222 0x00000006, 0x0000003D, 0x0000003C, 0x00050050,
223 0x00000007, 0x0000003E, 0x0000003B, 0x0000003D,
224 0x00060041, 0x00000015, 0x0000003F, 0x00000011,
225 0x0000002F, 0x00000022, 0x0004003D, 0x00000006,
226 0x00000040, 0x0000003F, 0x00060041, 0x00000015,
227 0x00000041, 0x00000011, 0x0000002F, 0x0000001E,
228 0x0004003D, 0x00000006, 0x00000042, 0x00000041,
229 0x00050050, 0x00000007, 0x00000043, 0x00000040,
230 0x00000042, 0x00070050, 0x0000000A, 0x00000044,
231 0x00000034, 0x00000039, 0x0000003E, 0x00000043,
232 0x0003003E, 0x0000002E, 0x00000044, 0x00050041,
233 0x0000004D, 0x0000004E, 0x0000004C, 0x00000049,
234 0x0004003D, 0x0000000E, 0x0000004F, 0x0000004E,
235 0x00050041, 0x00000050, 0x00000051, 0x00000011,
236 0x00000049, 0x0004003D, 0x0000000E, 0x00000052,
237 0x00000051, 0x00050092, 0x0000000E, 0x00000053,
238 0x0000004F, 0x00000052, 0x0004003D, 0x00000012,
239 0x00000056, 0x00000055, 0x00050041, 0x00000057,
240 0x00000058, 0x0000000C, 0x00000056, 0x0004003D,
241 0x00000007, 0x00000059, 0x00000058, 0x00050051,
242 0x00000006, 0x0000005C, 0x00000059, 0x00000000,
243 0x00050051, 0x00000006, 0x0000005D, 0x00000059,
244 0x00000001, 0x00070050, 0x0000000D, 0x0000005E,
245 0x0000005C, 0x0000005D, 0x0000005A, 0x0000005B,
246 0x00050091, 0x0000000D, 0x0000005F, 0x00000053,
247 0x0000005E, 0x00050041, 0x00000060, 0x00000061,
248 0x00000048, 0x00000049, 0x0003003E, 0x00000061,
249 0x0000005F, 0x0004003D, 0x00000012, 0x00000064,
250 0x00000055, 0x00050041, 0x00000057, 0x00000065,
251 0x0000002E, 0x00000064, 0x0004003D, 0x00000007,
252 0x00000066, 0x00000065, 0x0003003E, 0x00000063,
253 0x00000066, 0x00050041, 0x00000069, 0x0000006A,
254 0x00000011, 0x00000068, 0x0004003D, 0x0000000D,
255 0x0000006B, 0x0000006A, 0x0003003E, 0x00000067,
256 0x0000006B, 0x000100FD, 0x00010038
257 } } },
258 {
260 {
261 "#version 450\n"
262 "#extension GL_ARB_separate_shader_objects : enable\n"
263 "layout(set = 1, binding = 0) uniform sampler2D texSampler;\n"
264 "layout(location = 0) in vec2 fragCoord;\n"
265 "layout(location = 1) in vec4 texColor;\n"
266 "layout(location = 0) out vec4 fragColor;\n"
267 "void main() {\n"
268 " fragColor = texture(texSampler, fragCoord) * texColor;\n"
269 "}\n",
270 {
271 0x07230203, 0x00010300, 0x00080008, 0x00000018,
272 0x00000000, 0x00020011, 0x00000001, 0x0006000B,
273 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
274 0x00000000, 0x0003000E, 0x00000000, 0x00000001,
275 0x0008000F, 0x00000004, 0x00000004, 0x6E69616D,
276 0x00000000, 0x00000009, 0x00000011, 0x00000015,
277 0x00030010, 0x00000004, 0x00000007, 0x00030003,
278 0x00000002, 0x000001C2, 0x00090004, 0x415F4C47,
279 0x735F4252, 0x72617065, 0x5F657461, 0x64616873,
280 0x6F5F7265, 0x63656A62, 0x00007374, 0x00040005,
281 0x00000004, 0x6E69616D, 0x00000000, 0x00050005,
282 0x00000009, 0x67617266, 0x6F6C6F43, 0x00000072,
283 0x00050005, 0x0000000D, 0x53786574, 0x6C706D61,
284 0x00007265, 0x00050005, 0x00000011, 0x67617266,
285 0x726F6F43, 0x00000064, 0x00050005, 0x00000015,
286 0x43786574, 0x726F6C6F, 0x00000000, 0x00040047,
287 0x00000009, 0x0000001E, 0x00000000, 0x00040047,
288 0x0000000D, 0x00000022, 0x00000001, 0x00040047,
289 0x0000000D, 0x00000021, 0x00000000, 0x00040047,
290 0x00000011, 0x0000001E, 0x00000000, 0x00040047,
291 0x00000015, 0x0000001E, 0x00000001, 0x00020013,
292 0x00000002, 0x00030021, 0x00000003, 0x00000002,
293 0x00030016, 0x00000006, 0x00000020, 0x00040017,
294 0x00000007, 0x00000006, 0x00000004, 0x00040020,
295 0x00000008, 0x00000003, 0x00000007, 0x0004003B,
296 0x00000008, 0x00000009, 0x00000003, 0x00090019,
297 0x0000000A, 0x00000006, 0x00000001, 0x00000000,
298 0x00000000, 0x00000000, 0x00000001, 0x00000000,
299 0x0003001B, 0x0000000B, 0x0000000A, 0x00040020,
300 0x0000000C, 0x00000000, 0x0000000B, 0x0004003B,
301 0x0000000C, 0x0000000D, 0x00000000, 0x00040017,
302 0x0000000F, 0x00000006, 0x00000002, 0x00040020,
303 0x00000010, 0x00000001, 0x0000000F, 0x0004003B,
304 0x00000010, 0x00000011, 0x00000001, 0x00040020,
305 0x00000014, 0x00000001, 0x00000007, 0x0004003B,
306 0x00000014, 0x00000015, 0x00000001, 0x00050036,
307 0x00000002, 0x00000004, 0x00000000, 0x00000003,
308 0x000200F8, 0x00000005, 0x0004003D, 0x0000000B,
309 0x0000000E, 0x0000000D, 0x0004003D, 0x0000000F,
310 0x00000012, 0x00000011, 0x00050057, 0x00000007,
311 0x00000013, 0x0000000E, 0x00000012, 0x0004003D,
312 0x00000007, 0x00000016, 0x00000015, 0x00050085,
313 0x00000007, 0x00000017, 0x00000013, 0x00000016,
314 0x0003003E, 0x00000009, 0x00000017, 0x000100FD,
315 0x00010038
316 } } }
317 };
318 
319 #endif
DefaultVertex450
#define DefaultVertex450
Definition: mythshadersvulkan.h:23
k450DefaultShaders
static const MythShaderMap k450DefaultShaders
Definition: mythshadersvulkan.h:43
mythcombobuffervulkan.h
mythshadervulkan.h
MythBindingMap
std::map< int, MythBindingDesc > MythBindingMap
Definition: mythshadervulkan.h:18
MYTH_PUSHBUFFER_SIZE
#define MYTH_PUSHBUFFER_SIZE
Definition: mythcombobuffervulkan.h:24
DefaultFragment450
#define DefaultFragment450
Definition: mythshadersvulkan.h:24
MythShaderMap
std::map< int, std::pair< QString, std::vector< uint32_t > >> MythShaderMap
Definition: mythshadervulkan.h:7
k450ShaderBindings
static const MythBindingMap k450ShaderBindings
Definition: mythshadersvulkan.h:26