| 821 | } |
| 822 | |
| 823 | void ReIndexShapef(AMD_BC6H_Format& BC6H_data, int shape_indices[BC6H_MAX_SUBSETS][MAX_SUBSET_SIZE]) |
| 824 | { |
| 825 | float error = 0; |
| 826 | float bestError; |
| 827 | int bestIndex = 0; |
| 828 | int sub0index = 0; |
| 829 | int sub1index = 0; |
| 830 | int MaxPallet; |
| 831 | int region = (BC6H_data.region - 1); |
| 832 | |
| 833 | if (region == 0) |
| 834 | MaxPallet = 16; |
| 835 | else |
| 836 | MaxPallet = 8; |
| 837 | |
| 838 | for (int i = 0; i < BC6H_MAX_SUBSET_SIZE; i++) |
| 839 | { |
| 840 | // subset 0 or subset 1 |
| 841 | if (PARTITIONS[region][BC6H_data.d_shape_index][i]) |
| 842 | { |
| 843 | bestError = FLT_MAX; |
| 844 | bestIndex = 0; |
| 845 | |
| 846 | // For two shape regions max Pallet is 8 |
| 847 | for (int j = 0; j < MaxPallet; j++) |
| 848 | { |
| 849 | // Calculate error from original |
| 850 | error = abs(BC6H_data.din[i][0] - BC6H_data.Paletef[1][j].x) + abs(BC6H_data.din[i][1] - BC6H_data.Paletef[1][j].y) + |
| 851 | abs(BC6H_data.din[i][2] - BC6H_data.Paletef[1][j].z); |
| 852 | if (error < bestError) |
| 853 | { |
| 854 | bestError = error; |
| 855 | bestIndex = j; |
| 856 | } |
| 857 | } |
| 858 | |
| 859 | shape_indices[1][sub1index] = bestIndex; |
| 860 | sub1index++; |
| 861 | } |
| 862 | else |
| 863 | { |
| 864 | // This is shared for one or two shape regions max Pallet either 16 or 8 |
| 865 | bestError = FLT_MAX; |
| 866 | bestIndex = 0; |
| 867 | |
| 868 | for (int j = 0; j < MaxPallet; j++) |
| 869 | { |
| 870 | // Calculate error from original |
| 871 | error = abs(BC6H_data.din[i][0] - BC6H_data.Paletef[0][j].x) + abs(BC6H_data.din[i][1] - BC6H_data.Paletef[0][j].y) + |
| 872 | abs(BC6H_data.din[i][2] - BC6H_data.Paletef[0][j].z); |
| 873 | if (error < bestError) |
| 874 | { |
| 875 | bestError = error; |
| 876 | bestIndex = j; |
| 877 | } |
| 878 | } |
| 879 | |
| 880 | shape_indices[0][sub0index] = bestIndex; |