| 539 | } |
| 540 | |
| 541 | void EmitAlphaIndicesForNormals( const uint8_t* block, const int offset, const uint8_t minAlpha, const uint8_t maxAlpha, uint8_t** outBuff ) |
| 542 | { |
| 543 | uint8_t mid = ( maxAlpha - minAlpha ) / ( 2 * 7 ); |
| 544 | |
| 545 | uint8_t ab1 = maxAlpha - mid; |
| 546 | uint8_t ab2 = ( 6 * maxAlpha + 1 * minAlpha ) / 7 - mid; |
| 547 | uint8_t ab3 = ( 5 * maxAlpha + 2 * minAlpha ) / 7 - mid; |
| 548 | uint8_t ab4 = ( 4 * maxAlpha + 3 * minAlpha ) / 7 - mid; |
| 549 | uint8_t ab5 = ( 3 * maxAlpha + 4 * minAlpha ) / 7 - mid; |
| 550 | uint8_t ab6 = ( 2 * maxAlpha + 5 * minAlpha ) / 7 - mid; |
| 551 | uint8_t ab7 = ( 1 * maxAlpha + 6 * minAlpha ) / 7 - mid; |
| 552 | |
| 553 | block += offset; |
| 554 | |
| 555 | uint8_t indices[16]; |
| 556 | for( int i = 0; i < 16; i++ ) |
| 557 | { |
| 558 | uint8_t a = block[i * 4]; |
| 559 | int b1 = ( a >= ab1 ); |
| 560 | int b2 = ( a >= ab2 ); |
| 561 | int b3 = ( a >= ab3 ); |
| 562 | int b4 = ( a >= ab4 ); |
| 563 | int b5 = ( a >= ab5 ); |
| 564 | int b6 = ( a >= ab6 ); |
| 565 | int b7 = ( a >= ab7 ); |
| 566 | int index = ( 8 - b1 - b2 - b3 - b4 - b5 - b6 - b7 ) & 7; |
| 567 | indices[i] = index ^ ( 2 > index ); |
| 568 | } |
| 569 | |
| 570 | EmitByte( ( indices[0] >> 0 ) | ( indices[1] << 3 ) | ( indices[2] << 6 ), outBuff ); |
| 571 | EmitByte( ( indices[2] >> 2 ) | ( indices[3] << 1 ) | ( indices[4] << 4 ) | ( indices[5] << 7 ), outBuff ); |
| 572 | EmitByte( ( indices[5] >> 1 ) | ( indices[6] << 2 ) | ( indices[7] << 5 ), outBuff ); |
| 573 | |
| 574 | EmitByte( ( indices[8] >> 0 ) | ( indices[9] << 3 ) | ( indices[10] << 6 ), outBuff ); |
| 575 | EmitByte( ( indices[10] >> 2 ) | ( indices[11] << 1 ) | ( indices[12] << 4 ) | ( indices[13] << 7 ), outBuff ); |
| 576 | EmitByte( ( indices[13] >> 1 ) | ( indices[14] << 2 ) | ( indices[15] << 5 ), outBuff ); |
| 577 | } |
| 578 | |
| 579 | void EmitGreenIndices( const uint8_t* block, const int offset, const uint8_t minGreen, const uint8_t maxGreen, uint8_t** outBuff ) |
| 580 | { |
no test coverage detected