|
|
|
@ -92,11 +92,11 @@ private: |
|
|
|
const unsigned int mask = 1 << m_NextBit++; |
|
|
|
|
|
|
|
// clear the bit
|
|
|
|
*m_CurByte &= ~mask; |
|
|
|
*m_CurByte &= static_cast<unsigned char>(~mask); |
|
|
|
|
|
|
|
// Write the bit, if necessary
|
|
|
|
if (b) |
|
|
|
*m_CurByte |= mask; |
|
|
|
*m_CurByte |= static_cast<unsigned char>(mask); |
|
|
|
|
|
|
|
// Next byte?
|
|
|
|
if (m_NextBit >= 8) { |
|
|
|
@ -137,7 +137,7 @@ public: |
|
|
|
} |
|
|
|
|
|
|
|
uint64_t mask = (1 << (end - start + 1)) - 1; |
|
|
|
return (m_Bits >> start) & mask; |
|
|
|
return (m_Bits >> start) & static_cast<IntType>(mask); |
|
|
|
} |
|
|
|
|
|
|
|
private: |
|
|
|
@ -656,7 +656,7 @@ static IntType Replicate(const IntType& val, uint32_t numBits, uint32_t toBit) { |
|
|
|
return 0; |
|
|
|
if (toBit == 0) |
|
|
|
return 0; |
|
|
|
IntType v = val & ((1 << numBits) - 1); |
|
|
|
IntType v = val & static_cast<IntType>((1 << numBits) - 1); |
|
|
|
IntType res = v; |
|
|
|
uint32_t reslen = numBits; |
|
|
|
while (reslen < toBit) { |
|
|
|
@ -666,8 +666,8 @@ static IntType Replicate(const IntType& val, uint32_t numBits, uint32_t toBit) { |
|
|
|
comp = numBits - newshift; |
|
|
|
numBits = newshift; |
|
|
|
} |
|
|
|
res <<= numBits; |
|
|
|
res |= v >> comp; |
|
|
|
res = static_cast<IntType>(res << numBits); |
|
|
|
res = static_cast<IntType>(res | (v >> comp)); |
|
|
|
reslen += numBits; |
|
|
|
} |
|
|
|
return res; |
|
|
|
@ -714,7 +714,7 @@ public: |
|
|
|
// Do nothing
|
|
|
|
return val; |
|
|
|
} else if (oldDepth == 0 && newDepth != 0) { |
|
|
|
return (1 << newDepth) - 1; |
|
|
|
return static_cast<ChannelType>((1 << newDepth) - 1); |
|
|
|
} else if (newDepth > oldDepth) { |
|
|
|
return Replicate(val, oldDepth, newDepth); |
|
|
|
} else { |
|
|
|
@ -722,10 +722,11 @@ public: |
|
|
|
if (newDepth == 0) { |
|
|
|
return 0xFF; |
|
|
|
} else { |
|
|
|
uint8_t bitsWasted = oldDepth - newDepth; |
|
|
|
uint8_t bitsWasted = static_cast<uint8_t>(oldDepth - newDepth); |
|
|
|
uint16_t v = static_cast<uint16_t>(val); |
|
|
|
v = (v + (1 << (bitsWasted - 1))) >> bitsWasted; |
|
|
|
v = ::std::min<uint16_t>(::std::max<uint16_t>(0, v), (1 << newDepth) - 1); |
|
|
|
v = static_cast<uint16_t>((v + (1 << (bitsWasted - 1))) >> bitsWasted); |
|
|
|
v = ::std::min<uint16_t>(::std::max<uint16_t>(0, v), |
|
|
|
static_cast<uint16_t>((1 << newDepth) - 1)); |
|
|
|
return static_cast<uint8_t>(v); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1191,18 +1192,18 @@ static uint32_t SelectPartition(int32_t seed, int32_t x, int32_t y, int32_t z, |
|
|
|
uint8_t seed11 = static_cast<uint8_t>((rnum >> 26) & 0xF); |
|
|
|
uint8_t seed12 = static_cast<uint8_t>(((rnum >> 30) | (rnum << 2)) & 0xF); |
|
|
|
|
|
|
|
seed1 *= seed1; |
|
|
|
seed2 *= seed2; |
|
|
|
seed3 *= seed3; |
|
|
|
seed4 *= seed4; |
|
|
|
seed5 *= seed5; |
|
|
|
seed6 *= seed6; |
|
|
|
seed7 *= seed7; |
|
|
|
seed8 *= seed8; |
|
|
|
seed9 *= seed9; |
|
|
|
seed10 *= seed10; |
|
|
|
seed11 *= seed11; |
|
|
|
seed12 *= seed12; |
|
|
|
seed1 = static_cast<uint8_t>(seed1 * seed1); |
|
|
|
seed2 = static_cast<uint8_t>(seed2 * seed2); |
|
|
|
seed3 = static_cast<uint8_t>(seed3 * seed3); |
|
|
|
seed4 = static_cast<uint8_t>(seed4 * seed4); |
|
|
|
seed5 = static_cast<uint8_t>(seed5 * seed5); |
|
|
|
seed6 = static_cast<uint8_t>(seed6 * seed6); |
|
|
|
seed7 = static_cast<uint8_t>(seed7 * seed7); |
|
|
|
seed8 = static_cast<uint8_t>(seed8 * seed8); |
|
|
|
seed9 = static_cast<uint8_t>(seed9 * seed9); |
|
|
|
seed10 = static_cast<uint8_t>(seed10 * seed10); |
|
|
|
seed11 = static_cast<uint8_t>(seed11 * seed11); |
|
|
|
seed12 = static_cast<uint8_t>(seed12 * seed12); |
|
|
|
|
|
|
|
int32_t sh1, sh2, sh3; |
|
|
|
if (seed & 1) { |
|
|
|
@ -1214,18 +1215,18 @@ static uint32_t SelectPartition(int32_t seed, int32_t x, int32_t y, int32_t z, |
|
|
|
} |
|
|
|
sh3 = (seed & 0x10) ? sh1 : sh2; |
|
|
|
|
|
|
|
seed1 >>= sh1; |
|
|
|
seed2 >>= sh2; |
|
|
|
seed3 >>= sh1; |
|
|
|
seed4 >>= sh2; |
|
|
|
seed5 >>= sh1; |
|
|
|
seed6 >>= sh2; |
|
|
|
seed7 >>= sh1; |
|
|
|
seed8 >>= sh2; |
|
|
|
seed9 >>= sh3; |
|
|
|
seed10 >>= sh3; |
|
|
|
seed11 >>= sh3; |
|
|
|
seed12 >>= sh3; |
|
|
|
seed1 = static_cast<uint8_t>(seed1 >> sh1); |
|
|
|
seed2 = static_cast<uint8_t>(seed2 >> sh2); |
|
|
|
seed3 = static_cast<uint8_t>(seed3 >> sh1); |
|
|
|
seed4 = static_cast<uint8_t>(seed4 >> sh2); |
|
|
|
seed5 = static_cast<uint8_t>(seed5 >> sh1); |
|
|
|
seed6 = static_cast<uint8_t>(seed6 >> sh2); |
|
|
|
seed7 = static_cast<uint8_t>(seed7 >> sh1); |
|
|
|
seed8 = static_cast<uint8_t>(seed8 >> sh2); |
|
|
|
seed9 = static_cast<uint8_t>(seed9 >> sh3); |
|
|
|
seed10 = static_cast<uint8_t>(seed10 >> sh3); |
|
|
|
seed11 = static_cast<uint8_t>(seed11 >> sh3); |
|
|
|
seed12 = static_cast<uint8_t>(seed12 >> sh3); |
|
|
|
|
|
|
|
int32_t a = seed1 * x + seed2 * y + seed11 * z + (rnum >> 14); |
|
|
|
int32_t b = seed3 * x + seed4 * y + seed12 * z + (rnum >> 10); |
|
|
|
@ -1558,7 +1559,9 @@ static void DecompressBlock(const uint8_t inBuf[16], const uint32_t blockWidth, |
|
|
|
|
|
|
|
// Make sure that higher non-texel bits are set to zero
|
|
|
|
const uint32_t clearByteStart = (weightParams.GetPackedBitSize() >> 3) + 1; |
|
|
|
texelWeightData[clearByteStart - 1] &= (1 << (weightParams.GetPackedBitSize() % 8)) - 1; |
|
|
|
texelWeightData[clearByteStart - 1] = |
|
|
|
texelWeightData[clearByteStart - 1] & |
|
|
|
static_cast<uint8_t>((1 << (weightParams.GetPackedBitSize() % 8)) - 1); |
|
|
|
memset(texelWeightData + clearByteStart, 0, 16 - clearByteStart); |
|
|
|
|
|
|
|
std::vector<IntegerEncodedValue> texelWeightValues; |
|
|
|
|