diff --git a/stb_dxt.h b/stb_dxt.h index 6504325..541cdc1 100644 --- a/stb_dxt.h +++ b/stb_dxt.h @@ -1,4 +1,4 @@ -// stb_dxt.h - v1.07 - DXT1/DXT5 compressor - public domain +// stb_dxt.h - v1.08 - DXT1/DXT5 compressor - public domain // original by fabian "ryg" giesen - ported to C by stb // use '#define STB_DXT_IMPLEMENTATION' before including to create the implementation // @@ -9,7 +9,8 @@ // and "high quality" using mode. // // version history: -// v1.07 - bc4; allow not using libc; add STB_DXT_STATIC +// v1.08 - (sbt) fix bug in dxt-with-alpha block +// v1.07 - (stb) bc4; allow not using libc; add STB_DXT_STATIC // v1.06 - (stb) fix to known-broken 1.05 // v1.05 - (stb) support bc5/3dc (Arvids Kokins), use extern "C" in C++ (Pavel Krajcevski) // v1.04 - (ryg) default to no rounding bias for lerped colors (as per S3TC/DX10 spec); @@ -649,6 +650,7 @@ static void stb__InitDXT() void stb_compress_dxt_block(unsigned char *dest, const unsigned char *src, int alpha, int mode) { + unsigned char *data[16][4]; static int init=1; if (init) { stb__InitDXT(); @@ -656,8 +658,15 @@ void stb_compress_dxt_block(unsigned char *dest, const unsigned char *src, int a } if (alpha) { + int i; stb__CompressAlphaBlock(dest,(unsigned char*) src+3, 4); dest += 8; + // make a new copy of the data in which alpha is opaque, + // because code uses a fast test for color constancy + memcpy(data, src, 4*16); + for (i=0; i < 16; ++i) + data[i][3] = 255; + src = &data[0][0]; } stb__CompressColorBlock(dest,(unsigned char*) src,mode); diff --git a/stb_image.h b/stb_image.h index 0e4fde1..0990b0d 100644 --- a/stb_image.h +++ b/stb_image.h @@ -1,5 +1,5 @@ -/* stb_image - v2.17 - public domain image loader - http://nothings.org/stb_image.h - no warranty implied; use at your own risk +/* stb_image - v2.17 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk Do this: #define STB_IMAGE_IMPLEMENTATION @@ -107,10 +107,8 @@ RECENT REVISION HISTORY: // DOCUMENTATION // // Limitations: -// - no 16-bit-per-channel PNG // - no 12-bit-per-channel JPEG // - no JPEGs with arithmetic coding -// - no 1-bit BMP // - GIF always returns *comp=4 // // Basic usage (see HDR discussion below for HDR usage):