diff --git a/src/nvtt/CompressorDX9.cpp b/src/nvtt/CompressorDX9.cpp index 00e70eb..a514770 100644 --- a/src/nvtt/CompressorDX9.cpp +++ b/src/nvtt/CompressorDX9.cpp @@ -132,7 +132,7 @@ void NormalCompressorDXT1a::compressBlock(ColorBlock & rgba, nvtt::AlphaMode alp uint alphaMask = 0; for (uint i = 0; i < 16; i++) { - if (rgba.color(i).a < 128) alphaMask |= (3 << (i * 2)); // Set two bits for each color. + if (rgba.color(i).a == 0) alphaMask |= (3 << (i * 2)); // Set two bits for each color. } const bool isSingleColor = rgba.isSingleColor(); diff --git a/src/nvtt/QuickCompressDXT.cpp b/src/nvtt/QuickCompressDXT.cpp index 8b6b2bf..213463f 100644 --- a/src/nvtt/QuickCompressDXT.cpp +++ b/src/nvtt/QuickCompressDXT.cpp @@ -533,7 +533,7 @@ void QuickCompress::compressDXT1a(const ColorBlock & rgba, BlockDXT1 * dxtBlock) for (uint i = 0; i < 16; i++) { - if (rgba.color(i).a < 128) { + if (rgba.color(i).a == 0) { hasAlpha = true; break; } diff --git a/src/nvtt/tools/compress.cpp b/src/nvtt/tools/compress.cpp index 5d329db..caeedfb 100644 --- a/src/nvtt/tools/compress.cpp +++ b/src/nvtt/tools/compress.cpp @@ -482,8 +482,11 @@ int main(int argc, char *argv[]) // Dither alpha when using BC2. compressionOptions.setQuantization(false, true, false); } - - if (format == nvtt::Format_RGBA) + else if (format == nvtt::Format_BC1a) { + // Binary alpha when using BC1a. + compressionOptions.setQuantization(false, true, true, 127); + } + else if (format == nvtt::Format_RGBA) { if (luminance) {