5#define CircleVertex450 (VK_SHADER_STAGE_VERTEX_BIT | (1 << 6))
6#define CircleFragment450 (VK_SHADER_STAGE_FRAGMENT_BIT | (1 << 7))
10 { VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
12 .descriptorType=VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
14 .stageFlags=VK_SHADER_STAGE_VERTEX_BIT,
15 .pImmutableSamplers=
nullptr } } },
18 { .stageFlags=VK_SHADER_STAGE_VERTEX_BIT,
23 { VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
36"#extension GL_ARB_separate_shader_objects : enable\n"
37"layout(set = 0, binding = 0) uniform Projection { mat4 projection; } proj;\n"
38"layout(push_constant) uniform ComboBuffer {\n"
44"layout(location = 0) out vec4 circleColor;\n"
45"layout(location = 1) out vec4 circleParams;\n"
47" vec2 vertices[4] = { vec2(cb.positions[0], cb.positions[1]),\n"
48" vec2(cb.positions[0], cb.positions[3]),\n"
49" vec2(cb.positions[2], cb.positions[1]),\n"
50" vec2(cb.positions[2], cb.positions[3]) };\n"
51" gl_Position = proj.projection * cb.transform * vec4(vertices[gl_VertexIndex], 0.0, 1.0);\n"
52" circleColor = cb.color;\n"
53" circleParams = cb.params;\n"
54" circleParams.x = (cb.positions[0] + cb.positions[2]) / 2.0;\n"
55" circleParams.y = (cb.positions[1] + cb.positions[3]) / 2.0;\n"
580x07230203, 0x00010300, 0x00080008, 0x00000064, 0x00000000, 0x00020011,
590x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
600x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0009000F, 0x00000000,
610x00000004, 0x6E69616D, 0x00000000, 0x00000031, 0x0000003E, 0x0000004B,
620x00000050, 0x00030003, 0x00000002, 0x000001C2, 0x00090004, 0x415F4C47,
630x735F4252, 0x72617065, 0x5F657461, 0x64616873, 0x6F5F7265, 0x63656A62,
640x00007374, 0x00040005, 0x00000004, 0x6E69616D, 0x00000000, 0x00050005,
650x0000000C, 0x74726576, 0x73656369, 0x00000000, 0x00050005, 0x0000000F,
660x626D6F43, 0x6675426F, 0x00726566, 0x00060006, 0x0000000F, 0x00000000,
670x6E617274, 0x726F6673, 0x0000006D, 0x00060006, 0x0000000F, 0x00000001,
680x69736F70, 0x6E6F6974, 0x00000073, 0x00050006, 0x0000000F, 0x00000002,
690x61726170, 0x0000736D, 0x00050006, 0x0000000F, 0x00000003, 0x6F6C6F63,
700x00000072, 0x00030005, 0x00000011, 0x00006263, 0x00060005, 0x0000002F,
710x505F6C67, 0x65567265, 0x78657472, 0x00000000, 0x00060006, 0x0000002F,
720x00000000, 0x505F6C67, 0x7469736F, 0x006E6F69, 0x00070006, 0x0000002F,
730x00000001, 0x505F6C67, 0x746E696F, 0x657A6953, 0x00000000, 0x00070006,
740x0000002F, 0x00000002, 0x435F6C67, 0x4470696C, 0x61747369, 0x0065636E,
750x00070006, 0x0000002F, 0x00000003, 0x435F6C67, 0x446C6C75, 0x61747369,
760x0065636E, 0x00030005, 0x00000031, 0x00000000, 0x00050005, 0x00000033,
770x6A6F7250, 0x69746365, 0x00006E6F, 0x00060006, 0x00000033, 0x00000000,
780x6A6F7270, 0x69746365, 0x00006E6F, 0x00040005, 0x00000035, 0x6A6F7270,
790x00000000, 0x00060005, 0x0000003E, 0x565F6C67, 0x65747265, 0x646E4978,
800x00007865, 0x00050005, 0x0000004B, 0x63726963, 0x6F43656C, 0x00726F6C,
810x00060005, 0x00000050, 0x63726963, 0x6150656C, 0x736D6172, 0x00000000,
820x00040048, 0x0000000F, 0x00000000, 0x00000005, 0x00050048, 0x0000000F,
830x00000000, 0x00000023, 0x00000000, 0x00050048, 0x0000000F, 0x00000000,
840x00000007, 0x00000010, 0x00050048, 0x0000000F, 0x00000001, 0x00000023,
850x00000040, 0x00050048, 0x0000000F, 0x00000002, 0x00000023, 0x00000050,
860x00050048, 0x0000000F, 0x00000003, 0x00000023, 0x00000060, 0x00030047,
870x0000000F, 0x00000002, 0x00050048, 0x0000002F, 0x00000000, 0x0000000B,
880x00000000, 0x00050048, 0x0000002F, 0x00000001, 0x0000000B, 0x00000001,
890x00050048, 0x0000002F, 0x00000002, 0x0000000B, 0x00000003, 0x00050048,
900x0000002F, 0x00000003, 0x0000000B, 0x00000004, 0x00030047, 0x0000002F,
910x00000002, 0x00040048, 0x00000033, 0x00000000, 0x00000005, 0x00050048,
920x00000033, 0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x00000033,
930x00000000, 0x00000007, 0x00000010, 0x00030047, 0x00000033, 0x00000002,
940x00040047, 0x00000035, 0x00000022, 0x00000000, 0x00040047, 0x00000035,
950x00000021, 0x00000000, 0x00040047, 0x0000003E, 0x0000000B, 0x0000002A,
960x00040047, 0x0000004B, 0x0000001E, 0x00000000, 0x00040047, 0x00000050,
970x0000001E, 0x00000001, 0x00020013, 0x00000002, 0x00030021, 0x00000003,
980x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007,
990x00000006, 0x00000002, 0x00040015, 0x00000008, 0x00000020, 0x00000000,
1000x0004002B, 0x00000008, 0x00000009, 0x00000004, 0x0004001C, 0x0000000A,
1010x00000007, 0x00000009, 0x00040020, 0x0000000B, 0x00000007, 0x0000000A,
1020x00040017, 0x0000000D, 0x00000006, 0x00000004, 0x00040018, 0x0000000E,
1030x0000000D, 0x00000004, 0x0006001E, 0x0000000F, 0x0000000E, 0x0000000D,
1040x0000000D, 0x0000000D, 0x00040020, 0x00000010, 0x00000009, 0x0000000F,
1050x0004003B, 0x00000010, 0x00000011, 0x00000009, 0x00040015, 0x00000012,
1060x00000020, 0x00000001, 0x0004002B, 0x00000012, 0x00000013, 0x00000001,
1070x0004002B, 0x00000008, 0x00000014, 0x00000000, 0x00040020, 0x00000015,
1080x00000009, 0x00000006, 0x0004002B, 0x00000008, 0x00000018, 0x00000001,
1090x0004002B, 0x00000008, 0x0000001E, 0x00000003, 0x0004002B, 0x00000008,
1100x00000022, 0x00000002, 0x0004001C, 0x0000002E, 0x00000006, 0x00000018,
1110x0006001E, 0x0000002F, 0x0000000D, 0x00000006, 0x0000002E, 0x0000002E,
1120x00040020, 0x00000030, 0x00000003, 0x0000002F, 0x0004003B, 0x00000030,
1130x00000031, 0x00000003, 0x0004002B, 0x00000012, 0x00000032, 0x00000000,
1140x0003001E, 0x00000033, 0x0000000E, 0x00040020, 0x00000034, 0x00000002,
1150x00000033, 0x0004003B, 0x00000034, 0x00000035, 0x00000002, 0x00040020,
1160x00000036, 0x00000002, 0x0000000E, 0x00040020, 0x00000039, 0x00000009,
1170x0000000E, 0x00040020, 0x0000003D, 0x00000001, 0x00000012, 0x0004003B,
1180x0000003D, 0x0000003E, 0x00000001, 0x00040020, 0x00000040, 0x00000007,
1190x00000007, 0x0004002B, 0x00000006, 0x00000043, 0x00000000, 0x0004002B,
1200x00000006, 0x00000044, 0x3F800000, 0x00040020, 0x00000049, 0x00000003,
1210x0000000D, 0x0004003B, 0x00000049, 0x0000004B, 0x00000003, 0x0004002B,
1220x00000012, 0x0000004C, 0x00000003, 0x00040020, 0x0000004D, 0x00000009,
1230x0000000D, 0x0004003B, 0x00000049, 0x00000050, 0x00000003, 0x0004002B,
1240x00000012, 0x00000051, 0x00000002, 0x0004002B, 0x00000006, 0x00000059,
1250x40000000, 0x00040020, 0x0000005B, 0x00000003, 0x00000006, 0x00050036,
1260x00000002, 0x00000004, 0x00000000, 0x00000003, 0x000200F8, 0x00000005,
1270x0004003B, 0x0000000B, 0x0000000C, 0x00000007, 0x00060041, 0x00000015,
1280x00000016, 0x00000011, 0x00000013, 0x00000014, 0x0004003D, 0x00000006,
1290x00000017, 0x00000016, 0x00060041, 0x00000015, 0x00000019, 0x00000011,
1300x00000013, 0x00000018, 0x0004003D, 0x00000006, 0x0000001A, 0x00000019,
1310x00050050, 0x00000007, 0x0000001B, 0x00000017, 0x0000001A, 0x00060041,
1320x00000015, 0x0000001C, 0x00000011, 0x00000013, 0x00000014, 0x0004003D,
1330x00000006, 0x0000001D, 0x0000001C, 0x00060041, 0x00000015, 0x0000001F,
1340x00000011, 0x00000013, 0x0000001E, 0x0004003D, 0x00000006, 0x00000020,
1350x0000001F, 0x00050050, 0x00000007, 0x00000021, 0x0000001D, 0x00000020,
1360x00060041, 0x00000015, 0x00000023, 0x00000011, 0x00000013, 0x00000022,
1370x0004003D, 0x00000006, 0x00000024, 0x00000023, 0x00060041, 0x00000015,
1380x00000025, 0x00000011, 0x00000013, 0x00000018, 0x0004003D, 0x00000006,
1390x00000026, 0x00000025, 0x00050050, 0x00000007, 0x00000027, 0x00000024,
1400x00000026, 0x00060041, 0x00000015, 0x00000028, 0x00000011, 0x00000013,
1410x00000022, 0x0004003D, 0x00000006, 0x00000029, 0x00000028, 0x00060041,
1420x00000015, 0x0000002A, 0x00000011, 0x00000013, 0x0000001E, 0x0004003D,
1430x00000006, 0x0000002B, 0x0000002A, 0x00050050, 0x00000007, 0x0000002C,
1440x00000029, 0x0000002B, 0x00070050, 0x0000000A, 0x0000002D, 0x0000001B,
1450x00000021, 0x00000027, 0x0000002C, 0x0003003E, 0x0000000C, 0x0000002D,
1460x00050041, 0x00000036, 0x00000037, 0x00000035, 0x00000032, 0x0004003D,
1470x0000000E, 0x00000038, 0x00000037, 0x00050041, 0x00000039, 0x0000003A,
1480x00000011, 0x00000032, 0x0004003D, 0x0000000E, 0x0000003B, 0x0000003A,
1490x00050092, 0x0000000E, 0x0000003C, 0x00000038, 0x0000003B, 0x0004003D,
1500x00000012, 0x0000003F, 0x0000003E, 0x00050041, 0x00000040, 0x00000041,
1510x0000000C, 0x0000003F, 0x0004003D, 0x00000007, 0x00000042, 0x00000041,
1520x00050051, 0x00000006, 0x00000045, 0x00000042, 0x00000000, 0x00050051,
1530x00000006, 0x00000046, 0x00000042, 0x00000001, 0x00070050, 0x0000000D,
1540x00000047, 0x00000045, 0x00000046, 0x00000043, 0x00000044, 0x00050091,
1550x0000000D, 0x00000048, 0x0000003C, 0x00000047, 0x00050041, 0x00000049,
1560x0000004A, 0x00000031, 0x00000032, 0x0003003E, 0x0000004A, 0x00000048,
1570x00050041, 0x0000004D, 0x0000004E, 0x00000011, 0x0000004C, 0x0004003D,
1580x0000000D, 0x0000004F, 0x0000004E, 0x0003003E, 0x0000004B, 0x0000004F,
1590x00050041, 0x0000004D, 0x00000052, 0x00000011, 0x00000051, 0x0004003D,
1600x0000000D, 0x00000053, 0x00000052, 0x0003003E, 0x00000050, 0x00000053,
1610x00060041, 0x00000015, 0x00000054, 0x00000011, 0x00000013, 0x00000014,
1620x0004003D, 0x00000006, 0x00000055, 0x00000054, 0x00060041, 0x00000015,
1630x00000056, 0x00000011, 0x00000013, 0x00000022, 0x0004003D, 0x00000006,
1640x00000057, 0x00000056, 0x00050081, 0x00000006, 0x00000058, 0x00000055,
1650x00000057, 0x00050088, 0x00000006, 0x0000005A, 0x00000058, 0x00000059,
1660x00050041, 0x0000005B, 0x0000005C, 0x00000050, 0x00000014, 0x0003003E,
1670x0000005C, 0x0000005A, 0x00060041, 0x00000015, 0x0000005D, 0x00000011,
1680x00000013, 0x00000018, 0x0004003D, 0x00000006, 0x0000005E, 0x0000005D,
1690x00060041, 0x00000015, 0x0000005F, 0x00000011, 0x00000013, 0x0000001E,
1700x0004003D, 0x00000006, 0x00000060, 0x0000005F, 0x00050081, 0x00000006,
1710x00000061, 0x0000005E, 0x00000060, 0x00050088, 0x00000006, 0x00000062,
1720x00000061, 0x00000059, 0x00050041, 0x0000005B, 0x00000063, 0x00000050,
1730x00000018, 0x0003003E, 0x00000063, 0x00000062, 0x000100FD, 0x00010038
179"#extension GL_ARB_separate_shader_objects : enable\n"
180"layout(location = 0) in vec4 circleColor;\n"
181"layout(location = 1) in vec4 circleParams;\n"
182"layout(location = 0) out vec4 fragColor;\n"
184" float dis = distance(circleParams.xy, gl_FragCoord.xy);\n"
185" float mult1 = smoothstep(circleParams.z + 0.5, circleParams.z - 0.5, dis);\n"
186" float mult2 = smoothstep((circleParams.z - circleParams.w) - 0.5, (circleParams.z - circleParams.w) + 0.5, dis);\n"
187" fragColor = circleColor * vec4(1.0, 1.0, 1.0, mult1 * mult2);\n"
1900x07230203, 0x00010300, 0x00080008, 0x0000003A, 0x00000000, 0x00020011,
1910x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
1920x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0009000F, 0x00000004,
1930x00000004, 0x6E69616D, 0x00000000, 0x0000000B, 0x0000000F, 0x00000031,
1940x00000032, 0x00030010, 0x00000004, 0x00000007, 0x00030003, 0x00000002,
1950x000001C2, 0x00090004, 0x415F4C47, 0x735F4252, 0x72617065, 0x5F657461,
1960x64616873, 0x6F5F7265, 0x63656A62, 0x00007374, 0x00040005, 0x00000004,
1970x6E69616D, 0x00000000, 0x00030005, 0x00000008, 0x00736964, 0x00060005,
1980x0000000B, 0x63726963, 0x6150656C, 0x736D6172, 0x00000000, 0x00060005,
1990x0000000F, 0x465F6C67, 0x43676172, 0x64726F6F, 0x00000000, 0x00040005,
2000x00000013, 0x746C756D, 0x00000031, 0x00040005, 0x00000020, 0x746C756D,
2010x00000032, 0x00050005, 0x00000031, 0x67617266, 0x6F6C6F43, 0x00000072,
2020x00050005, 0x00000032, 0x63726963, 0x6F43656C, 0x00726F6C, 0x00040047,
2030x0000000B, 0x0000001E, 0x00000001, 0x00040047, 0x0000000F, 0x0000000B,
2040x0000000F, 0x00040047, 0x00000031, 0x0000001E, 0x00000000, 0x00040047,
2050x00000032, 0x0000001E, 0x00000000, 0x00020013, 0x00000002, 0x00030021,
2060x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040020,
2070x00000007, 0x00000007, 0x00000006, 0x00040017, 0x00000009, 0x00000006,
2080x00000004, 0x00040020, 0x0000000A, 0x00000001, 0x00000009, 0x0004003B,
2090x0000000A, 0x0000000B, 0x00000001, 0x00040017, 0x0000000C, 0x00000006,
2100x00000002, 0x0004003B, 0x0000000A, 0x0000000F, 0x00000001, 0x00040015,
2110x00000014, 0x00000020, 0x00000000, 0x0004002B, 0x00000014, 0x00000015,
2120x00000002, 0x00040020, 0x00000016, 0x00000001, 0x00000006, 0x0004002B,
2130x00000006, 0x00000019, 0x3F000000, 0x0004002B, 0x00000014, 0x00000023,
2140x00000003, 0x00040020, 0x00000030, 0x00000003, 0x00000009, 0x0004003B,
2150x00000030, 0x00000031, 0x00000003, 0x0004003B, 0x0000000A, 0x00000032,
2160x00000001, 0x0004002B, 0x00000006, 0x00000034, 0x3F800000, 0x00050036,
2170x00000002, 0x00000004, 0x00000000, 0x00000003, 0x000200F8, 0x00000005,
2180x0004003B, 0x00000007, 0x00000008, 0x00000007, 0x0004003B, 0x00000007,
2190x00000013, 0x00000007, 0x0004003B, 0x00000007, 0x00000020, 0x00000007,
2200x0004003D, 0x00000009, 0x0000000D, 0x0000000B, 0x0007004F, 0x0000000C,
2210x0000000E, 0x0000000D, 0x0000000D, 0x00000000, 0x00000001, 0x0004003D,
2220x00000009, 0x00000010, 0x0000000F, 0x0007004F, 0x0000000C, 0x00000011,
2230x00000010, 0x00000010, 0x00000000, 0x00000001, 0x0007000C, 0x00000006,
2240x00000012, 0x00000001, 0x00000043, 0x0000000E, 0x00000011, 0x0003003E,
2250x00000008, 0x00000012, 0x00050041, 0x00000016, 0x00000017, 0x0000000B,
2260x00000015, 0x0004003D, 0x00000006, 0x00000018, 0x00000017, 0x00050081,
2270x00000006, 0x0000001A, 0x00000018, 0x00000019, 0x00050041, 0x00000016,
2280x0000001B, 0x0000000B, 0x00000015, 0x0004003D, 0x00000006, 0x0000001C,
2290x0000001B, 0x00050083, 0x00000006, 0x0000001D, 0x0000001C, 0x00000019,
2300x0004003D, 0x00000006, 0x0000001E, 0x00000008, 0x0008000C, 0x00000006,
2310x0000001F, 0x00000001, 0x00000031, 0x0000001A, 0x0000001D, 0x0000001E,
2320x0003003E, 0x00000013, 0x0000001F, 0x00050041, 0x00000016, 0x00000021,
2330x0000000B, 0x00000015, 0x0004003D, 0x00000006, 0x00000022, 0x00000021,
2340x00050041, 0x00000016, 0x00000024, 0x0000000B, 0x00000023, 0x0004003D,
2350x00000006, 0x00000025, 0x00000024, 0x00050083, 0x00000006, 0x00000026,
2360x00000022, 0x00000025, 0x00050083, 0x00000006, 0x00000027, 0x00000026,
2370x00000019, 0x00050041, 0x00000016, 0x00000028, 0x0000000B, 0x00000015,
2380x0004003D, 0x00000006, 0x00000029, 0x00000028, 0x00050041, 0x00000016,
2390x0000002A, 0x0000000B, 0x00000023, 0x0004003D, 0x00000006, 0x0000002B,
2400x0000002A, 0x00050083, 0x00000006, 0x0000002C, 0x00000029, 0x0000002B,
2410x00050081, 0x00000006, 0x0000002D, 0x0000002C, 0x00000019, 0x0004003D,
2420x00000006, 0x0000002E, 0x00000008, 0x0008000C, 0x00000006, 0x0000002F,
2430x00000001, 0x00000031, 0x00000027, 0x0000002D, 0x0000002E, 0x0003003E,
2440x00000020, 0x0000002F, 0x0004003D, 0x00000009, 0x00000033, 0x00000032,
2450x0004003D, 0x00000006, 0x00000035, 0x00000013, 0x0004003D, 0x00000006,
2460x00000036, 0x00000020, 0x00050085, 0x00000006, 0x00000037, 0x00000035,
2470x00000036, 0x00070050, 0x00000009, 0x00000038, 0x00000034, 0x00000034,
2480x00000034, 0x00000037, 0x00050085, 0x00000009, 0x00000039, 0x00000033,
2490x00000038, 0x0003003E, 0x00000031, 0x00000039, 0x000100FD, 0x00010038
279 m_vulkanFuncs->vkCmdBindDescriptorSets(currentcmdbuf, VK_PIPELINE_BIND_POINT_GRAPHICS,
282 auto range =
static_cast<float>(
m_range);
286 float incr = 0.8F / count;
289 for (
int i = 0; i < count; i++)
299 m_vulkanFuncs->vkCmdPushConstants(currentcmdbuf, layout, VK_SHADER_STAGE_VERTEX_BIT,
332 QMatrix4x4 transform;
VkPipelineLayout GetPipelineLayout(void) const
~MythVisualCirclesVulkan() override
MythRenderVulkan * InitialiseVulkan(QRect Area) override
void TearDownVulkan() override
void DrawPriv(MythPainter *, QPaintDevice *) override
MythVisualCirclesVulkan(AudioPlayer *Audio, MythRenderVulkan *Render)
CirclesBuffer m_pushBuffer
virtual void TearDownVulkan()
VkDescriptorPool m_descriptorPool
virtual MythRenderVulkan * InitialiseVulkan(QRect)
MythUniformBufferVulkan * m_projectionUniform
VkDescriptorSet m_projectionDescriptor
MythShaderVulkan * m_vulkanShader
QVulkanDeviceFunctions * m_vulkanFuncs
MythRenderVulkan * m_vulkanRender
MythWindowVulkan * m_vulkanWindow
bool IsValidVulkan() const
QVector< double > m_magnitudes
std::map< int, std::pair< QString, std::vector< uint32_t > > > MythShaderMap
std::map< int, MythBindingDesc > MythBindingMap
#define CircleFragment450
static const MythShaderMap k450CircleShaders
static const MythBindingMap k450CircleBindings