• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// GENERATED FILE - DO NOT EDIT.
2// Generated by gen_vk_internal_shaders.py.
3//
4// Copyright 2018 The ANGLE Project Authors. All rights reserved.
5// Use of this source code is governed by a BSD-style license that can be
6// found in the LICENSE file.
7//
8// shaders/gen/EtcToBc.comp.00000001.inc:
9//   Pre-generated shader for the ANGLE Vulkan back-end.
10
11#pragma once
12constexpr uint8_t kEtcToBc_comp_00000001[] = {
13    0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x6d,0x59,0x69,0x90,0x55,0xd5,
14    0x11,0xbe,0xa7,0xcf,0x61,0x06,0x90,0xb8,0x1b,0xd7,0x88,0x8a,0x55,0x56,0x14,0x70,
15    0x0a,0x11,0x06,0x18,0xd4,0x8c,0xcb,0x58,0x81,0x52,0xc3,0xb8,0x11,0x17,0x16,0x67,
16    0x52,0x6a,0x4a,0x4c,0x04,0x05,0x65,0x15,0x05,0x91,0x45,0x88,0x18,0x93,0xa0,0xfe,
17    0x88,0x29,0x51,0x5c,0x71,0xc1,0xad,0x34,0x61,0x1d,0x04,0x37,0x12,0x31,0x8e,0x80,
18    0x14,0xd1,0x10,0xa3,0x65,0x2c,0x0b,0x63,0x89,0x46,0x9d,0x9c,0x7e,0xdf,0xd7,0xbc,
19    0x7e,0xcf,0x79,0x55,0xb7,0xee,0xed,0xaf,0x97,0xd3,0xa7,0x4f,0x9f,0xee,0x73,0xef,
20    0x8b,0xd2,0xab,0xb6,0x88,0xa1,0xe8,0x5e,0x74,0x2d,0xd6,0xa7,0xa2,0xf4,0xdb,0xaf,
21    0x90,0x22,0xf0,0xde,0x97,0xf7,0xa1,0xbc,0x9f,0x9e,0xef,0x7b,0x15,0x35,0x25,0x7e,
22    0xd3,0xf0,0xe6,0xe1,0x7d,0xc7,0x4f,0x68,0xe9,0xdb,0xff,0xe4,0x3a,0xd5,0xdb,0xbb,
23    0x88,0x25,0x7d,0xe5,0xed,0x53,0xd4,0x16,0x5d,0xf2,0x5d,0x4d,0x5e,0x33,0xe6,0xaa,
24    0x71,0x8a,0xbf,0x9d,0xaf,0x6d,0xf9,0xda,0x37,0xeb,0xa7,0x92,0xbd,0xa2,0x38,0x8d,
25    0xf2,0x7a,0x9d,0x9d,0x35,0x4e,0x86,0x0b,0x45,0x2f,0xde,0x0d,0x0b,0xc4,0x92,0xc3,
26    0x84,0x58,0x57,0x87,0x45,0x62,0x3d,0x1c,0x96,0x88,0xed,0xeb,0xb0,0x2e,0xc4,0x0e,
27    0x74,0x58,0x0d,0xb1,0x43,0x1c,0x56,0x4b,0xec,0x08,0x9d,0x6f,0xb6,0x6e,0xe3,0x36,
28    0x65,0xab,0x6f,0x97,0x62,0x51,0x14,0x87,0x91,0xde,0x46,0xfa,0x70,0xd2,0x2f,0x64,
29    0xa7,0x8f,0xe1,0x3c,0x8c,0x3e,0xda,0xd1,0x7b,0x4b,0x25,0x5f,0xe9,0xa3,0x39,0x57,
30    0x1d,0x4b,0xe9,0x43,0xc9,0x3b,0x40,0x60,0x5b,0xe9,0x03,0xb2,0x07,0xea,0xc3,0xd1,
31    0x59,0x26,0xd2,0x9f,0x83,0xb2,0x8c,0xfa,0x7f,0x14,0xed,0x1d,0x9c,0xe9,0x5a,0xce,
32    0x49,0x4a,0x78,0x2a,0xc5,0xa9,0x96,0x97,0xca,0x77,0xa3,0x7c,0x20,0xbf,0x3b,0x79,
33    0xdd,0xa8,0xbf,0x2f,0x9f,0x4d,0xff,0x40,0xf2,0xd5,0xe6,0x09,0xd4,0x3f,0x31,0x5f,
34    0x7d,0x1c,0x5d,0xc7,0x35,0x38,0x32,0x5b,0xb3,0x98,0xd6,0xd0,0x4e,0x4d,0x27,0x97,
35    0xda,0x1d,0x40,0xbe,0xca,0x0f,0x21,0x3d,0x90,0x98,0xd9,0xad,0x77,0xf2,0x83,0x9c,
36    0xbd,0x13,0x38,0xef,0x06,0xce,0xfb,0x40,0xe6,0xaa,0xe1,0x8d,0x9c,0x9f,0xd9,0x39,
37    0x8b,0xeb,0x6b,0x74,0x13,0xf3,0xc7,0xe8,0x11,0xcc,0x09,0xa3,0x9b,0x99,0x3f,0x46,
38    0x8f,0x64,0x1e,0x19,0x7d,0x39,0x73,0xc9,0xe8,0x2b,0xf2,0xd5,0xd3,0xd1,0xad,0x8c,
39    0x9f,0xc6,0xf3,0x7a,0xfa,0x9d,0x9c,0x7f,0x37,0xd0,0xde,0x11,0x99,0x9e,0x98,0xef,
40    0xd7,0x13,0x33,0xfd,0x49,0xa5,0x7d,0x55,0x14,0xbd,0x73,0xe4,0x95,0x77,0x23,0x6d,
41    0x5e,0x4e,0xdf,0x27,0x39,0xd9,0x9b,0xaa,0x62,0x36,0x99,0xfb,0xc0,0x74,0xa7,0x50,
42    0xb7,0x9e,0xb2,0x93,0x9d,0xec,0xd4,0xaa,0x38,0x4d,0xe3,0x5a,0x9b,0xee,0x74,0xca,
43    0x34,0x93,0x37,0xd9,0xf1,0x66,0x90,0x57,0x47,0xbf,0xbc,0xdd,0x9b,0xb9,0x27,0x4c,
44    0x76,0xa6,0xf3,0x7f,0x1a,0xf9,0x26,0x7b,0x4b,0xbe,0xba,0x3b,0xd9,0x5b,0x9d,0xbf,
45    0x4d,0xe4,0x1b,0x6f,0x16,0xc7,0xab,0xa7,0x1d,0xcf,0x9b,0x4d,0xbd,0xe6,0x4e,0x78,
46    0xb7,0xd1,0x57,0x1b,0xff,0x26,0xc7,0x9b,0x53,0x35,0x47,0xcf,0xbb,0xdd,0xcd,0xb1,
47    0x9a,0x37,0xd7,0xe9,0xd5,0x57,0xf1,0xe6,0xd1,0x97,0x3a,0xc7,0xb3,0xf9,0xce,0x67,
48    0xce,0x9a,0xec,0x02,0x62,0x53,0xa9,0xe3,0xed,0xdc,0xe1,0xe2,0x3b,0x8d,0xf1,0x30,
49    0xde,0x42,0x37,0xdf,0xfa,0x3d,0xbc,0x03,0x4a,0xf9,0xb4,0x88,0x39,0x33,0x85,0x6b,
50    0x38,0x83,0x6b,0x70,0x2b,0x63,0x38,0x9b,0x31,0x99,0xc3,0x39,0xce,0xa5,0xcf,0x0b,
51    0x38,0xe6,0x42,0xee,0xb9,0xc5,0xcc,0x87,0x89,0xce,0xff,0xe5,0x9a,0x33,0xdf,0x74,
52    0x74,0x18,0xfd,0x6c,0xbe,0x3a,0x62,0x99,0xff,0x9c,0xd2,0x59,0xe9,0x87,0xb9,0x22,
53    0xbc,0xcc,0x5a,0xa3,0x3c,0x7d,0x5e,0x53,0x9a,0xf9,0x77,0x8d,0x46,0xaf,0x2d,0xd1,
54    0xd3,0x4f,0x37,0xfa,0x75,0x84,0xe6,0x54,0xdd,0x37,0x6f,0x71,0xaf,0x47,0xfa,0xb2,
55    0x99,0xb9,0xfa,0x16,0xeb,0xc5,0x66,0xf6,0x96,0xe0,0xf6,0x55,0x3b,0xf7,0xb5,0xf1,
56    0xb7,0xb9,0x3a,0xf7,0x1e,0x9f,0x7d,0xfd,0xd8,0x51,0xb5,0x2f,0x77,0x96,0x7a,0x58,
57    0x99,0xfe,0x94,0xfb,0xd8,0xe8,0x2f,0xe9,0x8f,0xfa,0x27,0x01,0xb6,0xbc,0x7e,0x6d,
58    0x40,0x9d,0xd1,0x35,0x52,0x7e,0xd7,0x80,0x1a,0xd5,0xce,0xfd,0xad,0x7c,0x93,0xed,
59    0x9e,0x9f,0x3b,0x5c,0x6c,0x06,0xa8,0x73,0xc5,0x8e,0xd3,0x8c,0xae,0x0f,0x08,0xc6,
60    0x9e,0x5a,0x97,0xe9,0x5f,0x5f,0xd8,0x5f,0x8c,0x1e,0x1d,0x2a,0x6b,0xd0,0x75,0x99,
61    0xfe,0x91,0x93,0x9f,0x10,0x2a,0x6b,0xf4,0x74,0x8e,0xa7,0xbe,0xff,0x21,0x3f,0x0f,
62    0xe5,0xdc,0x0e,0xcd,0xdc,0x67,0x39,0x97,0x2e,0x45,0xe5,0x8f,0x2e,0xe4,0xde,0x16,
63    0x8b,0xe7,0x32,0xa1,0x72,0x1a,0xcb,0xe7,0xc9,0x50,0x6c,0x08,0xe9,0x17,0x88,0x29,
64    0xbf,0x2d,0xa0,0x26,0x75,0xa3,0xfd,0x1e,0x02,0xfb,0xa1,0xca,0xbe,0x94,0x7a,0x06,
65    0x74,0x7e,0x20,0xc0,0x54,0x76,0x08,0xe9,0xbd,0xa5,0x32,0x06,0xfb,0x0b,0xce,0x0e,
66    0xbd,0x33,0xa5,0x79,0xa0,0xfd,0x51,0xb1,0x46,0xd6,0xfc,0xde,0x79,0x06,0x9a,0xaf,
67    0x8b,0x12,0x62,0xde,0x4e,0x4c,0x6b,0xed,0x6f,0x12,0xf6,0x4b,0xab,0xc3,0xee,0x4c,
68    0xd8,0x5f,0x75,0x6e,0xcd,0x16,0x27,0xac,0x8d,0xbf,0x42,0x9e,0xbf,0xee,0xb9,0x25,
69    0x09,0xcf,0x2a,0xf7,0x68,0x2a,0xc7,0xb6,0x2d,0xa1,0x27,0x0e,0xc8,0x76,0x85,0x39,
70    0x51,0x30,0x57,0x76,0x67,0xa4,0x0b,0x73,0x52,0xf7,0xd3,0x99,0x11,0x7b,0xca,0xe8,
71    0xfb,0xa4,0x4c,0x6b,0xee,0xfe,0x2d,0x54,0xd2,0x3b,0x48,0x7f,0x99,0xad,0xf5,0x65,
72    0x3c,0xfe,0x97,0x9f,0x35,0xaf,0x4e,0x14,0xd8,0xd7,0xfb,0x50,0xee,0x99,0x41,0x82,
73    0x7d,0x71,0x6e,0xd6,0x52,0xbd,0xc1,0x02,0x6c,0x90,0x94,0xd7,0xf4,0x56,0xc6,0xa9,
74    0x41,0xc0,0xd7,0x78,0xfd,0x24,0x63,0xba,0x47,0x86,0x0a,0xf6,0x8d,0xda,0x1f,0xca,
75    0xb8,0x9f,0x22,0xc0,0x57,0x67,0x19,0xa5,0x4f,0x15,0x60,0xba,0x7f,0xd6,0x13,0x6b,
76    0x24,0xb6,0xd3,0x61,0x67,0x08,0x64,0x1b,0x39,0xa6,0x62,0x67,0x52,0x4f,0x79,0x3f,
77    0x23,0xd6,0x24,0xf0,0xa5,0x28,0xd5,0x2a,0x60,0x67,0x0b,0x70,0x95,0x1f,0x91,0x11,
78    0xf5,0xf7,0xca,0x04,0xdc,0x64,0x6d,0x9c,0x61,0x1c,0xe7,0x53,0x37,0xce,0x70,0xd2,
79    0xc3,0xdc,0x38,0xe7,0x50,0x37,0xb8,0x71,0xce,0x15,0xe0,0xc3,0xdd,0x38,0xbf,0x4c,
80    0xc0,0xaf,0x4c,0x90,0xb5,0x71,0x46,0x08,0xe6,0xa9,0x75,0xc0,0x62,0x71,0x3e,0x31,
81    0xcd,0xab,0xf3,0x18,0xd7,0x0b,0x04,0xb2,0xca,0x9b,0x41,0xec,0x22,0x81,0x5d,0xe5,
82    0x4d,0xe1,0x39,0x6b,0xa4,0x00,0xd7,0xd8,0xeb,0xf9,0xe6,0xce,0x80,0x33,0x50,0x9d,
83    0x8b,0xfd,0xe2,0x00,0x7c,0x0a,0x73,0xed,0xae,0x00,0xcc,0x74,0x7e,0x4b,0x9d,0x66,
84    0xa7,0x73,0x77,0x00,0x6e,0x3a,0xbf,0x0b,0xc0,0xce,0x63,0xde,0xff,0x3e,0xc0,0x8e,
85    0xe2,0x4f,0x64,0x4c,0xeb,0xc1,0x92,0x00,0x7f,0x94,0xb7,0x24,0xeb,0x69,0x7d,0xb8,
86    0x87,0xb8,0xe6,0xde,0x7d,0xdc,0xbc,0x5f,0x67,0x9e,0xe2,0xf7,0xe6,0x4b,0x31,0xcd,
87    0x3f,0x7d,0xfe,0x4a,0xdf,0x1b,0x98,0x8f,0x8a,0xaf,0xe1,0x58,0xf7,0xd3,0xae,0xee,
88    0xbf,0xf5,0xc4,0x96,0x12,0xd3,0xfd,0xa7,0x6b,0xa3,0x3e,0x2e,0x0b,0xc0,0x0b,0xae,
89    0xa1,0x62,0x0f,0x07,0xcc,0x4b,0x79,0x26,0xf7,0x28,0xe5,0x6c,0x0d,0x15,0x7b,0x2c,
90    0x40,0x56,0x79,0xa6,0xfb,0x24,0x75,0x15,0x33,0xb9,0x67,0x02,0xf0,0x65,0x01,0xb1,
91    0xd2,0xfa,0xf5,0x22,0x6b,0x97,0xd9,0x7f,0x29,0xc0,0x67,0x9f,0x23,0x7f,0x61,0xcc,
92    0xfd,0xba,0xaf,0x0c,0xc0,0x5b,0x8b,0x72,0x9c,0x57,0x05,0xe0,0xe6,0xc3,0xea,0x00,
93    0x7b,0xab,0x9c,0xfd,0xb5,0xb4,0x5f,0x38,0xff,0xd7,0x05,0xc8,0xae,0xe5,0xba,0x6a,
94    0xfd,0x5c,0xcf,0x75,0x6d,0xe5,0xba,0xaa,0xdc,0x2b,0xc4,0x4d,0x6f,0x43,0x80,0xae,
95    0xe2,0x2d,0x59,0x46,0xeb,0xf3,0x46,0xce,0x69,0x94,0xd6,0xa2,0x7c,0x7f,0x95,0xd8,
96    0x86,0x50,0xde,0x07,0xa3,0x04,0x78,0x28,0xe5,0x2c,0xea,0xde,0x55,0x02,0xdc,0x5f,
97    0xab,0x69,0xe3,0x6a,0x01,0x5f,0xfb,0xd9,0x7a,0x62,0xd7,0x08,0xf0,0xc5,0xa9,0x6c,
98    0xf7,0x5a,0x01,0x5e,0x94,0x7a,0x3b,0xb0,0x5f,0x09,0xf0,0x5a,0x37,0xfe,0x75,0x94,
99    0x0b,0x4e,0x6e,0xbc,0x00,0xd7,0x3e,0xb9,0x8e,0xd8,0x04,0x81,0xfe,0x78,0xb7,0x87,
100    0x6f,0xa0,0xae,0x38,0xdd,0x89,0x02,0xbc,0xdd,0xe9,0x4e,0x12,0xe8,0x4f,0x74,0xba,
101    0x37,0x51,0x37,0x3a,0xdd,0xc9,0x02,0xbc,0xc1,0xe9,0x4e,0x11,0xe8,0x4f,0x76,0xba,
102    0x63,0x19,0xb3,0xc2,0xc5,0xec,0x66,0x01,0xee,0x2f,0x8b,0xd9,0x4c,0x01,0xdf,0xc7,
103    0x6c,0x96,0x00,0xf7,0x31,0xbb,0x4d,0x80,0xfb,0x98,0xcd,0x11,0xe0,0x3e,0x66,0x73,
104    0x29,0xe7,0x63,0x36,0x4f,0x80,0xfb,0x98,0xcd,0x17,0xe8,0xcf,0x73,0xbe,0xdf,0x41,
105    0x5d,0x1f,0xb3,0x85,0x02,0xdc,0xc7,0x6c,0x91,0x40,0x7f,0xa1,0xd3,0xbd,0x93,0xba,
106    0x3e,0x66,0x8b,0x05,0xb8,0x8f,0xd9,0x5d,0x02,0x7d,0xe5,0x59,0x1d,0x6c,0x11,0xc4,
107    0x52,0x79,0xa7,0x64,0x0b,0xda,0xdb,0x14,0xb3,0xfd,0xb1,0x54,0x50,0xeb,0x74,0xff,
108    0xce,0x24,0xf6,0xa0,0xa0,0x97,0x2e,0x75,0x75,0xf1,0x21,0xc1,0x5e,0xa8,0x77,0x35,
109    0x6e,0x99,0x00,0x7f,0x24,0xcb,0x68,0xad,0x7a,0x58,0x80,0x35,0xb0,0x57,0xae,0x90,
110    0x72,0xbd,0x52,0xde,0x23,0xf9,0x5a,0xce,0xfa,0xf4,0x08,0x6d,0xeb,0x3b,0xdf,0xa3,
111    0x82,0x9e,0xdb,0xe8,0x6c,0x3f,0x26,0xc0,0x6d,0x5f,0x3f,0x2e,0xc0,0x36,0x66,0xae,
112    0xd2,0x4f,0x08,0xb0,0xb3,0x78,0xee,0xd6,0xda,0xb7,0x82,0xb6,0x97,0x3b,0xdb,0x4f,
113    0x76,0x62,0xfb,0x29,0x01,0xfe,0x6a,0xa6,0x94,0x7e,0x5a,0x80,0x99,0x2d,0x1b,0xf3,
114    0x19,0x01,0xcf,0xdb,0xd6,0xfb,0x17,0x39,0xb2,0xa5,0x3e,0x90,0xe0,0x87,0xce,0xe5,
115    0x19,0xce,0xcd,0xc6,0x7d,0xae,0x93,0x71,0x9f,0x17,0xe0,0x36,0xee,0x0b,0x02,0x6c,
116    0x04,0x7b,0x87,0x8d,0xfb,0xa2,0x80,0x67,0x7a,0x2f,0x55,0xe9,0xbd,0x2c,0xc0,0x46,
117    0x56,0xe9,0xfd,0x59,0xc0,0x5b,0xc3,0x75,0x5c,0x29,0x58,0x4b,0x7d,0x77,0x31,0xbf,
118    0x56,0xd1,0xaf,0x95,0xce,0xfe,0x6a,0x01,0xbe,0xde,0xea,0x23,0xf5,0xf4,0x9d,0xda,
119    0xc6,0x5c,0x27,0x90,0x5b,0x2b,0x95,0xf5,0xb6,0x4d,0xc0,0xb3,0xdc,0x79,0x45,0x70,
120    0x16,0x5b,0xea,0xfc,0xd8,0x28,0xc0,0xbd,0x1f,0xaf,0xd2,0x8f,0x8d,0xce,0x8f,0xd7,
121    0x04,0xb8,0xf9,0xf1,0x06,0xf5,0xae,0x70,0x35,0xff,0x4d,0x81,0xdc,0x1b,0x52,0x3e,
122    0x13,0x6c,0x12,0xe0,0x8d,0xce,0xaf,0xbf,0x0a,0x70,0xcd,0x79,0x3d,0xdf,0x2d,0x2a,
123    0x8d,0x5d,0x53,0x7a,0xcf,0xdd,0x2c,0x38,0xf3,0x69,0xbc,0xda,0xa4,0x5c,0xdb,0xdf,
124    0x16,0xf0,0x6c,0x2e,0xef,0x08,0xec,0xe8,0x7b,0x61,0x1b,0xb1,0x76,0x81,0xdc,0x3b,
125    0x6e,0x0f,0x6d,0x11,0xe4,0x42,0x93,0xeb,0x27,0x5b,0x05,0xb8,0xae,0x8f,0xed,0x8f,
126    0xf7,0x04,0x6b,0x3b,0x9f,0xfb,0x63,0xa7,0xdb,0x1f,0xca,0xdb,0x9e,0xaf,0x0f,0x98,
127    0x67,0xdb,0x9d,0xfd,0x7f,0x08,0xc6,0x7d,0xd1,0x61,0xef,0x0b,0x70,0xcb,0xfd,0x9d,
128    0xd4,0xfb,0x40,0x2a,0xe9,0x9d,0x2e,0x5f,0xef,0x4e,0xd0,0xdb,0x4e,0x7b,0x1f,0x48,
129    0xd9,0xdf,0x7f,0x0b,0x7c,0x56,0x99,0x65,0xdc,0x63,0x9f,0x08,0xf6,0xf4,0x72,0xbe,
130    0x1f,0x1b,0xfe,0x19,0xf1,0x67,0xf9,0xae,0xd9,0x23,0x9f,0x92,0x15,0xff,0x2f,0x6b,
131    0x63,0x1f,0xda,0x53,0x7d,0x95,0x55,0x3d,0x7d,0x9f,0xda,0x4d,0xbd,0x35,0x7c,0xef,
132    0xbc,0x96,0xef,0x59,0x5f,0x0b,0x74,0x8d,0xfe,0x86,0x7a,0x73,0xb2,0x6f,0x4a,0x7f,
133    0x2b,0x90,0x51,0x7c,0x16,0xb1,0x0e,0x01,0xae,0x36,0x6f,0x26,0xa6,0x05,0x52,0x71,
134    0x7d,0x87,0x1d,0xc7,0x35,0x0d,0x11,0xb8,0x9e,0x2b,0xf5,0xfd,0x61,0x6a,0x02,0xb6,
135    0x84,0x2f,0x08,0x56,0xdf,0xde,0x61,0xaf,0x9f,0xe6,0xf6,0x6b,0x7b,0x00,0x6e,0xeb,
136    0xf7,0x6e,0x00,0x66,0xf5,0x6d,0xab,0x3b,0x8f,0x29,0x6f,0x4b,0xbe,0xb6,0xf2,0x3c,
137    0xb6,0xc5,0xf5,0x8d,0xda,0x88,0xbe,0x15,0x5d,0xdf,0xda,0x2f,0x02,0xf7,0x97,0xf5,
138    0xad,0xfd,0x23,0xf8,0xbe,0x6f,0x1d,0x14,0x81,0xfb,0xbe,0x75,0x70,0x04,0xee,0xfb,
139    0xd6,0x21,0x11,0xb8,0xef,0x5b,0x87,0x51,0xce,0xf7,0xad,0xc3,0x23,0x70,0xdf,0xb7,
140    0x8e,0x88,0xd0,0x57,0x9e,0xe9,0x1e,0x49,0x5d,0xdf,0xb7,0x7a,0x46,0xe0,0xbe,0x6f,
141    0x1d,0x15,0xa1,0xdf,0xd3,0xe9,0x1e,0x43,0x5d,0xdf,0xb7,0x7a,0x45,0xe0,0xbe,0x6f,
142    0x1d,0x1b,0xa1,0xdf,0xcb,0xe9,0x76,0x67,0xcc,0xc4,0xc5,0xec,0xc7,0x11,0xb8,0xbf,
143    0x2c,0x66,0xc7,0x47,0xf0,0x7d,0xcc,0xfa,0x44,0xe0,0x3e,0x66,0x27,0x46,0xe0,0x3e,
144    0x66,0x75,0x11,0xb8,0x8f,0x59,0x3f,0xca,0xf9,0x98,0x9d,0x14,0x81,0xfb,0x98,0xf5,
145    0x8f,0xd0,0x3f,0xc9,0xf9,0x3e,0x80,0xba,0x3e,0x66,0x03,0x23,0x70,0x1f,0xb3,0xfa,
146    0x08,0xfd,0x81,0x4e,0x77,0x30,0x75,0x7d,0xcc,0x86,0x44,0xe0,0x3e,0x66,0x0d,0x11,
147    0xfa,0xca,0xb3,0x5e,0xdf,0x23,0x22,0x96,0xca,0xd3,0xba,0xa7,0xef,0xad,0x8a,0x69,
148    0xae,0x5e,0x16,0x2b,0x7b,0x71,0x73,0xa6,0x2f,0x8e,0xc8,0x55,0x7d,0xb6,0xba,0x7c,
149    0x7e,0xc4,0xfb,0xae,0xef,0x5b,0x17,0x44,0xe0,0x56,0x5b,0x2f,0x8c,0xc0,0xac,0x17,
150    0x5f,0x14,0x81,0xf9,0x5e,0x7c,0x19,0x6d,0x5f,0xec,0x6c,0x8f,0xec,0xc4,0xf6,0xcf,
151    0x23,0x70,0xeb,0x33,0x97,0x44,0x60,0xd5,0xbd,0xf8,0xd2,0x08,0x9e,0xb7,0xad,0x77,
152    0xab,0x6d,0xf7,0x24,0xf8,0xa1,0x73,0xb9,0x94,0x73,0xb3,0x71,0x47,0x75,0x32,0xee,
153    0xe8,0x08,0xdc,0xc6,0x1d,0x13,0x81,0x55,0xf7,0xe2,0xb1,0x11,0x3c,0xd3,0x6b,0xa9,
154    0xd2,0x6b,0x8d,0xc0,0xaa,0x7b,0xf1,0x2f,0x22,0x78,0xe6,0xc3,0x55,0xf4,0xc1,0xf7,
155    0xdd,0xab,0x23,0x70,0xb3,0x75,0x4d,0x04,0x56,0xdd,0x63,0xc7,0x45,0xf0,0xcc,0xd6,
156    0x78,0xda,0xf2,0xbd,0x73,0x42,0x04,0x6e,0x7d,0x72,0x62,0x04,0xe6,0xfb,0xe4,0xa4,
157    0x08,0xdc,0xf7,0xc9,0x1b,0x23,0x70,0xcd,0x17,0xfd,0x2e,0xe2,0xfb,0xe4,0x94,0x88,
158    0x6f,0x25,0x3a,0x97,0x71,0xb1,0xdc,0x27,0xa7,0x46,0xf0,0xac,0x4f,0x4e,0x8f,0xb0,
159    0xe3,0xfb,0xe4,0x8c,0x08,0x39,0xe5,0x59,0xcf,0x9a,0x19,0xb1,0x4e,0xbe,0x4f,0xde,
160    0x12,0x81,0xfb,0x3e,0x39,0x2b,0x22,0xee,0xd6,0x27,0x17,0xb8,0xdc,0x55,0xde,0xec,
161    0x7c,0xcd,0x63,0x0e,0xcc,0x76,0xf6,0x6f,0x8f,0x18,0x77,0xac,0xc3,0xe6,0x46,0xe0,
162    0x96,0x97,0x0b,0xa8,0x37,0x2f,0x56,0xd2,0x0b,0x5c,0x2e,0xdd,0x97,0xa0,0x37,0x9b,
163    0xf6,0x54,0xd6,0xfc,0x5d,0x14,0xe1,0xb3,0xca,0x58,0xdf,0xbb,0x37,0x96,0xfb,0x9e,
164    0xf2,0xad,0xef,0x59,0x3f,0xbb,0x3f,0x42,0xc6,0xfa,0xd9,0x03,0x11,0x98,0xef,0x67,
165    0x0f,0x46,0xe0,0xbe,0x9f,0x3d,0x14,0x81,0xfb,0x7e,0xb6,0x2c,0x02,0xb7,0x7e,0x76,
166    0x7b,0x02,0x36,0x95,0xdf,0x49,0x74,0x4e,0xd6,0x83,0xf4,0xfe,0x05,0xbf,0x55,0xff,
167    0x31,0x41,0x46,0xcf,0x03,0xaa,0xb3,0x80,0xfb,0x59,0xf3,0xe2,0xc3,0x80,0xf7,0x72,
168    0x7b,0x3f,0xfe,0x38,0x40,0x5e,0x7f,0x63,0x02,0x62,0xf2,0x59,0x2c,0x7f,0x7b,0x55,
169    0xbe,0xd6,0xc0,0x16,0xf2,0x76,0x75,0xc2,0xb3,0xb5,0x5c,0x19,0xa1,0xbb,0x8b,0x75,
170    0xa8,0xcd,0xad,0xa5,0xf2,0x56,0xe5,0xab,0x8d,0x6b,0xb0,0xca,0xe5,0xd4,0x57,0xd4,
171    0x51,0xdd,0x3d,0xe7,0x84,0x08,0xdc,0x64,0xbe,0x8d,0x18,0xcf,0xcb,0x7c,0x17,0x81,
172    0x5b,0xac,0xf5,0x43,0xa0,0x62,0xaa,0x6b,0xb1,0x0e,0x09,0xb8,0x7e,0xef,0xd5,0x35,
173    0x54,0x4c,0x92,0x7d,0xc7,0x06,0x5f,0xbf,0xfd,0x82,0x8f,0xb3,0x4b,0x4c,0xe5,0xff,
174    0x4b,0x55,0xd6,0xd6,0x23,0x25,0xf0,0x2c,0xdf,0x6a,0x12,0xb0,0x66,0x77,0x76,0xae,
175    0x4d,0xf8,0x76,0x5c,0x43,0x5c,0xd7,0xc8,0xe6,0xdc,0xc6,0xbc,0x53,0xb9,0xfb,0x13,
176    0x6a,0xbc,0xae,0x9b,0xea,0x68,0x3c,0x9e,0x62,0x1c,0x5f,0x89,0x58,0xa7,0xd1,0xfc,
177    0x16,0xb4,0xc9,0xc5,0x51,0x79,0x1b,0xf2,0xf5,0x26,0x6d,0x6e,0x88,0xe5,0x6f,0x70,
178    0xaf,0x71,0x6d,0x3e,0x0c,0xe5,0x6f,0x29,0xaf,0xb3,0x87,0x29,0xcf,0x7a,0xcc,0x1b,
179    0x11,0xe3,0xbf,0xce,0x7d,0xb1,0x89,0xb6,0xde,0xac,0xa2,0x37,0x39,0x7f,0xff,0x94,
180    0xa0,0xb7,0x81,0xbd,0x49,0x65,0x1f,0xa7,0xbf,0x6f,0x55,0xf9,0xbb,0xcd,0xf9,0xab,
181    0xbc,0xcd,0xf9,0xda,0x4a,0x9b,0x9b,0x9d,0x1f,0x7f,0xa7,0x1f,0xd7,0x85,0xf2,0x1c,
182    0xda,0xdd,0x1c,0x66,0x12,0x7b,0x37,0xe2,0xfb,0x7a,0xbb,0xab,0x79,0x5b,0x22,0xf4,
183    0xdf,0xa5,0xcf,0xdb,0x68,0x7f,0x6b,0x15,0xbd,0xcd,0xcd,0xe1,0x81,0x04,0xbd,0xcd,
184    0x9c,0xc3,0x56,0xd7,0x4f,0xb7,0x47,0xcc,0x51,0x65,0xae,0x0c,0xf8,0x96,0xbb,0xc3,
185    0xe5,0xfa,0x76,0xc6,0xd1,0xde,0x57,0xde,0x67,0xce,0x4e,0x0f,0x65,0xec,0x9f,0xcc,
186    0x61,0xc5,0xd6,0x12,0xdb,0x19,0x81,0x37,0xb1,0x9f,0x2b,0xf6,0xaf,0x08,0xfd,0x9d,
187    0x7e,0x5f,0x46,0xe0,0x76,0x36,0xf8,0x28,0x62,0xfc,0xc2,0x9d,0x03,0x3e,0x8e,0x90,
188    0xfb,0xc8,0xc9,0x7d,0x42,0xb9,0xe0,0xbe,0x87,0xfe,0x27,0x42,0x56,0x79,0xe7,0xe6,
189    0x11,0xf5,0x7c,0xf4,0x29,0xbf,0xa1,0x2b,0x2f,0xf1,0xbf,0x07,0xe1,0xdc,0x74,0xcd,
190    0x3e,0xaf,0x3a,0xdf,0xee,0xca,0xd7,0xe7,0xac,0x2d,0xbb,0x5c,0xbd,0xd8,0xcd,0x7a,
191    0x11,0x5c,0xbd,0x38,0x27,0x95,0xe3,0xb4,0xbb,0xaa,0x5e,0x9c,0xd7,0x09,0xcf,0xea,
192    0xc5,0x91,0x09,0xba,0x90,0x89,0xc5,0xb1,0xa9,0xec,0x83,0xf2,0x7a,0xe6,0x4b,0x31,
193    0xf5,0x41,0x9f,0xad,0x16,0x5c,0x44,0x1d,0xd5,0xb5,0x5a,0x70,0x71,0x02,0x6e,0x32,
194    0x97,0x24,0x8c,0xe7,0x65,0x2e,0x4d,0xc0,0xad,0x5e,0x5c,0x9e,0x80,0xa9,0xae,0xd5,
195    0x8b,0x51,0x09,0xb8,0xaf,0x17,0xa3,0x5d,0xbd,0x18,0xd5,0x49,0xbd,0x18,0xe3,0xea,
196    0xc5,0x68,0x57,0x2f,0xc6,0x26,0xf0,0xac,0x5e,0xb4,0x24,0x60,0xbe,0x5e,0xb4,0xb2,
197    0x5e,0xb4,0xb8,0x7a,0x61,0x73,0xd6,0xbb,0xe5,0xee,0x53,0xac,0x17,0xba,0x16,0xad,
198    0x8c,0x4d,0xe9,0x3f,0x8a,0x54,0x59,0x1b,0x8e,0xcb,0x74,0x1f,0xea,0x1f,0x97,0xca,
199    0xfb,0xea,0xf8,0xf4,0xfd,0xda,0x70,0x42,0xc2,0x7a,0x28,0xcf,0xf6,0x64,0xef,0x84,
200    0xb1,0x94,0x57,0xfa,0xc6,0x4c,0x5b,0x7d,0xaa,0xe8,0xbe,0xce,0xb7,0xa7,0x13,0xf4,
201    0x8e,0xa3,0x8f,0x7d,0xe8,0xdb,0xe0,0x54,0x59,0x07,0xfa,0x65,0x7a,0x10,0xf5,0xfb,
202    0xb9,0x31,0xfb,0x73,0x4c,0x5f,0x07,0x06,0xa4,0xef,0xd7,0x81,0x81,0x09,0x75,0x40,
203    0x79,0x56,0x07,0xea,0x13,0xf4,0x07,0xd2,0xbf,0xc1,0xb4,0x3f,0xa8,0x8a,0x1e,0xec,
204    0xfc,0x5d,0x91,0xa0,0xd7,0x8f,0xfe,0xaa,0xac,0xed,0x9d,0x86,0x84,0xf9,0xac,0x70,
205    0x75,0xe0,0x14,0x97,0xc3,0x0d,0xa9,0xb2,0x0e,0x9c,0xc6,0x5c,0xf4,0x75,0xa0,0x91,
206    0xb9,0xe9,0xeb,0xc0,0xe9,0x09,0xb8,0xaf,0x03,0x67,0x24,0xe8,0x2b,0xcf,0xea,0xc0,
207    0x99,0x09,0xf8,0x9e,0xff,0x6a,0x12,0xc6,0xf7,0x75,0xe0,0xec,0x04,0xb9,0x26,0x27,
208    0xf7,0x53,0xca,0xf9,0x3a,0x30,0x2c,0x41,0x56,0x79,0x56,0x07,0xbe,0x09,0xa8,0x01,
209    0xc3,0x52,0xf9,0xff,0x29,0xab,0x03,0x1a,0x2f,0xdb,0xf3,0x9f,0xf3,0x3c,0xa1,0x3a,
210    0xeb,0x12,0xea,0x87,0xd6,0x52,0xd5,0xd7,0x58,0x3e,0xcc,0x3d,0xfc,0x1d,0xcf,0x13,
211    0x76,0x7e,0x2b,0xdc,0x77,0x0e,0xe5,0x75,0x70,0x00,0xb5,0xd9,0xe1,0xfe,0x47,0x09,
212    0xfc,0xc6,0x38,0xdf,0x9d,0xd3,0x45,0x80,0xcf,0xe6,0x9c,0xa2,0x00,0xdb,0xe1,0xce,
213    0xb0,0x49,0x80,0x9b,0x9d,0x2e,0xb4,0x33,0xd5,0xd9,0xa9,0x11,0xe0,0x66,0xa7,0x56,
214    0x80,0x79,0x3b,0x5d,0x05,0xb8,0xfd,0x47,0xd3,0x4d,0x60,0xbb,0x2b,0xbf,0x93,0x28,
215    0xb6,0x97,0xe0,0xbf,0x83,0x6e,0x3c,0x7b,0xeb,0x7f,0xa5,0xfb,0xf0,0x7f,0xd2,0x2b,
216    0x32,0xad,0xcf,0x2a,0xb3,0x8e,0xb9,0x66,0xf3,0x2c,0xa4,0xf2,0xff,0x19,0xbd,0x7f,
217    0x9b,0x23,0x5d,0x9f,0xaf,0xff,0x03,0xa4,0xb0,0x5e,0xa3,0x0c,0x26,0x00,0x00
218};
219
220// Generated from:
221//
222// #version 450 core
223//
224// #extension GL_GOOGLE_include_directive : require
225//
226// #extension GL_KHR_shader_subgroup_clustered : enable
227// #extension GL_KHR_shader_subgroup_shuffle : enable
228//
229// layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
230// layout(binding = 0)uniform highp usamplerBuffer uInputBuffer;
231// layout(binding = 1, rgba32ui)writeonly uniform uimage2D uOutput;
232//
233// layout(push_constant)uniform imagInfo {
234//
235//     uint offsetX;
236//     uint offsetY;
237//     int texelOffset;
238//     uint width;
239//     uint height;
240//     uint alphaBits;
241//     uint isSigned;
242//     uint isEacRg;
243// };
244//
245// #line 1 "shaders/src/third_party/etc_decoder/etc_decoder.h"
246//
247//  const ivec2 etc1_color_modifier_table[8]= ivec2[](
248//     ivec2(2, 8),
249//     ivec2(5, 17),
250//     ivec2(9, 29),
251//     ivec2(13, 42),
252//     ivec2(18, 60),
253//     ivec2(24, 80),
254//     ivec2(33, 106),
255//     ivec2(47, 183));
256//
257// const ivec4 etc2_alpha_modifier_table[16]= ivec4[](
258//     ivec4(2, 5, 8, 14),
259//     ivec4(2, 6, 9, 12),
260//     ivec4(1, 4, 7, 12),
261//     ivec4(1, 3, 5, 12),
262//     ivec4(2, 5, 7, 11),
263//     ivec4(2, 6, 8, 10),
264//     ivec4(3, 6, 7, 10),
265//     ivec4(2, 4, 7, 10),
266//     ivec4(1, 5, 7, 9),
267//     ivec4(1, 4, 7, 9),
268//     ivec4(1, 3, 7, 9),
269//     ivec4(1, 4, 6, 9),
270//     ivec4(2, 3, 6, 9),
271//     ivec4(0, 1, 2, 9),
272//     ivec4(3, 5, 7, 8),
273//     ivec4(2, 4, 6, 8)
274// );
275//
276// const int etc2_distance_table[8]= int[](3, 6, 11, 16, 23, 32, 41, 64);
277//
278// int decode_etc2_alpha(uvec2 payload, int linear_pixel)
279// {
280//     int bit_offset = 45 - 3 * linear_pixel;
281//
282//     int base = isSigned != 0 ? bitfieldExtract(int(payload . y), 24, 8): int(bitfieldExtract(payload . y, 24, 8));
283//
284//     int multiplier = int(bitfieldExtract(payload . y, 20, 4));
285//     int table = int(bitfieldExtract(payload . y, 16, 4));
286//
287//     int lsb_index = int(bitfieldExtract(payload[bit_offset >> 5], bit_offset & 31, 2));
288//     bit_offset += 2;
289//     int msb = int((payload[bit_offset >> 5]>>(bit_offset & 31))& 1u);
290//     int mod = etc2_alpha_modifier_table[table][lsb_index]^(msb - 1);
291//
292//     int a = base * 8 + 4;
293//     a += multiplier != 0 ? mod * multiplier * 8 : mod;
294//     int minValue = isSigned != 0 ? - 1023 : 0;
295//     int maxValue = isSigned != 0 ? 1023 : 2047;
296//     a = clamp(a, minValue, maxValue);
297//     float scale = isSigned != 0 ? 127.0f : 255.0f;
298//     return int(a / float(maxValue)* scale + 0.5f);
299//
300// }
301//
302//  ivec4 DecodeRGB(ivec2 pixel_coord, uvec2 color_payload, int linear_pixel, inout bool punchthrough){
303//     int alpha_result = 0xff;
304//     ivec3 rgb_result;
305//     ivec3 base_rgb;
306//     uint flip = color_payload . y & 1u;
307//     uint subblock = uint((pixel_coord[flip]& 2)>> 1);
308//     bool etc1_compat = false;
309//
310//     if(alphaBits != 1 &&(color_payload . y & 2u)== 0u)
311//     {
312//
313//         etc1_compat = true;
314//         base_rgb = ivec3(color_payload . yyy >>(uvec3(28, 20, 12)- 4u * subblock));
315//         base_rgb &= 0xf;
316//         base_rgb *= 0x11;
317//     }
318//     else
319//     {
320//         int r = int(bitfieldExtract(color_payload . y, 27, 5));
321//         int rd = bitfieldExtract(int(color_payload . y), 24, 3);
322//         int g = int(bitfieldExtract(color_payload . y, 19, 5));
323//         int gd = bitfieldExtract(int(color_payload . y), 16, 3);
324//         int b = int(bitfieldExtract(color_payload . y, 11, 5));
325//         int bd = bitfieldExtract(int(color_payload . y), 8, 3);
326//
327//         int r1 = r + rd;
328//         int g1 = g + gd;
329//         int b1 = b + bd;
330//
331//         if(uint(r1)> 31u)
332//         {
333//             int r1 = int(bitfieldExtract(color_payload . y, 56 - 32, 2))|
334//                     (int(bitfieldExtract(color_payload . y, 59 - 32, 2))<< 2);
335//             int g1 = int(bitfieldExtract(color_payload . y, 52 - 32, 4));
336//             int b1 = int(bitfieldExtract(color_payload . y, 48 - 32, 4));
337//             int r2 = int(bitfieldExtract(color_payload . y, 44 - 32, 4));
338//             int g2 = int(bitfieldExtract(color_payload . y, 40 - 32, 4));
339//             int b2 = int(bitfieldExtract(color_payload . y, 36 - 32, 4));
340//             uint da =(bitfieldExtract(color_payload . y, 34 - 32, 2)<< 1)|
341//                     (color_payload . y & 1u);
342//             int dist = etc2_distance_table[da];
343//
344//             int msb = int((color_payload . x >>(15 + linear_pixel))& 2u);
345//             int lsb = int((color_payload . x >> linear_pixel)& 1u);
346//             int index = msb | lsb;
347//
348//             if(punchthrough)
349//                 punchthrough = index == 2;
350//
351//             if(index == 0)
352//             {
353//                 rgb_result = ivec3(r1, g1, b1);
354//                 rgb_result *= 0x11;
355//             }
356//             else
357//             {
358//                 int mod = 2 - index;
359//                 ivec3 rgb = ivec3(r2, g2, b2)* 0x11 + mod * dist;
360//                 rgb_result = ivec3(clamp(rgb, ivec3(0), ivec3(255)));
361//             }
362//         }
363//         else if(uint(g1)> 31u)
364//         {
365//             int r1 = int(bitfieldExtract(color_payload . y, 59 - 32, 4));
366//             int g1 =(int(bitfieldExtract(color_payload . y, 56 - 32, 3))<< 1)|
367//                     int((color_payload . y >> 20u)& 1u);
368//             int b1 = int(bitfieldExtract(color_payload . y, 47 - 32, 3))|
369//                     int((color_payload . y >> 16u)& 8u);
370//             int r2 = int(bitfieldExtract(color_payload . y, 43 - 32, 4));
371//             int g2 = int(bitfieldExtract(color_payload . y, 39 - 32, 4));
372//             int b2 = int(bitfieldExtract(color_payload . y, 35 - 32, 4));
373//             uint da = color_payload . y & 4u;
374//             uint db = color_payload . y & 1u;
375//             uint d = da + 2u * db;
376//             d += uint((r1 * 0x10000 + g1 * 0x100 + b1)>=(r2 * 0x10000 + g2 * 0x100 + b2));
377//             int dist = etc2_distance_table[d];
378//             int msb = int((color_payload . x >>(15 + linear_pixel))& 2u);
379//             int lsb = int((color_payload . x >> linear_pixel)& 1u);
380//
381//             if(punchthrough)
382//                 punchthrough =(msb + lsb)== 2;
383//
384//             ivec3 base = msb != 0 ? ivec3(r2, g2, b2): ivec3(r1, g1, b1);
385//             base *= 0x11;
386//             int mod = 1 - 2 * lsb;
387//             base += mod * dist;
388//             rgb_result = ivec3(clamp(base, ivec3(0), ivec3(0xff)));
389//         }
390//         else if(uint(b1)> 31u)
391//         {
392//
393//             int r = int(bitfieldExtract(color_payload . y, 57 - 32, 6));
394//             int g = int(bitfieldExtract(color_payload . y, 49 - 32, 6))|
395//                     (int(color_payload . y >> 18)& 0x40);
396//             int b = int(bitfieldExtract(color_payload . y, 39 - 32, 3))|
397//                     (int(bitfieldExtract(color_payload . y, 43 - 32, 2))<< 3)|
398//                     (int(color_payload . y >> 11)& 0x20);
399//             int rh = int(color_payload . y & 1u)|
400//                     (int(bitfieldExtract(color_payload . y, 2, 5))<< 1);
401//             int rv = int(bitfieldExtract(color_payload . x, 13, 6));
402//             int gh = int(bitfieldExtract(color_payload . x, 25, 7));
403//             int gv = int(bitfieldExtract(color_payload . x, 6, 7));
404//             int bh = int(bitfieldExtract(color_payload . x, 19, 6));
405//             int bv = int(bitfieldExtract(color_payload . x, 0, 6));
406//
407//             r =(r << 2)|(r >> 4);
408//             rh =(rh << 2)|(rh >> 4);
409//             rv =(rv << 2)|(rv >> 4);
410//             g =(g << 1)|(g >> 6);
411//             gh =(gh << 1)|(gh >> 6);
412//             gv =(gv << 1)|(gv >> 6);
413//             b =(b << 2)|(b >> 4);
414//             bh =(bh << 2)|(bh >> 4);
415//             bv =(bv << 2)|(bv >> 4);
416//
417//             ivec3 rgb = ivec3(r, g, b);
418//             ivec3 dx = ivec3(rh, gh, bh)- rgb;
419//             ivec3 dy = ivec3(rv, gv, bv)- rgb;
420//             dx *= int(pixel_coord . x);
421//             dy *= int(pixel_coord . y);
422//             rgb = rgb +((dx + dy + 2)>> 2);
423//             rgb = clamp(rgb, ivec3(0), ivec3(255));
424//             rgb_result = ivec3(rgb);
425//
426//             punchthrough = false;
427//
428//         }
429//         else
430//         {
431//
432//             etc1_compat = true;
433//             base_rgb = ivec3(r, g, b)+ int(subblock)* ivec3(rd, gd, bd);
434//             base_rgb =(base_rgb << 3)|(base_rgb >> 2);
435//         }
436//     }
437//
438//     if(etc1_compat)
439//     {
440//         uint etc1_table_index = bitfieldExtract(color_payload . y, 5 - 3 * int(subblock != 0u), 3);
441//         int msb = int((color_payload . x >>(15 + linear_pixel))& 2u);
442//         int lsb = int((color_payload . x >> linear_pixel)& 1u);
443//         int sgn = 1 - msb;
444//
445//         if(punchthrough)
446//         {
447//             sgn *= lsb;
448//             punchthrough =(msb + lsb)== 2;
449//         }
450//
451//         int offset = etc1_color_modifier_table[etc1_table_index][lsb]* sgn;
452//         base_rgb = clamp(base_rgb + offset, ivec3(0), ivec3(255));
453//         rgb_result = ivec3(base_rgb);
454//     }
455//
456//     if(alphaBits == 1 && punchthrough)
457//     {
458//         rgb_result = ivec3(0);
459//         alpha_result = 0;
460//     }
461//
462//     return ivec4(rgb_result . r, rgb_result . g, rgb_result . b, alpha_result);
463// }
464// #line 77 "shaders/src/EtcToBc.comp"
465//
466// ivec2 build_coord()
467// {
468//     uvec2 base =(gl_WorkGroupID . xy)* 8;
469//     uint blockid = gl_LocalInvocationID . x >> 4u;
470//     uint blockxy = gl_LocalInvocationID . x & 0xfu;
471//     base . x += 4 *(blockid & 0x1);
472//     base . y += 2 *(blockid & 0x2);
473//     base += uvec2(blockxy & 0x3, blockxy >> 0x2);
474//     return ivec2(base);
475// }
476//
477// uint flip_endian(uint v)
478// {
479//     uvec4 words = uvec4(v)>> uvec4(0, 8, 16, 24);
480//     words &= 0xffu;
481//     return(words . x << 24u)|(words . y << 16u)|(words . z << 8u)|(words . w << 0u);
482// }
483//
484// uvec2 flip_endian(uvec2 v)
485// {
486//     return uvec2(flip_endian(v . y), flip_endian(v . x));
487// }
488//
489// uint GetIndicesRGB(vec3 color, vec3 minColor, vec3 maxColor, bool transparent)
490// {
491//     vec3 dir = maxColor - minColor;
492//     float distMin = dot(minColor, dir);
493//     float distMax = dot(maxColor, dir);
494//     float dist = dot(color, dir);
495//     int ind = int(round(clamp((dist - distMin)/(distMax - distMin), 0.0, 1.0)*(transparent ? 2.0 : 3.0)));
496//
497//     return bitfieldExtract(transparent ? 0x18u : 0x2du, ind * 2, 2);
498// }
499//
500// void ComputeMaxMinColor(uvec3 rgbColor, inout uvec3 minColor, inout uvec3 maxColor){
501//     ivec3 dx;
502//     if(alphaBits == 1){
503//         int count = subgroupClusteredAdd(1, 16);
504//         ivec3 avg = ivec3((subgroupClusteredAdd(rgbColor, 16)* 2 + count)/(2 * count));
505//         dx = ivec3(rgbColor)- avg;
506//     }
507//     else {
508//         dx = ivec3(rgbColor)- ivec3(subgroupClusteredAdd(rgbColor, 16)+ 8 >> 4);
509//     }
510//     vec3 cov0 = vec3(subgroupClusteredAdd(dx . r * dx, 16));
511//     vec3 cov1 = vec3(subgroupClusteredAdd(dx . ggb * dx . gbb, 16));
512//     vec3 vg = vec3(subgroupClusteredMax(rgbColor, 16)- subgroupClusteredMin(rgbColor, 16));
513//
514//     mat3 covMat = mat3(cov0,
515//                        vec3(cov0 . y, cov1 . xy),
516//                        vec3(cov0 . z, cov1 . yz));
517//
518//     float eigenvalue = 0.0f;
519//     for(int i = 0;i < 4;i ++){
520//         vg = covMat * vg;
521//         eigenvalue = sqrt(dot(vg, vg));
522//         if(eigenvalue > 0.0f){
523//             float invNorm = 1.0f / eigenvalue;
524//             vg *= invNorm;
525//         }
526//     }
527//     const float kDefaultLuminanceThreshold = 4.0f * 255;
528//     const float kQuantizeRange = 0.512f;
529//
530//     if(eigenvalue < kDefaultLuminanceThreshold){
531//         vg = vec3(0.299f, 0.587f, 0.114f);
532//     }
533//     else {
534//         float magn = max(max(abs(vg . r), abs(vg . g)), abs(vg . b));
535//         vg *= kQuantizeRange / magn;
536//     }
537//     float dist = dot(vec3(rgbColor), vg);
538//     float min_dist = subgroupClusteredMin(dist, 16);
539//     float max_dist = subgroupClusteredMax(dist, 16);
540//     uvec2 indices = uvec2(dist == min_dist ? gl_SubgroupInvocationID : 0,
541//                           dist == max_dist ? gl_SubgroupInvocationID : 0);
542//     uvec2 minMaxIndex = subgroupClusteredMax(indices, 16);
543//     minColor = subgroupShuffle(rgbColor, minMaxIndex . x);
544//     maxColor = subgroupShuffle(rgbColor, minMaxIndex . y);
545// }
546//
547// uint GetIndicesAlpha(int alpha, int minAlpha, int maxAlpha)
548// {
549//     float dist = float(maxAlpha - minAlpha);
550//     int ind = int(round(clamp((alpha - minAlpha)/ dist * 7.0f, 0.0, 7.0)));
551//
552//     return bitfieldExtract(0x2345671u, ind * 4, 4);
553// }
554//
555// void ComputeMaxMin(int alpha, inout int minAlpha, inout int maxAlpha){
556//     minAlpha = subgroupClusteredMin(alpha, 16);
557//     maxAlpha = subgroupClusteredMax(alpha, 16);
558// }
559// uvec2 EncodeBC4(int value, uint pid){
560//     int minValue, maxValue;
561//     ComputeMaxMin(value, minValue, maxValue);
562//     uint indices = 0;
563//     if(minValue != maxValue)
564//         indices = GetIndicesAlpha(value, minValue, maxValue);
565//
566//     uvec2 mask = uvec2(pid <= 5 ? indices <<(16 + 3 * pid): 0x0,
567//                         pid >= 5 ?(indices << 29)>>(45 - 3 * pid): 0x0);
568//
569//     mask = subgroupClusteredOr(mask, 16);
570//     return uvec2((maxValue & 0xff)|((minValue & 0xff)<< 8)| mask . x, mask . y);
571// }
572//
573// uvec3 scaleColorToRGB565(uvec3 color){
574//     return uvec3(round(vec3(color)* vec3(31.0 / 255.0, 63.0 / 255.0, 31.0 / 255.0)));
575// }
576//
577// uvec3 convertRGB565ToRGB888(uvec3 color){
578//     return uvec3(color . x << 3 |(color . x >> 2),
579//                  color . y << 2 |(color . y >> 4),
580//                  color . z << 3 |(color . z >> 2));
581// }
582//
583// uint packRGB565(uvec3 color565){
584//      return color565 . r << 11 |(color565 . g << 5)| color565 . b;
585// }
586//
587// void modifyMinMax(inout uvec3 minColor, inout uvec3 maxColor){
588//     uvec3 minColor565 = scaleColorToRGB565(minColor);
589//     uvec3 maxColor565 = scaleColorToRGB565(maxColor);
590//     if(all(equal(minColor565, maxColor565))){
591//         uvec3 simulatedColor = convertRGB565ToRGB888(minColor565);
592//         ivec3 signMax = sign(ivec3(maxColor)- ivec3(simulatedColor));
593//         ivec3 signMin = sign(ivec3(minColor)- ivec3(simulatedColor));
594//         bvec3 needCorrect = greaterThan(signMax * signMin, ivec3(0, 0, 0));
595//         bvec3 positive = greaterThan(signMin, ivec3(0, 0, 0));
596//         maxColor565 . r += needCorrect . r && positive . r ? 1 : 0;
597//         maxColor565 . g += needCorrect . g && positive . g ? 1 : 0;
598//         maxColor565 . b += needCorrect . b && positive . b ? 1 : 0;
599//         minColor565 . r -= needCorrect . r && ! positive . r ? 1 : 0;
600//         minColor565 . g -= needCorrect . g && ! positive . g ? 1 : 0;
601//         minColor565 . b -= needCorrect . b && ! positive . b ? 1 : 0;
602//     }
603//     minColor = minColor565;
604//     maxColor = maxColor565;
605// }
606//
607// void swap(inout uint a, inout uint b){
608//     uint t = a;
609//     a = b;
610//     b = t;
611// }
612//
613// void main()
614// {
615//     ivec2 coord = build_coord();
616//     if(any(greaterThanEqual(coord, ivec2(width, height))))
617//         return;
618//
619//     ivec2 tile_coord = coord >> 2;
620//     ivec2 pixel_coord = coord & 3;
621//     int linear_pixel = 4 * pixel_coord . x + pixel_coord . y;
622//     int pid = 4 * pixel_coord . y + pixel_coord . x;
623//     uvec4 payload = texelFetch(uInputBuffer, tile_coord . y * int((width + 3)>> 2)+ tile_coord . x + texelOffset);
624//
625//     ivec4 result;
626//
627//     result . r = decode_etc2_alpha(flip_endian(payload . xy), linear_pixel);
628//     if(isEacRg != 0){
629//         result . g = decode_etc2_alpha(flip_endian(payload . zw), linear_pixel);
630//     }
631//
632//     uvec4 finalResult;
633//
634//     finalResult . rg = EncodeBC4(result . r, pid);
635//     if(isEacRg != 0)
636//         finalResult . ba = EncodeBC4(result . g, pid);
637//
638//     if(pid == 0){
639//         tile_coord += ivec2(offsetX / 4, offsetY / 4);
640//         imageStore(uOutput, tile_coord, finalResult);
641//     }
642//
643// }
644