mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-05 03:24:56 +08:00
engine: imagelib: img_quant: reduce used colors from 256 to 255, so last color in palette can be reserved for custom usage (like transparency in player decals)
This commit is contained in:
@@ -141,14 +141,10 @@ qboolean CL_ConvertImageToWAD3( const char *filename )
|
||||
if( !quant || !quant->buffer || !quant->palette )
|
||||
goto cleanup;
|
||||
|
||||
// remap palette index 255 to 254 to avoid transparency conflicts
|
||||
for( i = 0; i < width * height; ++i )
|
||||
// set index 255 for transparent pixels in rgba images
|
||||
if( image->type == PF_RGBA_32 )
|
||||
{
|
||||
if( quant->buffer[i] == 255 )
|
||||
quant->buffer[i] = 254;
|
||||
|
||||
// set index 255 for transparent pixels in rgba images
|
||||
if( image->type == PF_RGBA_32 )
|
||||
for( i = 0; i < width * height; ++i )
|
||||
{
|
||||
if( image->buffer[i * 4 + 3] <= SPRAY_ALPHA_THRESHOLD )
|
||||
quant->buffer[i] = 255;
|
||||
|
||||
@@ -15,12 +15,13 @@ GNU General Public License for more details.
|
||||
|
||||
#include "imagelib.h"
|
||||
|
||||
#define palettesize 256
|
||||
#define netsize 255 // number of colours used
|
||||
|
||||
#define netsize 256 // number of colours used
|
||||
#define prime1 499
|
||||
#define prime2 491
|
||||
#define prime3 487
|
||||
#define prime4 503
|
||||
#define prime1 499
|
||||
#define prime2 491
|
||||
#define prime3 487
|
||||
#define prime4 503
|
||||
|
||||
#define minpicturebytes (3*prime4) // minimum size for input image
|
||||
|
||||
@@ -446,7 +447,7 @@ rgbdata_t *Image_Quantize( rgbdata_t *pic )
|
||||
learn();
|
||||
unbiasnet();
|
||||
|
||||
pic->palette = Mem_Malloc( host.imagepool, netsize * 3 );
|
||||
pic->palette = Mem_Malloc( host.imagepool, palettesize * 3 );
|
||||
|
||||
for( i = 0; i < netsize; i++ )
|
||||
{
|
||||
@@ -455,6 +456,13 @@ rgbdata_t *Image_Quantize( rgbdata_t *pic )
|
||||
pic->palette[i*3+2] = network[i][2]; // blue
|
||||
}
|
||||
|
||||
for( ; i < palettesize; i++ )
|
||||
{
|
||||
pic->palette[i*3+0] = 0;
|
||||
pic->palette[i*3+1] = 0;
|
||||
pic->palette[i*3+2] = 0;
|
||||
}
|
||||
|
||||
inxbuild();
|
||||
|
||||
for( i = 0; i < image.width * image.height; i++ )
|
||||
|
||||
Reference in New Issue
Block a user