MCPcopy Create free account
hub / github.com/carbonengine/trinity / EmitAlphaIndicesForNormals

Function EmitAlphaIndicesForNormals

trinity/Tr2DxtCompressor.cpp:541–577  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

539}
540
541void 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
579void EmitGreenIndices( const uint8_t* block, const int offset, const uint8_t minGreen, const uint8_t maxGreen, uint8_t** outBuff )
580{

Callers 2

CompressNormalMap3DcFunction · 0.85

Calls 1

EmitByteFunction · 0.85

Tested by

no test coverage detected