| // GENERATED FILE - DO NOT EDIT. |
| // Generated by gen_vk_internal_shaders.py. |
| // |
| // Copyright 2018 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // shaders/gen/EtcToBc.comp.00000001.inc: |
| // Pre-generated shader for the ANGLE Vulkan back-end. |
| |
| #pragma once |
| constexpr uint8_t kEtcToBc_comp_00000001[] = { |
| 0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x6d,0x59,0x69,0x90,0x55,0xd5, |
| 0x11,0xbe,0xa7,0xcf,0x61,0x06,0x90,0xb8,0x1b,0xd7,0x88,0x8a,0x55,0x56,0x14,0x70, |
| 0x0a,0x11,0x06,0x18,0xd4,0x8c,0xcb,0x58,0x81,0x52,0xc3,0xb8,0x11,0x17,0x16,0x67, |
| 0x52,0x6a,0x4a,0x4c,0x04,0x05,0x65,0x15,0x05,0x91,0x45,0x88,0x18,0x93,0xa0,0xfe, |
| 0x88,0x29,0x51,0x5c,0x71,0xc1,0xad,0x34,0x61,0x1d,0x04,0x37,0x12,0x31,0x8e,0x80, |
| 0x14,0xd1,0x10,0xa3,0x65,0x2c,0x0b,0x63,0x89,0x46,0x9d,0x9c,0x7e,0xdf,0xd7,0xbc, |
| 0x7e,0xcf,0x79,0x55,0xb7,0xee,0xed,0xaf,0x97,0xd3,0xa7,0x4f,0x9f,0xee,0x73,0xef, |
| 0x8b,0xd2,0xab,0xb6,0x88,0xa1,0xe8,0x5e,0x74,0x2d,0xd6,0xa7,0xa2,0xf4,0xdb,0xaf, |
| 0x90,0x22,0xf0,0xde,0x97,0xf7,0xa1,0xbc,0x9f,0x9e,0xef,0x7b,0x15,0x35,0x25,0x7e, |
| 0xd3,0xf0,0xe6,0xe1,0x7d,0xc7,0x4f,0x68,0xe9,0xdb,0xff,0xe4,0x3a,0xd5,0xdb,0xbb, |
| 0x88,0x25,0x7d,0xe5,0xed,0x53,0xd4,0x16,0x5d,0xf2,0x5d,0x4d,0x5e,0x33,0xe6,0xaa, |
| 0x71,0x8a,0xbf,0x9d,0xaf,0x6d,0xf9,0xda,0x37,0xeb,0xa7,0x92,0xbd,0xa2,0x38,0x8d, |
| 0xf2,0x7a,0x9d,0x9d,0x35,0x4e,0x86,0x0b,0x45,0x2f,0xde,0x0d,0x0b,0xc4,0x92,0xc3, |
| 0x84,0x58,0x57,0x87,0x45,0x62,0x3d,0x1c,0x96,0x88,0xed,0xeb,0xb0,0x2e,0xc4,0x0e, |
| 0x74,0x58,0x0d,0xb1,0x43,0x1c,0x56,0x4b,0xec,0x08,0x9d,0x6f,0xb6,0x6e,0xe3,0x36, |
| 0x65,0xab,0x6f,0x97,0x62,0x51,0x14,0x87,0x91,0xde,0x46,0xfa,0x70,0xd2,0x2f,0x64, |
| 0xa7,0x8f,0xe1,0x3c,0x8c,0x3e,0xda,0xd1,0x7b,0x4b,0x25,0x5f,0xe9,0xa3,0x39,0x57, |
| 0x1d,0x4b,0xe9,0x43,0xc9,0x3b,0x40,0x60,0x5b,0xe9,0x03,0xb2,0x07,0xea,0xc3,0xd1, |
| 0x59,0x26,0xd2,0x9f,0x83,0xb2,0x8c,0xfa,0x7f,0x14,0xed,0x1d,0x9c,0xe9,0x5a,0xce, |
| 0x49,0x4a,0x78,0x2a,0xc5,0xa9,0x96,0x97,0xca,0x77,0xa3,0x7c,0x20,0xbf,0x3b,0x79, |
| 0xdd,0xa8,0xbf,0x2f,0x9f,0x4d,0xff,0x40,0xf2,0xd5,0xe6,0x09,0xd4,0x3f,0x31,0x5f, |
| 0x7d,0x1c,0x5d,0xc7,0x35,0x38,0x32,0x5b,0xb3,0x98,0xd6,0xd0,0x4e,0x4d,0x27,0x97, |
| 0xda,0x1d,0x40,0xbe,0xca,0x0f,0x21,0x3d,0x90,0x98,0xd9,0xad,0x77,0xf2,0x83,0x9c, |
| 0xbd,0x13,0x38,0xef,0x06,0xce,0xfb,0x40,0xe6,0xaa,0xe1,0x8d,0x9c,0x9f,0xd9,0x39, |
| 0x8b,0xeb,0x6b,0x74,0x13,0xf3,0xc7,0xe8,0x11,0xcc,0x09,0xa3,0x9b,0x99,0x3f,0x46, |
| 0x8f,0x64,0x1e,0x19,0x7d,0x39,0x73,0xc9,0xe8,0x2b,0xf2,0xd5,0xd3,0xd1,0xad,0x8c, |
| 0x9f,0xc6,0xf3,0x7a,0xfa,0x9d,0x9c,0x7f,0x37,0xd0,0xde,0x11,0x99,0x9e,0x98,0xef, |
| 0xd7,0x13,0x33,0xfd,0x49,0xa5,0x7d,0x55,0x14,0xbd,0x73,0xe4,0x95,0x77,0x23,0x6d, |
| 0x5e,0x4e,0xdf,0x27,0x39,0xd9,0x9b,0xaa,0x62,0x36,0x99,0xfb,0xc0,0x74,0xa7,0x50, |
| 0xb7,0x9e,0xb2,0x93,0x9d,0xec,0xd4,0xaa,0x38,0x4d,0xe3,0x5a,0x9b,0xee,0x74,0xca, |
| 0x34,0x93,0x37,0xd9,0xf1,0x66,0x90,0x57,0x47,0xbf,0xbc,0xdd,0x9b,0xb9,0x27,0x4c, |
| 0x76,0xa6,0xf3,0x7f,0x1a,0xf9,0x26,0x7b,0x4b,0xbe,0xba,0x3b,0xd9,0x5b,0x9d,0xbf, |
| 0x4d,0xe4,0x1b,0x6f,0x16,0xc7,0xab,0xa7,0x1d,0xcf,0x9b,0x4d,0xbd,0xe6,0x4e,0x78, |
| 0xb7,0xd1,0x57,0x1b,0xff,0x26,0xc7,0x9b,0x53,0x35,0x47,0xcf,0xbb,0xdd,0xcd,0xb1, |
| 0x9a,0x37,0xd7,0xe9,0xd5,0x57,0xf1,0xe6,0xd1,0x97,0x3a,0xc7,0xb3,0xf9,0xce,0x67, |
| 0xce,0x9a,0xec,0x02,0x62,0x53,0xa9,0xe3,0xed,0xdc,0xe1,0xe2,0x3b,0x8d,0xf1,0x30, |
| 0xde,0x42,0x37,0xdf,0xfa,0x3d,0xbc,0x03,0x4a,0xf9,0xb4,0x88,0x39,0x33,0x85,0x6b, |
| 0x38,0x83,0x6b,0x70,0x2b,0x63,0x38,0x9b,0x31,0x99,0xc3,0x39,0xce,0xa5,0xcf,0x0b, |
| 0x38,0xe6,0x42,0xee,0xb9,0xc5,0xcc,0x87,0x89,0xce,0xff,0xe5,0x9a,0x33,0xdf,0x74, |
| 0x74,0x18,0xfd,0x6c,0xbe,0x3a,0x62,0x99,0xff,0x9c,0xd2,0x59,0xe9,0x87,0xb9,0x22, |
| 0xbc,0xcc,0x5a,0xa3,0x3c,0x7d,0x5e,0x53,0x9a,0xf9,0x77,0x8d,0x46,0xaf,0x2d,0xd1, |
| 0xd3,0x4f,0x37,0xfa,0x75,0x84,0xe6,0x54,0xdd,0x37,0x6f,0x71,0xaf,0x47,0xfa,0xb2, |
| 0x99,0xb9,0xfa,0x16,0xeb,0xc5,0x66,0xf6,0x96,0xe0,0xf6,0x55,0x3b,0xf7,0xb5,0xf1, |
| 0xb7,0xb9,0x3a,0xf7,0x1e,0x9f,0x7d,0xfd,0xd8,0x51,0xb5,0x2f,0x77,0x96,0x7a,0x58, |
| 0x99,0xfe,0x94,0xfb,0xd8,0xe8,0x2f,0xe9,0x8f,0xfa,0x27,0x01,0xb6,0xbc,0x7e,0x6d, |
| 0x40,0x9d,0xd1,0x35,0x52,0x7e,0xd7,0x80,0x1a,0xd5,0xce,0xfd,0xad,0x7c,0x93,0xed, |
| 0x9e,0x9f,0x3b,0x5c,0x6c,0x06,0xa8,0x73,0xc5,0x8e,0xd3,0x8c,0xae,0x0f,0x08,0xc6, |
| 0x9e,0x5a,0x97,0xe9,0x5f,0x5f,0xd8,0x5f,0x8c,0x1e,0x1d,0x2a,0x6b,0xd0,0x75,0x99, |
| 0xfe,0x91,0x93,0x9f,0x10,0x2a,0x6b,0xf4,0x74,0x8e,0xa7,0xbe,0xff,0x21,0x3f,0x0f, |
| 0xe5,0xdc,0x0e,0xcd,0xdc,0x67,0x39,0x97,0x2e,0x45,0xe5,0x8f,0x2e,0xe4,0xde,0x16, |
| 0x8b,0xe7,0x32,0xa1,0x72,0x1a,0xcb,0xe7,0xc9,0x50,0x6c,0x08,0xe9,0x17,0x88,0x29, |
| 0xbf,0x2d,0xa0,0x26,0x75,0xa3,0xfd,0x1e,0x02,0xfb,0xa1,0xca,0xbe,0x94,0x7a,0x06, |
| 0x74,0x7e,0x20,0xc0,0x54,0x76,0x08,0xe9,0xbd,0xa5,0x32,0x06,0xfb,0x0b,0xce,0x0e, |
| 0xbd,0x33,0xa5,0x79,0xa0,0xfd,0x51,0xb1,0x46,0xd6,0xfc,0xde,0x79,0x06,0x9a,0xaf, |
| 0x8b,0x12,0x62,0xde,0x4e,0x4c,0x6b,0xed,0x6f,0x12,0xf6,0x4b,0xab,0xc3,0xee,0x4c, |
| 0xd8,0x5f,0x75,0x6e,0xcd,0x16,0x27,0xac,0x8d,0xbf,0x42,0x9e,0xbf,0xee,0xb9,0x25, |
| 0x09,0xcf,0x2a,0xf7,0x68,0x2a,0xc7,0xb6,0x2d,0xa1,0x27,0x0e,0xc8,0x76,0x85,0x39, |
| 0x51,0x30,0x57,0x76,0x67,0xa4,0x0b,0x73,0x52,0xf7,0xd3,0x99,0x11,0x7b,0xca,0xe8, |
| 0xfb,0xa4,0x4c,0x6b,0xee,0xfe,0x2d,0x54,0xd2,0x3b,0x48,0x7f,0x99,0xad,0xf5,0x65, |
| 0x3c,0xfe,0x97,0x9f,0x35,0xaf,0x4e,0x14,0xd8,0xd7,0xfb,0x50,0xee,0x99,0x41,0x82, |
| 0x7d,0x71,0x6e,0xd6,0x52,0xbd,0xc1,0x02,0x6c,0x90,0x94,0xd7,0xf4,0x56,0xc6,0xa9, |
| 0x41,0xc0,0xd7,0x78,0xfd,0x24,0x63,0xba,0x47,0x86,0x0a,0xf6,0x8d,0xda,0x1f,0xca, |
| 0xb8,0x9f,0x22,0xc0,0x57,0x67,0x19,0xa5,0x4f,0x15,0x60,0xba,0x7f,0xd6,0x13,0x6b, |
| 0x24,0xb6,0xd3,0x61,0x67,0x08,0x64,0x1b,0x39,0xa6,0x62,0x67,0x52,0x4f,0x79,0x3f, |
| 0x23,0xd6,0x24,0xf0,0xa5,0x28,0xd5,0x2a,0x60,0x67,0x0b,0x70,0x95,0x1f,0x91,0x11, |
| 0xf5,0xf7,0xca,0x04,0xdc,0x64,0x6d,0x9c,0x61,0x1c,0xe7,0x53,0x37,0xce,0x70,0xd2, |
| 0xc3,0xdc,0x38,0xe7,0x50,0x37,0xb8,0x71,0xce,0x15,0xe0,0xc3,0xdd,0x38,0xbf,0x4c, |
| 0xc0,0xaf,0x4c,0x90,0xb5,0x71,0x46,0x08,0xe6,0xa9,0x75,0xc0,0x62,0x71,0x3e,0x31, |
| 0xcd,0xab,0xf3,0x18,0xd7,0x0b,0x04,0xb2,0xca,0x9b,0x41,0xec,0x22,0x81,0x5d,0xe5, |
| 0x4d,0xe1,0x39,0x6b,0xa4,0x00,0xd7,0xd8,0xeb,0xf9,0xe6,0xce,0x80,0x33,0x50,0x9d, |
| 0x8b,0xfd,0xe2,0x00,0x7c,0x0a,0x73,0xed,0xae,0x00,0xcc,0x74,0x7e,0x4b,0x9d,0x66, |
| 0xa7,0x73,0x77,0x00,0x6e,0x3a,0xbf,0x0b,0xc0,0xce,0x63,0xde,0xff,0x3e,0xc0,0x8e, |
| 0xe2,0x4f,0x64,0x4c,0xeb,0xc1,0x92,0x00,0x7f,0x94,0xb7,0x24,0xeb,0x69,0x7d,0xb8, |
| 0x87,0xb8,0xe6,0xde,0x7d,0xdc,0xbc,0x5f,0x67,0x9e,0xe2,0xf7,0xe6,0x4b,0x31,0xcd, |
| 0x3f,0x7d,0xfe,0x4a,0xdf,0x1b,0x98,0x8f,0x8a,0xaf,0xe1,0x58,0xf7,0xd3,0xae,0xee, |
| 0xbf,0xf5,0xc4,0x96,0x12,0xd3,0xfd,0xa7,0x6b,0xa3,0x3e,0x2e,0x0b,0xc0,0x0b,0xae, |
| 0xa1,0x62,0x0f,0x07,0xcc,0x4b,0x79,0x26,0xf7,0x28,0xe5,0x6c,0x0d,0x15,0x7b,0x2c, |
| 0x40,0x56,0x79,0xa6,0xfb,0x24,0x75,0x15,0x33,0xb9,0x67,0x02,0xf0,0x65,0x01,0xb1, |
| 0xd2,0xfa,0xf5,0x22,0x6b,0x97,0xd9,0x7f,0x29,0xc0,0x67,0x9f,0x23,0x7f,0x61,0xcc, |
| 0xfd,0xba,0xaf,0x0c,0xc0,0x5b,0x8b,0x72,0x9c,0x57,0x05,0xe0,0xe6,0xc3,0xea,0x00, |
| 0x7b,0xab,0x9c,0xfd,0xb5,0xb4,0x5f,0x38,0xff,0xd7,0x05,0xc8,0xae,0xe5,0xba,0x6a, |
| 0xfd,0x5c,0xcf,0x75,0x6d,0xe5,0xba,0xaa,0xdc,0x2b,0xc4,0x4d,0x6f,0x43,0x80,0xae, |
| 0xe2,0x2d,0x59,0x46,0xeb,0xf3,0x46,0xce,0x69,0x94,0xd6,0xa2,0x7c,0x7f,0x95,0xd8, |
| 0x86,0x50,0xde,0x07,0xa3,0x04,0x78,0x28,0xe5,0x2c,0xea,0xde,0x55,0x02,0xdc,0x5f, |
| 0xab,0x69,0xe3,0x6a,0x01,0x5f,0xfb,0xd9,0x7a,0x62,0xd7,0x08,0xf0,0xc5,0xa9,0x6c, |
| 0xf7,0x5a,0x01,0x5e,0x94,0x7a,0x3b,0xb0,0x5f,0x09,0xf0,0x5a,0x37,0xfe,0x75,0x94, |
| 0x0b,0x4e,0x6e,0xbc,0x00,0xd7,0x3e,0xb9,0x8e,0xd8,0x04,0x81,0xfe,0x78,0xb7,0x87, |
| 0x6f,0xa0,0xae,0x38,0xdd,0x89,0x02,0xbc,0xdd,0xe9,0x4e,0x12,0xe8,0x4f,0x74,0xba, |
| 0x37,0x51,0x37,0x3a,0xdd,0xc9,0x02,0xbc,0xc1,0xe9,0x4e,0x11,0xe8,0x4f,0x76,0xba, |
| 0x63,0x19,0xb3,0xc2,0xc5,0xec,0x66,0x01,0xee,0x2f,0x8b,0xd9,0x4c,0x01,0xdf,0xc7, |
| 0x6c,0x96,0x00,0xf7,0x31,0xbb,0x4d,0x80,0xfb,0x98,0xcd,0x11,0xe0,0x3e,0x66,0x73, |
| 0x29,0xe7,0x63,0x36,0x4f,0x80,0xfb,0x98,0xcd,0x17,0xe8,0xcf,0x73,0xbe,0xdf,0x41, |
| 0x5d,0x1f,0xb3,0x85,0x02,0xdc,0xc7,0x6c,0x91,0x40,0x7f,0xa1,0xd3,0xbd,0x93,0xba, |
| 0x3e,0x66,0x8b,0x05,0xb8,0x8f,0xd9,0x5d,0x02,0x7d,0xe5,0x59,0x1d,0x6c,0x11,0xc4, |
| 0x52,0x79,0xa7,0x64,0x0b,0xda,0xdb,0x14,0xb3,0xfd,0xb1,0x54,0x50,0xeb,0x74,0xff, |
| 0xce,0x24,0xf6,0xa0,0xa0,0x97,0x2e,0x75,0x75,0xf1,0x21,0xc1,0x5e,0xa8,0x77,0x35, |
| 0x6e,0x99,0x00,0x7f,0x24,0xcb,0x68,0xad,0x7a,0x58,0x80,0x35,0xb0,0x57,0xae,0x90, |
| 0x72,0xbd,0x52,0xde,0x23,0xf9,0x5a,0xce,0xfa,0xf4,0x08,0x6d,0xeb,0x3b,0xdf,0xa3, |
| 0x82,0x9e,0xdb,0xe8,0x6c,0x3f,0x26,0xc0,0x6d,0x5f,0x3f,0x2e,0xc0,0x36,0x66,0xae, |
| 0xd2,0x4f,0x08,0xb0,0xb3,0x78,0xee,0xd6,0xda,0xb7,0x82,0xb6,0x97,0x3b,0xdb,0x4f, |
| 0x76,0x62,0xfb,0x29,0x01,0xfe,0x6a,0xa6,0x94,0x7e,0x5a,0x80,0x99,0x2d,0x1b,0xf3, |
| 0x19,0x01,0xcf,0xdb,0xd6,0xfb,0x17,0x39,0xb2,0xa5,0x3e,0x90,0xe0,0x87,0xce,0xe5, |
| 0x19,0xce,0xcd,0xc6,0x7d,0xae,0x93,0x71,0x9f,0x17,0xe0,0x36,0xee,0x0b,0x02,0x6c, |
| 0x04,0x7b,0x87,0x8d,0xfb,0xa2,0x80,0x67,0x7a,0x2f,0x55,0xe9,0xbd,0x2c,0xc0,0x46, |
| 0x56,0xe9,0xfd,0x59,0xc0,0x5b,0xc3,0x75,0x5c,0x29,0x58,0x4b,0x7d,0x77,0x31,0xbf, |
| 0x56,0xd1,0xaf,0x95,0xce,0xfe,0x6a,0x01,0xbe,0xde,0xea,0x23,0xf5,0xf4,0x9d,0xda, |
| 0xc6,0x5c,0x27,0x90,0x5b,0x2b,0x95,0xf5,0xb6,0x4d,0xc0,0xb3,0xdc,0x79,0x45,0x70, |
| 0x16,0x5b,0xea,0xfc,0xd8,0x28,0xc0,0xbd,0x1f,0xaf,0xd2,0x8f,0x8d,0xce,0x8f,0xd7, |
| 0x04,0xb8,0xf9,0xf1,0x06,0xf5,0xae,0x70,0x35,0xff,0x4d,0x81,0xdc,0x1b,0x52,0x3e, |
| 0x13,0x6c,0x12,0xe0,0x8d,0xce,0xaf,0xbf,0x0a,0x70,0xcd,0x79,0x3d,0xdf,0x2d,0x2a, |
| 0x8d,0x5d,0x53,0x7a,0xcf,0xdd,0x2c,0x38,0xf3,0x69,0xbc,0xda,0xa4,0x5c,0xdb,0xdf, |
| 0x16,0xf0,0x6c,0x2e,0xef,0x08,0xec,0xe8,0x7b,0x61,0x1b,0xb1,0x76,0x81,0xdc,0x3b, |
| 0x6e,0x0f,0x6d,0x11,0xe4,0x42,0x93,0xeb,0x27,0x5b,0x05,0xb8,0xae,0x8f,0xed,0x8f, |
| 0xf7,0x04,0x6b,0x3b,0x9f,0xfb,0x63,0xa7,0xdb,0x1f,0xca,0xdb,0x9e,0xaf,0x0f,0x98, |
| 0x67,0xdb,0x9d,0xfd,0x7f,0x08,0xc6,0x7d,0xd1,0x61,0xef,0x0b,0x70,0xcb,0xfd,0x9d, |
| 0xd4,0xfb,0x40,0x2a,0xe9,0x9d,0x2e,0x5f,0xef,0x4e,0xd0,0xdb,0x4e,0x7b,0x1f,0x48, |
| 0xd9,0xdf,0x7f,0x0b,0x7c,0x56,0x99,0x65,0xdc,0x63,0x9f,0x08,0xf6,0xf4,0x72,0xbe, |
| 0x1f,0x1b,0xfe,0x19,0xf1,0x67,0xf9,0xae,0xd9,0x23,0x9f,0x92,0x15,0xff,0x2f,0x6b, |
| 0x63,0x1f,0xda,0x53,0x7d,0x95,0x55,0x3d,0x7d,0x9f,0xda,0x4d,0xbd,0x35,0x7c,0xef, |
| 0xbc,0x96,0xef,0x59,0x5f,0x0b,0x74,0x8d,0xfe,0x86,0x7a,0x73,0xb2,0x6f,0x4a,0x7f, |
| 0x2b,0x90,0x51,0x7c,0x16,0xb1,0x0e,0x01,0xae,0x36,0x6f,0x26,0xa6,0x05,0x52,0x71, |
| 0x7d,0x87,0x1d,0xc7,0x35,0x0d,0x11,0xb8,0x9e,0x2b,0xf5,0xfd,0x61,0x6a,0x02,0xb6, |
| 0x84,0x2f,0x08,0x56,0xdf,0xde,0x61,0xaf,0x9f,0xe6,0xf6,0x6b,0x7b,0x00,0x6e,0xeb, |
| 0xf7,0x6e,0x00,0x66,0xf5,0x6d,0xab,0x3b,0x8f,0x29,0x6f,0x4b,0xbe,0xb6,0xf2,0x3c, |
| 0xb6,0xc5,0xf5,0x8d,0xda,0x88,0xbe,0x15,0x5d,0xdf,0xda,0x2f,0x02,0xf7,0x97,0xf5, |
| 0xad,0xfd,0x23,0xf8,0xbe,0x6f,0x1d,0x14,0x81,0xfb,0xbe,0x75,0x70,0x04,0xee,0xfb, |
| 0xd6,0x21,0x11,0xb8,0xef,0x5b,0x87,0x51,0xce,0xf7,0xad,0xc3,0x23,0x70,0xdf,0xb7, |
| 0x8e,0x88,0xd0,0x57,0x9e,0xe9,0x1e,0x49,0x5d,0xdf,0xb7,0x7a,0x46,0xe0,0xbe,0x6f, |
| 0x1d,0x15,0xa1,0xdf,0xd3,0xe9,0x1e,0x43,0x5d,0xdf,0xb7,0x7a,0x45,0xe0,0xbe,0x6f, |
| 0x1d,0x1b,0xa1,0xdf,0xcb,0xe9,0x76,0x67,0xcc,0xc4,0xc5,0xec,0xc7,0x11,0xb8,0xbf, |
| 0x2c,0x66,0xc7,0x47,0xf0,0x7d,0xcc,0xfa,0x44,0xe0,0x3e,0x66,0x27,0x46,0xe0,0x3e, |
| 0x66,0x75,0x11,0xb8,0x8f,0x59,0x3f,0xca,0xf9,0x98,0x9d,0x14,0x81,0xfb,0x98,0xf5, |
| 0x8f,0xd0,0x3f,0xc9,0xf9,0x3e,0x80,0xba,0x3e,0x66,0x03,0x23,0x70,0x1f,0xb3,0xfa, |
| 0x08,0xfd,0x81,0x4e,0x77,0x30,0x75,0x7d,0xcc,0x86,0x44,0xe0,0x3e,0x66,0x0d,0x11, |
| 0xfa,0xca,0xb3,0x5e,0xdf,0x23,0x22,0x96,0xca,0xd3,0xba,0xa7,0xef,0xad,0x8a,0x69, |
| 0xae,0x5e,0x16,0x2b,0x7b,0x71,0x73,0xa6,0x2f,0x8e,0xc8,0x55,0x7d,0xb6,0xba,0x7c, |
| 0x7e,0xc4,0xfb,0xae,0xef,0x5b,0x17,0x44,0xe0,0x56,0x5b,0x2f,0x8c,0xc0,0xac,0x17, |
| 0x5f,0x14,0x81,0xf9,0x5e,0x7c,0x19,0x6d,0x5f,0xec,0x6c,0x8f,0xec,0xc4,0xf6,0xcf, |
| 0x23,0x70,0xeb,0x33,0x97,0x44,0x60,0xd5,0xbd,0xf8,0xd2,0x08,0x9e,0xb7,0xad,0x77, |
| 0xab,0x6d,0xf7,0x24,0xf8,0xa1,0x73,0xb9,0x94,0x73,0xb3,0x71,0x47,0x75,0x32,0xee, |
| 0xe8,0x08,0xdc,0xc6,0x1d,0x13,0x81,0x55,0xf7,0xe2,0xb1,0x11,0x3c,0xd3,0x6b,0xa9, |
| 0xd2,0x6b,0x8d,0xc0,0xaa,0x7b,0xf1,0x2f,0x22,0x78,0xe6,0xc3,0x55,0xf4,0xc1,0xf7, |
| 0xdd,0xab,0x23,0x70,0xb3,0x75,0x4d,0x04,0x56,0xdd,0x63,0xc7,0x45,0xf0,0xcc,0xd6, |
| 0x78,0xda,0xf2,0xbd,0x73,0x42,0x04,0x6e,0x7d,0x72,0x62,0x04,0xe6,0xfb,0xe4,0xa4, |
| 0x08,0xdc,0xf7,0xc9,0x1b,0x23,0x70,0xcd,0x17,0xfd,0x2e,0xe2,0xfb,0xe4,0x94,0x88, |
| 0x6f,0x25,0x3a,0x97,0x71,0xb1,0xdc,0x27,0xa7,0x46,0xf0,0xac,0x4f,0x4e,0x8f,0xb0, |
| 0xe3,0xfb,0xe4,0x8c,0x08,0x39,0xe5,0x59,0xcf,0x9a,0x19,0xb1,0x4e,0xbe,0x4f,0xde, |
| 0x12,0x81,0xfb,0x3e,0x39,0x2b,0x22,0xee,0xd6,0x27,0x17,0xb8,0xdc,0x55,0xde,0xec, |
| 0x7c,0xcd,0x63,0x0e,0xcc,0x76,0xf6,0x6f,0x8f,0x18,0x77,0xac,0xc3,0xe6,0x46,0xe0, |
| 0x96,0x97,0x0b,0xa8,0x37,0x2f,0x56,0xd2,0x0b,0x5c,0x2e,0xdd,0x97,0xa0,0x37,0x9b, |
| 0xf6,0x54,0xd6,0xfc,0x5d,0x14,0xe1,0xb3,0xca,0x58,0xdf,0xbb,0x37,0x96,0xfb,0x9e, |
| 0xf2,0xad,0xef,0x59,0x3f,0xbb,0x3f,0x42,0xc6,0xfa,0xd9,0x03,0x11,0x98,0xef,0x67, |
| 0x0f,0x46,0xe0,0xbe,0x9f,0x3d,0x14,0x81,0xfb,0x7e,0xb6,0x2c,0x02,0xb7,0x7e,0x76, |
| 0x7b,0x02,0x36,0x95,0xdf,0x49,0x74,0x4e,0xd6,0x83,0xf4,0xfe,0x05,0xbf,0x55,0xff, |
| 0x31,0x41,0x46,0xcf,0x03,0xaa,0xb3,0x80,0xfb,0x59,0xf3,0xe2,0xc3,0x80,0xf7,0x72, |
| 0x7b,0x3f,0xfe,0x38,0x40,0x5e,0x7f,0x63,0x02,0x62,0xf2,0x59,0x2c,0x7f,0x7b,0x55, |
| 0xbe,0xd6,0xc0,0x16,0xf2,0x76,0x75,0xc2,0xb3,0xb5,0x5c,0x19,0xa1,0xbb,0x8b,0x75, |
| 0xa8,0xcd,0xad,0xa5,0xf2,0x56,0xe5,0xab,0x8d,0x6b,0xb0,0xca,0xe5,0xd4,0x57,0xd4, |
| 0x51,0xdd,0x3d,0xe7,0x84,0x08,0xdc,0x64,0xbe,0x8d,0x18,0xcf,0xcb,0x7c,0x17,0x81, |
| 0x5b,0xac,0xf5,0x43,0xa0,0x62,0xaa,0x6b,0xb1,0x0e,0x09,0xb8,0x7e,0xef,0xd5,0x35, |
| 0x54,0x4c,0x92,0x7d,0xc7,0x06,0x5f,0xbf,0xfd,0x82,0x8f,0xb3,0x4b,0x4c,0xe5,0xff, |
| 0x4b,0x55,0xd6,0xd6,0x23,0x25,0xf0,0x2c,0xdf,0x6a,0x12,0xb0,0x66,0x77,0x76,0xae, |
| 0x4d,0xf8,0x76,0x5c,0x43,0x5c,0xd7,0xc8,0xe6,0xdc,0xc6,0xbc,0x53,0xb9,0xfb,0x13, |
| 0x6a,0xbc,0xae,0x9b,0xea,0x68,0x3c,0x9e,0x62,0x1c,0x5f,0x89,0x58,0xa7,0xd1,0xfc, |
| 0x16,0xb4,0xc9,0xc5,0x51,0x79,0x1b,0xf2,0xf5,0x26,0x6d,0x6e,0x88,0xe5,0x6f,0x70, |
| 0xaf,0x71,0x6d,0x3e,0x0c,0xe5,0x6f,0x29,0xaf,0xb3,0x87,0x29,0xcf,0x7a,0xcc,0x1b, |
| 0x11,0xe3,0xbf,0xce,0x7d,0xb1,0x89,0xb6,0xde,0xac,0xa2,0x37,0x39,0x7f,0xff,0x94, |
| 0xa0,0xb7,0x81,0xbd,0x49,0x65,0x1f,0xa7,0xbf,0x6f,0x55,0xf9,0xbb,0xcd,0xf9,0xab, |
| 0xbc,0xcd,0xf9,0xda,0x4a,0x9b,0x9b,0x9d,0x1f,0x7f,0xa7,0x1f,0xd7,0x85,0xf2,0x1c, |
| 0xda,0xdd,0x1c,0x66,0x12,0x7b,0x37,0xe2,0xfb,0x7a,0xbb,0xab,0x79,0x5b,0x22,0xf4, |
| 0xdf,0xa5,0xcf,0xdb,0x68,0x7f,0x6b,0x15,0xbd,0xcd,0xcd,0xe1,0x81,0x04,0xbd,0xcd, |
| 0x9c,0xc3,0x56,0xd7,0x4f,0xb7,0x47,0xcc,0x51,0x65,0xae,0x0c,0xf8,0x96,0xbb,0xc3, |
| 0xe5,0xfa,0x76,0xc6,0xd1,0xde,0x57,0xde,0x67,0xce,0x4e,0x0f,0x65,0xec,0x9f,0xcc, |
| 0x61,0xc5,0xd6,0x12,0xdb,0x19,0x81,0x37,0xb1,0x9f,0x2b,0xf6,0xaf,0x08,0xfd,0x9d, |
| 0x7e,0x5f,0x46,0xe0,0x76,0x36,0xf8,0x28,0x62,0xfc,0xc2,0x9d,0x03,0x3e,0x8e,0x90, |
| 0xfb,0xc8,0xc9,0x7d,0x42,0xb9,0xe0,0xbe,0x87,0xfe,0x27,0x42,0x56,0x79,0xe7,0xe6, |
| 0x11,0xf5,0x7c,0xf4,0x29,0xbf,0xa1,0x2b,0x2f,0xf1,0xbf,0x07,0xe1,0xdc,0x74,0xcd, |
| 0x3e,0xaf,0x3a,0xdf,0xee,0xca,0xd7,0xe7,0xac,0x2d,0xbb,0x5c,0xbd,0xd8,0xcd,0x7a, |
| 0x11,0x5c,0xbd,0x38,0x27,0x95,0xe3,0xb4,0xbb,0xaa,0x5e,0x9c,0xd7,0x09,0xcf,0xea, |
| 0xc5,0x91,0x09,0xba,0x90,0x89,0xc5,0xb1,0xa9,0xec,0x83,0xf2,0x7a,0xe6,0x4b,0x31, |
| 0xf5,0x41,0x9f,0xad,0x16,0x5c,0x44,0x1d,0xd5,0xb5,0x5a,0x70,0x71,0x02,0x6e,0x32, |
| 0x97,0x24,0x8c,0xe7,0x65,0x2e,0x4d,0xc0,0xad,0x5e,0x5c,0x9e,0x80,0xa9,0xae,0xd5, |
| 0x8b,0x51,0x09,0xb8,0xaf,0x17,0xa3,0x5d,0xbd,0x18,0xd5,0x49,0xbd,0x18,0xe3,0xea, |
| 0xc5,0x68,0x57,0x2f,0xc6,0x26,0xf0,0xac,0x5e,0xb4,0x24,0x60,0xbe,0x5e,0xb4,0xb2, |
| 0x5e,0xb4,0xb8,0x7a,0x61,0x73,0xd6,0xbb,0xe5,0xee,0x53,0xac,0x17,0xba,0x16,0xad, |
| 0x8c,0x4d,0xe9,0x3f,0x8a,0x54,0x59,0x1b,0x8e,0xcb,0x74,0x1f,0xea,0x1f,0x97,0xca, |
| 0xfb,0xea,0xf8,0xf4,0xfd,0xda,0x70,0x42,0xc2,0x7a,0x28,0xcf,0xf6,0x64,0xef,0x84, |
| 0xb1,0x94,0x57,0xfa,0xc6,0x4c,0x5b,0x7d,0xaa,0xe8,0xbe,0xce,0xb7,0xa7,0x13,0xf4, |
| 0x8e,0xa3,0x8f,0x7d,0xe8,0xdb,0xe0,0x54,0x59,0x07,0xfa,0x65,0x7a,0x10,0xf5,0xfb, |
| 0xb9,0x31,0xfb,0x73,0x4c,0x5f,0x07,0x06,0xa4,0xef,0xd7,0x81,0x81,0x09,0x75,0x40, |
| 0x79,0x56,0x07,0xea,0x13,0xf4,0x07,0xd2,0xbf,0xc1,0xb4,0x3f,0xa8,0x8a,0x1e,0xec, |
| 0xfc,0x5d,0x91,0xa0,0xd7,0x8f,0xfe,0xaa,0xac,0xed,0x9d,0x86,0x84,0xf9,0xac,0x70, |
| 0x75,0xe0,0x14,0x97,0xc3,0x0d,0xa9,0xb2,0x0e,0x9c,0xc6,0x5c,0xf4,0x75,0xa0,0x91, |
| 0xb9,0xe9,0xeb,0xc0,0xe9,0x09,0xb8,0xaf,0x03,0x67,0x24,0xe8,0x2b,0xcf,0xea,0xc0, |
| 0x99,0x09,0xf8,0x9e,0xff,0x6a,0x12,0xc6,0xf7,0x75,0xe0,0xec,0x04,0xb9,0x26,0x27, |
| 0xf7,0x53,0xca,0xf9,0x3a,0x30,0x2c,0x41,0x56,0x79,0x56,0x07,0xbe,0x09,0xa8,0x01, |
| 0xc3,0x52,0xf9,0xff,0x29,0xab,0x03,0x1a,0x2f,0xdb,0xf3,0x9f,0xf3,0x3c,0xa1,0x3a, |
| 0xeb,0x12,0xea,0x87,0xd6,0x52,0xd5,0xd7,0x58,0x3e,0xcc,0x3d,0xfc,0x1d,0xcf,0x13, |
| 0x76,0x7e,0x2b,0xdc,0x77,0x0e,0xe5,0x75,0x70,0x00,0xb5,0xd9,0xe1,0xfe,0x47,0x09, |
| 0xfc,0xc6,0x38,0xdf,0x9d,0xd3,0x45,0x80,0xcf,0xe6,0x9c,0xa2,0x00,0xdb,0xe1,0xce, |
| 0xb0,0x49,0x80,0x9b,0x9d,0x2e,0xb4,0x33,0xd5,0xd9,0xa9,0x11,0xe0,0x66,0xa7,0x56, |
| 0x80,0x79,0x3b,0x5d,0x05,0xb8,0xfd,0x47,0xd3,0x4d,0x60,0xbb,0x2b,0xbf,0x93,0x28, |
| 0xb6,0x97,0xe0,0xbf,0x83,0x6e,0x3c,0x7b,0xeb,0x7f,0xa5,0xfb,0xf0,0x7f,0xd2,0x2b, |
| 0x32,0xad,0xcf,0x2a,0xb3,0x8e,0xb9,0x66,0xf3,0x2c,0xa4,0xf2,0xff,0x19,0xbd,0x7f, |
| 0x9b,0x23,0x5d,0x9f,0xaf,0xff,0x03,0xa4,0xb0,0x5e,0xa3,0x0c,0x26,0x00,0x00 |
| }; |
| |
| // Generated from: |
| // |
| // #version 450 core |
| // |
| // #extension GL_GOOGLE_include_directive : require |
| // |
| // #extension GL_KHR_shader_subgroup_clustered : enable |
| // #extension GL_KHR_shader_subgroup_shuffle : enable |
| // |
| // layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in; |
| // layout(binding = 0)uniform highp usamplerBuffer uInputBuffer; |
| // layout(binding = 1, rgba32ui)writeonly uniform uimage2D uOutput; |
| // |
| // layout(push_constant)uniform imagInfo { |
| // |
| // uint offsetX; |
| // uint offsetY; |
| // int texelOffset; |
| // uint width; |
| // uint height; |
| // uint alphaBits; |
| // uint isSigned; |
| // uint isEacRg; |
| // }; |
| // |
| // #line 1 "shaders/src/third_party/etc_decoder/etc_decoder.h" |
| // |
| // const ivec2 etc1_color_modifier_table[8]= ivec2[]( |
| // ivec2(2, 8), |
| // ivec2(5, 17), |
| // ivec2(9, 29), |
| // ivec2(13, 42), |
| // ivec2(18, 60), |
| // ivec2(24, 80), |
| // ivec2(33, 106), |
| // ivec2(47, 183)); |
| // |
| // const ivec4 etc2_alpha_modifier_table[16]= ivec4[]( |
| // ivec4(2, 5, 8, 14), |
| // ivec4(2, 6, 9, 12), |
| // ivec4(1, 4, 7, 12), |
| // ivec4(1, 3, 5, 12), |
| // ivec4(2, 5, 7, 11), |
| // ivec4(2, 6, 8, 10), |
| // ivec4(3, 6, 7, 10), |
| // ivec4(2, 4, 7, 10), |
| // ivec4(1, 5, 7, 9), |
| // ivec4(1, 4, 7, 9), |
| // ivec4(1, 3, 7, 9), |
| // ivec4(1, 4, 6, 9), |
| // ivec4(2, 3, 6, 9), |
| // ivec4(0, 1, 2, 9), |
| // ivec4(3, 5, 7, 8), |
| // ivec4(2, 4, 6, 8) |
| // ); |
| // |
| // const int etc2_distance_table[8]= int[](3, 6, 11, 16, 23, 32, 41, 64); |
| // |
| // int decode_etc2_alpha(uvec2 payload, int linear_pixel) |
| // { |
| // int bit_offset = 45 - 3 * linear_pixel; |
| // |
| // int base = isSigned != 0 ? bitfieldExtract(int(payload . y), 24, 8): int(bitfieldExtract(payload . y, 24, 8)); |
| // |
| // int multiplier = int(bitfieldExtract(payload . y, 20, 4)); |
| // int table = int(bitfieldExtract(payload . y, 16, 4)); |
| // |
| // int lsb_index = int(bitfieldExtract(payload[bit_offset >> 5], bit_offset & 31, 2)); |
| // bit_offset += 2; |
| // int msb = int((payload[bit_offset >> 5]>>(bit_offset & 31))& 1u); |
| // int mod = etc2_alpha_modifier_table[table][lsb_index]^(msb - 1); |
| // |
| // int a = base * 8 + 4; |
| // a += multiplier != 0 ? mod * multiplier * 8 : mod; |
| // int minValue = isSigned != 0 ? - 1023 : 0; |
| // int maxValue = isSigned != 0 ? 1023 : 2047; |
| // a = clamp(a, minValue, maxValue); |
| // float scale = isSigned != 0 ? 127.0f : 255.0f; |
| // return int(a / float(maxValue)* scale + 0.5f); |
| // |
| // } |
| // |
| // ivec4 DecodeRGB(ivec2 pixel_coord, uvec2 color_payload, int linear_pixel, inout bool punchthrough){ |
| // int alpha_result = 0xff; |
| // ivec3 rgb_result; |
| // ivec3 base_rgb; |
| // uint flip = color_payload . y & 1u; |
| // uint subblock = uint((pixel_coord[flip]& 2)>> 1); |
| // bool etc1_compat = false; |
| // |
| // if(alphaBits != 1 &&(color_payload . y & 2u)== 0u) |
| // { |
| // |
| // etc1_compat = true; |
| // base_rgb = ivec3(color_payload . yyy >>(uvec3(28, 20, 12)- 4u * subblock)); |
| // base_rgb &= 0xf; |
| // base_rgb *= 0x11; |
| // } |
| // else |
| // { |
| // int r = int(bitfieldExtract(color_payload . y, 27, 5)); |
| // int rd = bitfieldExtract(int(color_payload . y), 24, 3); |
| // int g = int(bitfieldExtract(color_payload . y, 19, 5)); |
| // int gd = bitfieldExtract(int(color_payload . y), 16, 3); |
| // int b = int(bitfieldExtract(color_payload . y, 11, 5)); |
| // int bd = bitfieldExtract(int(color_payload . y), 8, 3); |
| // |
| // int r1 = r + rd; |
| // int g1 = g + gd; |
| // int b1 = b + bd; |
| // |
| // if(uint(r1)> 31u) |
| // { |
| // int r1 = int(bitfieldExtract(color_payload . y, 56 - 32, 2))| |
| // (int(bitfieldExtract(color_payload . y, 59 - 32, 2))<< 2); |
| // int g1 = int(bitfieldExtract(color_payload . y, 52 - 32, 4)); |
| // int b1 = int(bitfieldExtract(color_payload . y, 48 - 32, 4)); |
| // int r2 = int(bitfieldExtract(color_payload . y, 44 - 32, 4)); |
| // int g2 = int(bitfieldExtract(color_payload . y, 40 - 32, 4)); |
| // int b2 = int(bitfieldExtract(color_payload . y, 36 - 32, 4)); |
| // uint da =(bitfieldExtract(color_payload . y, 34 - 32, 2)<< 1)| |
| // (color_payload . y & 1u); |
| // int dist = etc2_distance_table[da]; |
| // |
| // int msb = int((color_payload . x >>(15 + linear_pixel))& 2u); |
| // int lsb = int((color_payload . x >> linear_pixel)& 1u); |
| // int index = msb | lsb; |
| // |
| // if(punchthrough) |
| // punchthrough = index == 2; |
| // |
| // if(index == 0) |
| // { |
| // rgb_result = ivec3(r1, g1, b1); |
| // rgb_result *= 0x11; |
| // } |
| // else |
| // { |
| // int mod = 2 - index; |
| // ivec3 rgb = ivec3(r2, g2, b2)* 0x11 + mod * dist; |
| // rgb_result = ivec3(clamp(rgb, ivec3(0), ivec3(255))); |
| // } |
| // } |
| // else if(uint(g1)> 31u) |
| // { |
| // int r1 = int(bitfieldExtract(color_payload . y, 59 - 32, 4)); |
| // int g1 =(int(bitfieldExtract(color_payload . y, 56 - 32, 3))<< 1)| |
| // int((color_payload . y >> 20u)& 1u); |
| // int b1 = int(bitfieldExtract(color_payload . y, 47 - 32, 3))| |
| // int((color_payload . y >> 16u)& 8u); |
| // int r2 = int(bitfieldExtract(color_payload . y, 43 - 32, 4)); |
| // int g2 = int(bitfieldExtract(color_payload . y, 39 - 32, 4)); |
| // int b2 = int(bitfieldExtract(color_payload . y, 35 - 32, 4)); |
| // uint da = color_payload . y & 4u; |
| // uint db = color_payload . y & 1u; |
| // uint d = da + 2u * db; |
| // d += uint((r1 * 0x10000 + g1 * 0x100 + b1)>=(r2 * 0x10000 + g2 * 0x100 + b2)); |
| // int dist = etc2_distance_table[d]; |
| // int msb = int((color_payload . x >>(15 + linear_pixel))& 2u); |
| // int lsb = int((color_payload . x >> linear_pixel)& 1u); |
| // |
| // if(punchthrough) |
| // punchthrough =(msb + lsb)== 2; |
| // |
| // ivec3 base = msb != 0 ? ivec3(r2, g2, b2): ivec3(r1, g1, b1); |
| // base *= 0x11; |
| // int mod = 1 - 2 * lsb; |
| // base += mod * dist; |
| // rgb_result = ivec3(clamp(base, ivec3(0), ivec3(0xff))); |
| // } |
| // else if(uint(b1)> 31u) |
| // { |
| // |
| // int r = int(bitfieldExtract(color_payload . y, 57 - 32, 6)); |
| // int g = int(bitfieldExtract(color_payload . y, 49 - 32, 6))| |
| // (int(color_payload . y >> 18)& 0x40); |
| // int b = int(bitfieldExtract(color_payload . y, 39 - 32, 3))| |
| // (int(bitfieldExtract(color_payload . y, 43 - 32, 2))<< 3)| |
| // (int(color_payload . y >> 11)& 0x20); |
| // int rh = int(color_payload . y & 1u)| |
| // (int(bitfieldExtract(color_payload . y, 2, 5))<< 1); |
| // int rv = int(bitfieldExtract(color_payload . x, 13, 6)); |
| // int gh = int(bitfieldExtract(color_payload . x, 25, 7)); |
| // int gv = int(bitfieldExtract(color_payload . x, 6, 7)); |
| // int bh = int(bitfieldExtract(color_payload . x, 19, 6)); |
| // int bv = int(bitfieldExtract(color_payload . x, 0, 6)); |
| // |
| // r =(r << 2)|(r >> 4); |
| // rh =(rh << 2)|(rh >> 4); |
| // rv =(rv << 2)|(rv >> 4); |
| // g =(g << 1)|(g >> 6); |
| // gh =(gh << 1)|(gh >> 6); |
| // gv =(gv << 1)|(gv >> 6); |
| // b =(b << 2)|(b >> 4); |
| // bh =(bh << 2)|(bh >> 4); |
| // bv =(bv << 2)|(bv >> 4); |
| // |
| // ivec3 rgb = ivec3(r, g, b); |
| // ivec3 dx = ivec3(rh, gh, bh)- rgb; |
| // ivec3 dy = ivec3(rv, gv, bv)- rgb; |
| // dx *= int(pixel_coord . x); |
| // dy *= int(pixel_coord . y); |
| // rgb = rgb +((dx + dy + 2)>> 2); |
| // rgb = clamp(rgb, ivec3(0), ivec3(255)); |
| // rgb_result = ivec3(rgb); |
| // |
| // punchthrough = false; |
| // |
| // } |
| // else |
| // { |
| // |
| // etc1_compat = true; |
| // base_rgb = ivec3(r, g, b)+ int(subblock)* ivec3(rd, gd, bd); |
| // base_rgb =(base_rgb << 3)|(base_rgb >> 2); |
| // } |
| // } |
| // |
| // if(etc1_compat) |
| // { |
| // uint etc1_table_index = bitfieldExtract(color_payload . y, 5 - 3 * int(subblock != 0u), 3); |
| // int msb = int((color_payload . x >>(15 + linear_pixel))& 2u); |
| // int lsb = int((color_payload . x >> linear_pixel)& 1u); |
| // int sgn = 1 - msb; |
| // |
| // if(punchthrough) |
| // { |
| // sgn *= lsb; |
| // punchthrough =(msb + lsb)== 2; |
| // } |
| // |
| // int offset = etc1_color_modifier_table[etc1_table_index][lsb]* sgn; |
| // base_rgb = clamp(base_rgb + offset, ivec3(0), ivec3(255)); |
| // rgb_result = ivec3(base_rgb); |
| // } |
| // |
| // if(alphaBits == 1 && punchthrough) |
| // { |
| // rgb_result = ivec3(0); |
| // alpha_result = 0; |
| // } |
| // |
| // return ivec4(rgb_result . r, rgb_result . g, rgb_result . b, alpha_result); |
| // } |
| // #line 77 "shaders/src/EtcToBc.comp" |
| // |
| // ivec2 build_coord() |
| // { |
| // uvec2 base =(gl_WorkGroupID . xy)* 8; |
| // uint blockid = gl_LocalInvocationID . x >> 4u; |
| // uint blockxy = gl_LocalInvocationID . x & 0xfu; |
| // base . x += 4 *(blockid & 0x1); |
| // base . y += 2 *(blockid & 0x2); |
| // base += uvec2(blockxy & 0x3, blockxy >> 0x2); |
| // return ivec2(base); |
| // } |
| // |
| // uint flip_endian(uint v) |
| // { |
| // uvec4 words = uvec4(v)>> uvec4(0, 8, 16, 24); |
| // words &= 0xffu; |
| // return(words . x << 24u)|(words . y << 16u)|(words . z << 8u)|(words . w << 0u); |
| // } |
| // |
| // uvec2 flip_endian(uvec2 v) |
| // { |
| // return uvec2(flip_endian(v . y), flip_endian(v . x)); |
| // } |
| // |
| // uint GetIndicesRGB(vec3 color, vec3 minColor, vec3 maxColor, bool transparent) |
| // { |
| // vec3 dir = maxColor - minColor; |
| // float distMin = dot(minColor, dir); |
| // float distMax = dot(maxColor, dir); |
| // float dist = dot(color, dir); |
| // int ind = int(round(clamp((dist - distMin)/(distMax - distMin), 0.0, 1.0)*(transparent ? 2.0 : 3.0))); |
| // |
| // return bitfieldExtract(transparent ? 0x18u : 0x2du, ind * 2, 2); |
| // } |
| // |
| // void ComputeMaxMinColor(uvec3 rgbColor, inout uvec3 minColor, inout uvec3 maxColor){ |
| // ivec3 dx; |
| // if(alphaBits == 1){ |
| // int count = subgroupClusteredAdd(1, 16); |
| // ivec3 avg = ivec3((subgroupClusteredAdd(rgbColor, 16)* 2 + count)/(2 * count)); |
| // dx = ivec3(rgbColor)- avg; |
| // } |
| // else { |
| // dx = ivec3(rgbColor)- ivec3(subgroupClusteredAdd(rgbColor, 16)+ 8 >> 4); |
| // } |
| // vec3 cov0 = vec3(subgroupClusteredAdd(dx . r * dx, 16)); |
| // vec3 cov1 = vec3(subgroupClusteredAdd(dx . ggb * dx . gbb, 16)); |
| // vec3 vg = vec3(subgroupClusteredMax(rgbColor, 16)- subgroupClusteredMin(rgbColor, 16)); |
| // |
| // mat3 covMat = mat3(cov0, |
| // vec3(cov0 . y, cov1 . xy), |
| // vec3(cov0 . z, cov1 . yz)); |
| // |
| // float eigenvalue = 0.0f; |
| // for(int i = 0;i < 4;i ++){ |
| // vg = covMat * vg; |
| // eigenvalue = sqrt(dot(vg, vg)); |
| // if(eigenvalue > 0.0f){ |
| // float invNorm = 1.0f / eigenvalue; |
| // vg *= invNorm; |
| // } |
| // } |
| // const float kDefaultLuminanceThreshold = 4.0f * 255; |
| // const float kQuantizeRange = 0.512f; |
| // |
| // if(eigenvalue < kDefaultLuminanceThreshold){ |
| // vg = vec3(0.299f, 0.587f, 0.114f); |
| // } |
| // else { |
| // float magn = max(max(abs(vg . r), abs(vg . g)), abs(vg . b)); |
| // vg *= kQuantizeRange / magn; |
| // } |
| // float dist = dot(vec3(rgbColor), vg); |
| // float min_dist = subgroupClusteredMin(dist, 16); |
| // float max_dist = subgroupClusteredMax(dist, 16); |
| // uvec2 indices = uvec2(dist == min_dist ? gl_SubgroupInvocationID : 0, |
| // dist == max_dist ? gl_SubgroupInvocationID : 0); |
| // uvec2 minMaxIndex = subgroupClusteredMax(indices, 16); |
| // minColor = subgroupShuffle(rgbColor, minMaxIndex . x); |
| // maxColor = subgroupShuffle(rgbColor, minMaxIndex . y); |
| // } |
| // |
| // uint GetIndicesAlpha(int alpha, int minAlpha, int maxAlpha) |
| // { |
| // float dist = float(maxAlpha - minAlpha); |
| // int ind = int(round(clamp((alpha - minAlpha)/ dist * 7.0f, 0.0, 7.0))); |
| // |
| // return bitfieldExtract(0x2345671u, ind * 4, 4); |
| // } |
| // |
| // void ComputeMaxMin(int alpha, inout int minAlpha, inout int maxAlpha){ |
| // minAlpha = subgroupClusteredMin(alpha, 16); |
| // maxAlpha = subgroupClusteredMax(alpha, 16); |
| // } |
| // uvec2 EncodeBC4(int value, uint pid){ |
| // int minValue, maxValue; |
| // ComputeMaxMin(value, minValue, maxValue); |
| // uint indices = 0; |
| // if(minValue != maxValue) |
| // indices = GetIndicesAlpha(value, minValue, maxValue); |
| // |
| // uvec2 mask = uvec2(pid <= 5 ? indices <<(16 + 3 * pid): 0x0, |
| // pid >= 5 ?(indices << 29)>>(45 - 3 * pid): 0x0); |
| // |
| // mask = subgroupClusteredOr(mask, 16); |
| // return uvec2((maxValue & 0xff)|((minValue & 0xff)<< 8)| mask . x, mask . y); |
| // } |
| // |
| // uvec3 scaleColorToRGB565(uvec3 color){ |
| // return uvec3(round(vec3(color)* vec3(31.0 / 255.0, 63.0 / 255.0, 31.0 / 255.0))); |
| // } |
| // |
| // uvec3 convertRGB565ToRGB888(uvec3 color){ |
| // return uvec3(color . x << 3 |(color . x >> 2), |
| // color . y << 2 |(color . y >> 4), |
| // color . z << 3 |(color . z >> 2)); |
| // } |
| // |
| // uint packRGB565(uvec3 color565){ |
| // return color565 . r << 11 |(color565 . g << 5)| color565 . b; |
| // } |
| // |
| // void modifyMinMax(inout uvec3 minColor, inout uvec3 maxColor){ |
| // uvec3 minColor565 = scaleColorToRGB565(minColor); |
| // uvec3 maxColor565 = scaleColorToRGB565(maxColor); |
| // if(all(equal(minColor565, maxColor565))){ |
| // uvec3 simulatedColor = convertRGB565ToRGB888(minColor565); |
| // ivec3 signMax = sign(ivec3(maxColor)- ivec3(simulatedColor)); |
| // ivec3 signMin = sign(ivec3(minColor)- ivec3(simulatedColor)); |
| // bvec3 needCorrect = greaterThan(signMax * signMin, ivec3(0, 0, 0)); |
| // bvec3 positive = greaterThan(signMin, ivec3(0, 0, 0)); |
| // maxColor565 . r += needCorrect . r && positive . r ? 1 : 0; |
| // maxColor565 . g += needCorrect . g && positive . g ? 1 : 0; |
| // maxColor565 . b += needCorrect . b && positive . b ? 1 : 0; |
| // minColor565 . r -= needCorrect . r && ! positive . r ? 1 : 0; |
| // minColor565 . g -= needCorrect . g && ! positive . g ? 1 : 0; |
| // minColor565 . b -= needCorrect . b && ! positive . b ? 1 : 0; |
| // } |
| // minColor = minColor565; |
| // maxColor = maxColor565; |
| // } |
| // |
| // void swap(inout uint a, inout uint b){ |
| // uint t = a; |
| // a = b; |
| // b = t; |
| // } |
| // |
| // void main() |
| // { |
| // ivec2 coord = build_coord(); |
| // if(any(greaterThanEqual(coord, ivec2(width, height)))) |
| // return; |
| // |
| // ivec2 tile_coord = coord >> 2; |
| // ivec2 pixel_coord = coord & 3; |
| // int linear_pixel = 4 * pixel_coord . x + pixel_coord . y; |
| // int pid = 4 * pixel_coord . y + pixel_coord . x; |
| // uvec4 payload = texelFetch(uInputBuffer, tile_coord . y * int((width + 3)>> 2)+ tile_coord . x + texelOffset); |
| // |
| // ivec4 result; |
| // |
| // result . r = decode_etc2_alpha(flip_endian(payload . xy), linear_pixel); |
| // if(isEacRg != 0){ |
| // result . g = decode_etc2_alpha(flip_endian(payload . zw), linear_pixel); |
| // } |
| // |
| // uvec4 finalResult; |
| // |
| // finalResult . rg = EncodeBC4(result . r, pid); |
| // if(isEacRg != 0) |
| // finalResult . ba = EncodeBC4(result . g, pid); |
| // |
| // if(pid == 0){ |
| // tile_coord += ivec2(offsetX / 4, offsetY / 4); |
| // imageStore(uOutput, tile_coord, finalResult); |
| // } |
| // |
| // } |