Dateiformat: dxt ed
Ich kenne dieses Format bisher nur als internes Datenformat, noch nicht als echte (eigenständige) Datei, somit weiß ich auch nichts über Header oder ähnliches.
Das Bild wird in Blöcke von 4*4 Bildpunkten geteilt. Genaueres hängt von der Version ab:
DXT1 ed
- Blockgröße: 64bit = 8 byte
- Farbtiefe: 16bit
- Alphatiefe: 1bit
Offset Größe Bedeutung 0bit 16bit Farbwert c0 (rgb 5:6:5) 16bit 16bit Farbwert c1 (rgb 5:6:5) 32bit 32bit Pixel-Tabelle (4*4 Pixel mit je 2 bit)
Die weiteren Farbwerte sind:
if ( c0 > c1 ){
c2 = ( 2 * c0 + 1 * c1 ) / 3;
c3 = ( 1 * c0 + 2 * c1 ) / 3;
}else{
c2 = ( c0 + c1 ) / 2;
c3 = transparent;
}DXT2/3 ed
- Blockgröße: 128bit = 16 byte
- Farbtiefe: 16bit
- Alphatiefe: 4bit
Offset Größe Bedeutung 0bit 64bit Alpha-Tabelle (4*4 Pixel mit je 4 bit) 64bit 16bit Farbwert c0 (rgb 5:6:5) 80bit 16bit Farbwert c1 (rgb 5:6:5) 96bit 32bit Pixel-Tabelle (4*4 Pixel mit je 2 bit)
Die weiteren Farbwerte sind:
c2 = ( 2 * c0 + 1 * c1 ) / 3; c3 = ( 1 * c0 + 2 * c1 ) / 3;
Bei DXT2 sind die Farbwerte mit dem Alphawert vormultipliziert!
DXT4/5 ed
- Blockgröße: 128bit = 16 byte
- Farbtiefe: 16bit
- Alphatiefe: 8bit
Offset Größe Bedeutung 0bit 8bit Alphawert a0 8bit 8bit Alphawert a1 16bit 48bit Alpha-Tabelle (4*4 Pixel mit je 3 bit) 64bit 16bit Farbwert c0 (rgb 5:6:5) 80bit 16bit Farbwert c1 (rgb 5:6:5) 96bit 32bit Pixel-Tabelle (4*4 Pixel mit je 2 bit)
Die weiteren Alpha- und Farbwerte sind:
if ( a0 > a1 ){
a2 = ( 6 * a0 + 1 * a1 ) / 7;
a3 = ( 5 * a0 + 2 * a1 ) / 7;
a4 = ( 4 * a0 + 3 * a1 ) / 7;
a5 = ( 3 * a0 + 4 * a1 ) / 7;
a6 = ( 2 * a0 + 5 * a1 ) / 7;
a7 = ( 1 * a0 + 6 * a1 ) / 7;
}else{
a2 = ( 4 * a0 + 1 * a1 ) / 5;
a3 = ( 3 * a0 + 2 * a1 ) / 5;
a4 = ( 2 * a0 + 3 * a1 ) / 5;
a5 = ( 1 * a0 + 4 * a1 ) / 5;
a6 = 0;
a7 = 255;
}
c2 = ( 2 * c0 + 1 * c1 ) / 3;
c3 = ( 1 * c0 + 2 * c1 ) / 3;Bei DXT4 sind die Farbwerte mit dem Alphawert vormultipliziert!
Categories: Computer, Dateiformate