Implement DXT5 and DXT3 support

What it says on the tin: a place to discuss proposed new features.
Post Reply
nickG
Greenskin
Posts: 122
Joined: Fri Jan 20, 2012 6:44 pm
Location: Russia,Moscow
x 1

Implement DXT5 and DXT3 support

Post by nickG »

why this formats not was integrated?(in newbie in ogre)

DXT5 is better than DXT3(8bit on 1 pixel)

UPD:
Analog problem and with dxt3

OGRE EXCEPTION(9:UnimplementedException): unpack from PF_DXT3 not implemented in PixelUtil::unpackColour at .\src\OgrePixelFormat.cpp (line 1259)
User avatar
Kojack
OGRE Moderator
OGRE Moderator
Posts: 7157
Joined: Sun Jan 25, 2004 7:35 am
Location: Brisbane, Australia
x 538

Re: Implement DXT5 and DXT3 support

Post by Kojack »

why this formats not was integrated?(in newbie in ogre)
They are. Ogre supports DXT1, DXT2, DXT3, DXT4, DXT5. (I just tested in case of a bug, they work fine).

What exactly are you doing? The exception you listed is from PixelUtil::unpackColour. It should never be called with a DXT pixel format (like PF_DXT3) because it addresses pixels by a pointer. DXT textures have pixels that are smaller than a byte (there's 4 pixels per byte, then the alpha channel comes later in memory) so a pointer can't point to a single pixel. This is fine for general use, because we don't want to unpack DXT formats, their main benefit is that they get rendered without unpacking.
DXT5 is better than DXT3(8bit on 1 pixel)
DXT5 is 2 bit colour with 3 bit interpolated alpha per pixel.
DXT3 is 2 bit colour with 4 bit direct alpha per pixel.
DXT1 is 2 bit colour with either 4 opaque colours or 3 opaque colours and 1 invisible colour per pixel.
The colour format is identical in all of them, (except DXT3 and DXT5 can't do the 3+1 mode like DXT1), only the alpha is different. DXT3 supports 16 possible low precision alpha values in each 4x4 block of pixels, DXT5 supports only 8 possible higher precision alpha values in a 4x4 block, but they must be equally spaced between a start and end alpha value.
nickG
Greenskin
Posts: 122
Joined: Fri Jan 20, 2012 6:44 pm
Location: Russia,Moscow
x 1

Re: Implement DXT5 and DXT3 support

Post by nickG »

i trying to resave textures of caelum, to .dds(dxt3 and dxt5) using paint.net
DXT5 is 2 bit colour with 3 bit interpolated alpha per pixel.
DXT3 is 2 bit colour with 4 bit direct alpha per pixel.
DXT1 is 2 bit colour with either 4 opaque colours or 3 opaque colours and 1 invisible colour per pixel.
Thanks for information,on russian gamedev site is another information
Post Reply