MCPcopy Create free account
hub / github.com/crownengine/crown / decodeBlockDxt45A

Function decodeBlockDxt45A

3rdparty/bimg/src/image.cpp:1501–1544  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1499 }
1500
1501 static void decodeBlockDxt45A(uint8_t _dst[16*4], const uint8_t _src[8])
1502 {
1503 if (!BX_ENABLED(BIMG_DECODE_BC3 || BIMG_DECODE_BC4 || BIMG_DECODE_BC5) )
1504 {
1505 return;
1506 }
1507
1508 uint8_t alpha[8];
1509 alpha[0] = _src[0];
1510 alpha[1] = _src[1];
1511
1512 if (alpha[0] > alpha[1])
1513 {
1514 alpha[2] = (6*alpha[0] + 1*alpha[1]) / 7;
1515 alpha[3] = (5*alpha[0] + 2*alpha[1]) / 7;
1516 alpha[4] = (4*alpha[0] + 3*alpha[1]) / 7;
1517 alpha[5] = (3*alpha[0] + 4*alpha[1]) / 7;
1518 alpha[6] = (2*alpha[0] + 5*alpha[1]) / 7;
1519 alpha[7] = (1*alpha[0] + 6*alpha[1]) / 7;
1520 }
1521 else
1522 {
1523 alpha[2] = (4*alpha[0] + 1*alpha[1]) / 5;
1524 alpha[3] = (3*alpha[0] + 2*alpha[1]) / 5;
1525 alpha[4] = (2*alpha[0] + 3*alpha[1]) / 5;
1526 alpha[5] = (1*alpha[0] + 4*alpha[1]) / 5;
1527 alpha[6] = 0;
1528 alpha[7] = 255;
1529 }
1530
1531 uint32_t idx0 = _src[2];
1532 uint32_t idx1 = _src[5];
1533 idx0 |= uint32_t(_src[3])<<8;
1534 idx1 |= uint32_t(_src[6])<<8;
1535 idx0 |= uint32_t(_src[4])<<16;
1536 idx1 |= uint32_t(_src[7])<<16;
1537 for (uint32_t ii = 0; ii < 8*4; ii += 4)
1538 {
1539 _dst[ii] = alpha[idx0&7];
1540 _dst[ii+32] = alpha[idx1&7];
1541 idx0 >>= 3;
1542 idx1 >>= 3;
1543 }
1544 }
1545
1546 // BC6H, BC7
1547 //

Callers 2

imageDecodeToBgra8Function · 0.85
imageDecodeToRgba32fFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected