mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 15:21:51 +00:00
- fixed: True color texture generation for DDS was broken.
SVN r2226 (trunk)
This commit is contained in:
parent
44e877a243
commit
d69eb3acd1
1 changed files with 11 additions and 11 deletions
|
@ -634,7 +634,7 @@ void FDDSTexture::DecompressDXT1 (FWadLump &lump, BYTE *tcbuf)
|
||||||
bMasked = true;
|
bMasked = true;
|
||||||
}
|
}
|
||||||
// Pick colors from the palette for each of the four colors.
|
// Pick colors from the palette for each of the four colors.
|
||||||
if (!tcbuf) for (i = 3; i >= 0; --i)
|
/*if (!tcbuf)*/ for (i = 3; i >= 0; --i)
|
||||||
{
|
{
|
||||||
palcol[i] = color[i].a ? RGB32k[color[i].r >> 3][color[i].g >> 3][color[i].b >> 3] : 0;
|
palcol[i] = color[i].a ? RGB32k[color[i].r >> 3][color[i].g >> 3][color[i].b >> 3] : 0;
|
||||||
}
|
}
|
||||||
|
@ -652,18 +652,18 @@ void FDDSTexture::DecompressDXT1 (FWadLump &lump, BYTE *tcbuf)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
int ci = (yslice >> (x + x)) & 3;
|
||||||
if (!tcbuf)
|
if (!tcbuf)
|
||||||
{
|
{
|
||||||
Pixels[oy + y + (ox + x) * Height] = palcol[(yslice >> (x + x)) & 3];
|
Pixels[oy + y + (ox + x) * Height] = palcol[ci];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BYTE * tcp = &tcbuf[ox + x + (oy + y) * Width*4];
|
BYTE * tcp = &tcbuf[(ox + x)*4 + (oy + y) * Width*4];
|
||||||
int c = (yslice >> (x + x)) & 3;
|
tcp[0] = color[ci].r;
|
||||||
tcp[0] = color[c].r;
|
tcp[1] = color[ci].g;
|
||||||
tcp[1] = color[c].g;
|
tcp[2] = color[ci].b;
|
||||||
tcp[2] = color[c].b;
|
tcp[3] = color[ci].a;
|
||||||
tcp[3] = color[c].a;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -740,7 +740,7 @@ void FDDSTexture::DecompressDXT3 (FWadLump &lump, bool premultiplied, BYTE *tcbu
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BYTE * tcp = &tcbuf[ox + x + (oy + y) * Width*4];
|
BYTE * tcp = &tcbuf[(ox + x)*4 + (oy + y) * Width*4];
|
||||||
int c = (yslice >> (x + x)) & 3;
|
int c = (yslice >> (x + x)) & 3;
|
||||||
tcp[0] = color[c].r;
|
tcp[0] = color[c].r;
|
||||||
tcp[1] = color[c].g;
|
tcp[1] = color[c].g;
|
||||||
|
@ -831,7 +831,7 @@ void FDDSTexture::DecompressDXT5 (FWadLump &lump, bool premultiplied, BYTE *tcbu
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Alpha values are stored in 3 bytes for 2 rows
|
// Alpha values are stored in 3 bytes for 2 rows
|
||||||
if ((y & 1) == 0)
|
if ((y & 0) == 0)
|
||||||
{
|
{
|
||||||
yalphaslice = block[y*3] | (block[y*3+1] << 8) | (block[y*3+2] << 16);
|
yalphaslice = block[y*3] | (block[y*3+1] << 8) | (block[y*3+2] << 16);
|
||||||
}
|
}
|
||||||
|
@ -853,7 +853,7 @@ void FDDSTexture::DecompressDXT5 (FWadLump &lump, bool premultiplied, BYTE *tcbu
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BYTE * tcp = &tcbuf[ox + x + (oy + y) * Width*4];
|
BYTE * tcp = &tcbuf[(ox + x)*4 + (oy + y) * Width*4];
|
||||||
int c = (yslice >> (x + x)) & 3;
|
int c = (yslice >> (x + x)) & 3;
|
||||||
tcp[0] = color[c].r;
|
tcp[0] = color[c].r;
|
||||||
tcp[1] = color[c].g;
|
tcp[1] = color[c].g;
|
||||||
|
|
Loading…
Reference in a new issue