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