diff --git a/ChangeLog b/ChangeLog index efed31f..d7292c0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ NVIDIA Texture Tools version 2.0.9 * Fix the C wrapper and provide methods involving callbacks. * Improve C# / .NET Wrapper * Add an XNA Game Studio 3.1 Content Processor to make it easy to utilize NVIDIA Texture Tools in XNA applications. + * Fix single color DXT1a compressor. Fixes issue 134. NVIDIA Texture Tools version 2.0.8 * Fix float to fixed image conversion. Patch provided by Alex Pfaffe. Fixes issue 121. diff --git a/src/nvtt/CompressDXT.cpp b/src/nvtt/CompressDXT.cpp index 60f5264..3da0c53 100644 --- a/src/nvtt/CompressDXT.cpp +++ b/src/nvtt/CompressDXT.cpp @@ -255,7 +255,7 @@ void nv::SlowCompressor::compressDXT1a(const CompressionOptions::Private & compr for (uint i = 0; i < 16; i++) { - if (rgba.color(i).a < 128) anyAlpha = true; + if (rgba.color(i).a == 0) anyAlpha = true; else allAlpha = false; } diff --git a/src/nvtt/OptimalCompressDXT.cpp b/src/nvtt/OptimalCompressDXT.cpp index 4460781..b0668e8 100644 --- a/src/nvtt/OptimalCompressDXT.cpp +++ b/src/nvtt/OptimalCompressDXT.cpp @@ -205,7 +205,7 @@ void OptimalCompress::compressDXT1(Color32 c, BlockDXT1 * dxtBlock) void OptimalCompress::compressDXT1a(Color32 rgba, BlockDXT1 * dxtBlock) { - if (rgba.a < 128) + if (rgba.a == 0) { dxtBlock->col0.u = 0; dxtBlock->col1.u = 0; diff --git a/src/nvtt/QuickCompressDXT.cpp b/src/nvtt/QuickCompressDXT.cpp index a8e086f..d9222f3 100644 --- a/src/nvtt/QuickCompressDXT.cpp +++ b/src/nvtt/QuickCompressDXT.cpp @@ -483,7 +483,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 bdf14b8..242c2df 100644 --- a/src/nvtt/tools/compress.cpp +++ b/src/nvtt/tools/compress.cpp @@ -419,6 +419,11 @@ int main(int argc, char *argv[]) // compressionOptions.setPixelFormat(16, 0, 0, 0); } } + + if (format == nvtt::Format_BC1a) { + compressionOptions.setQuantization(false, true, true, 127); + } + if (fast) { compressionOptions.setQuality(nvtt::Quality_Fastest);