Texturkompression: Unterschied zwischen den Versionen
GHAG (Diskussion | Beiträge) (Weiterleitung nach DirectDraw Surface erstellt) Markierung: Neue Weiterleitung |
GHAG (Diskussion | Beiträge) (Weiterleitung auf DirectDraw Surface entfernt) Markierung: Weiterleitung entfernt |
||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
# | == BCn-Texturkompression == | ||
[[Datei:Bildvergleich RAW BC1 BC7.webp|mini|Bildvergleich RAW BC1 BC7, 4x4 Blöcke mit begrenzter Farbvariation]] | |||
[[Datei:RGB-Farbraum.webp|mini|RGB-Farbraum mit BCn-Block]] | |||
Die GPU-unterstützte Texturkomprimierung ist eine Reihe von sieben Formaten, die BC1 bis BC7 genannt werden. Diese Formate werden von fast allen realistischen 3D-Spielen verwendet, um den Speicherbedarf ihrer Texturkarten zu reduzieren. | |||
'''BC''' steht für „'''B'''lock '''C'''ompression”, und die BCn-Formate arbeiten alle in Form von 4×4-Pixelblöcken. Alle Bilder werden in diese kleinen Blöcke unterteilt, und jeder Block ist in sich geschlossen - die Daten zur Dekodierung befinden sich alle in einem zusammenhängenden Stück im Speicher. Außerdem ist die Größe jedes komprimierten Blocks festgelegt - entweder 8 oder 16 Byte, je nachdem, welches BCn-Format verwendet wird. Dies entspricht einem Kompressionsverhältnis von 4:1 oder 8:1, wenn das Quellbild im 8-Bit-RGBA-Format vorliegt. | |||
Jeder Block in einem BCn-Bild verfügt über eine sehr kleine Farbpalette, aus der nur wenige Farben ausgewählt werden können. Die Pixel werden dann als Indizes in dieser Palette kodiert, was nur eine Handvoll Bits pro Pixel erfordert, da die Palette so klein ist. Die Palette wird weiter komprimiert, indem davon ausgegangen wird, dass alle Farben gleichmäßig entlang eines Liniensegments im RGB-Raum angeordnet sind. Dann müssen in der Datei nur die Endpunkte dieser Linie gespeichert werden, und alle anderen Paletteneinträge werden durch Mischen der beiden Endpunkte in unterschiedlichen Proportionen rekonstruiert.<ref>Nathan Reed 2012: Understanding BCn Texture Compression Formats https://www.reedbeta.com/blog/understanding-bcn-texture-compression-formats/ (abgerufen am 03.12.2024)</ref> | |||
Das Texturkomprimierungssystem ''S3 Texture Compression'' ([[Glossar#S3TC|S3TC]], DXT1 bis DXT5) gilt als veraltet. [[Glossar#RGTC|RGTC]] ist nah verwandt mit S3TC und komprimiert wie α-DXT5. | |||
BC2/3/5 sind Kombinationen aus BC1 und BC4, [[Glossar#BPTC|BPTC]] (BC6 und BC7) ist Stand der Technik in Desktop-GPUs, komplexer als die Vorgänger, liefern aber bessere Ergebnisse. <ref>S3 Texture Compression https://en.wikipedia.org/wiki/S3_Texture_Compression (abgerufen am 04.12.2024)</ref> | |||
Vornehmlich in Mobil-GPUs: | |||
* ETC, wie S3TC | |||
* EAC, wie RGTC | |||
{| class="wikitable" | |||
|+ Übersicht Texturkomprimierungsalgorithmen Desktop-GPUs | |||
|- | |||
! Bezeichnung !! DirectX, OpenGL !! Datenmaterial !! Kompression !! Palettenfarben !! Liniensegmente !! Einsatzgebiete !! Direct3D | |||
|- | |||
| BC1 || S3TC DXT1 || RGB (opt. 1-bit-α || 0,5 Byte/Pixel; 6:1 (bei 24bit) || 4 || 1 || Color Maps || 6-9 | |||
|- | |||
| BC2 || S3TC DXT2/DXT3 || RGB +4-bit-α || 1 Byte/Pixel; 4:1 || 4 || 1 || ? || 6-9 | |||
|- | |||
| BC3 || S3TC DXT4/DXT5 || RGBA || 1 Byte/Pixel; 4:1 || 4 Farbe + 8 α || 1 Farbe + 1 α || Color Maps mit vollständiger α || 6-9 | |||
|- | |||
| BC4 || RGTC1 ATI1 || Graustufen || 0,5 Byte/Pixel; 2:1 || 8 || 1 || Height Maps, Gloss Maps, Graustufenbilder || 10 | |||
|- | |||
| BC5 || RGTC2 ATI2 || 2x Graustufen || 1 Byte/Pixel; 2:1 || 8 pro Kanal || 1 pro Kanal || Normal Maps || 10 | |||
|- | |||
| BC6H || BPTC || RGB, Fließkomma || 1 Byte/Pixel; 6:1 || 8-16 || 1-2 || HDR Bilder || 11 | |||
|- | |||
| BC7 || BPTC || RGB oder RGBA || 1 Byte/Pixel; 4:1 || 4-16 || 1-3 || Hochwerige Color Maps, Color Maps mit vollständiger α || 11 | |||
|} | |||
== Siehe auch == | |||
* Maister's Graphics Adventures 2020: Compressed GPU texture formats – a review and compute shader decoders – [https://themaister.net/blog/2020/08/12/compressed-gpu-texture-formats-a-review-and-compute-shader-decoders-part-1/ part 1/3] [https://themaister.net/blog/2020/08/30/compressed-gpu-texture-formats-a-review-and-compute-shader-decoders-part-2/ part 2/3] [https://themaister.net/blog/2021/08/29/compressed-gpu-texture-formats-a-review-and-compute-shader-decoders-part-3-3/ part 3/3] | |||
[[Kategorie:Bildsynthese]] | |||
Aktuelle Version vom 6. Dezember 2024, 08:51 Uhr
BCn-Texturkompression
Die GPU-unterstützte Texturkomprimierung ist eine Reihe von sieben Formaten, die BC1 bis BC7 genannt werden. Diese Formate werden von fast allen realistischen 3D-Spielen verwendet, um den Speicherbedarf ihrer Texturkarten zu reduzieren.
BC steht für „Block Compression”, und die BCn-Formate arbeiten alle in Form von 4×4-Pixelblöcken. Alle Bilder werden in diese kleinen Blöcke unterteilt, und jeder Block ist in sich geschlossen - die Daten zur Dekodierung befinden sich alle in einem zusammenhängenden Stück im Speicher. Außerdem ist die Größe jedes komprimierten Blocks festgelegt - entweder 8 oder 16 Byte, je nachdem, welches BCn-Format verwendet wird. Dies entspricht einem Kompressionsverhältnis von 4:1 oder 8:1, wenn das Quellbild im 8-Bit-RGBA-Format vorliegt.
Jeder Block in einem BCn-Bild verfügt über eine sehr kleine Farbpalette, aus der nur wenige Farben ausgewählt werden können. Die Pixel werden dann als Indizes in dieser Palette kodiert, was nur eine Handvoll Bits pro Pixel erfordert, da die Palette so klein ist. Die Palette wird weiter komprimiert, indem davon ausgegangen wird, dass alle Farben gleichmäßig entlang eines Liniensegments im RGB-Raum angeordnet sind. Dann müssen in der Datei nur die Endpunkte dieser Linie gespeichert werden, und alle anderen Paletteneinträge werden durch Mischen der beiden Endpunkte in unterschiedlichen Proportionen rekonstruiert.[1]
Das Texturkomprimierungssystem S3 Texture Compression (S3TC, DXT1 bis DXT5) gilt als veraltet. RGTC ist nah verwandt mit S3TC und komprimiert wie α-DXT5.
BC2/3/5 sind Kombinationen aus BC1 und BC4, BPTC (BC6 und BC7) ist Stand der Technik in Desktop-GPUs, komplexer als die Vorgänger, liefern aber bessere Ergebnisse. [2]
Vornehmlich in Mobil-GPUs:
- ETC, wie S3TC
- EAC, wie RGTC
| Bezeichnung | DirectX, OpenGL | Datenmaterial | Kompression | Palettenfarben | Liniensegmente | Einsatzgebiete | Direct3D |
|---|---|---|---|---|---|---|---|
| BC1 | S3TC DXT1 | RGB (opt. 1-bit-α | 0,5 Byte/Pixel; 6:1 (bei 24bit) | 4 | 1 | Color Maps | 6-9 |
| BC2 | S3TC DXT2/DXT3 | RGB +4-bit-α | 1 Byte/Pixel; 4:1 | 4 | 1 | ? | 6-9 |
| BC3 | S3TC DXT4/DXT5 | RGBA | 1 Byte/Pixel; 4:1 | 4 Farbe + 8 α | 1 Farbe + 1 α | Color Maps mit vollständiger α | 6-9 |
| BC4 | RGTC1 ATI1 | Graustufen | 0,5 Byte/Pixel; 2:1 | 8 | 1 | Height Maps, Gloss Maps, Graustufenbilder | 10 |
| BC5 | RGTC2 ATI2 | 2x Graustufen | 1 Byte/Pixel; 2:1 | 8 pro Kanal | 1 pro Kanal | Normal Maps | 10 |
| BC6H | BPTC | RGB, Fließkomma | 1 Byte/Pixel; 6:1 | 8-16 | 1-2 | HDR Bilder | 11 |
| BC7 | BPTC | RGB oder RGBA | 1 Byte/Pixel; 4:1 | 4-16 | 1-3 | Hochwerige Color Maps, Color Maps mit vollständiger α | 11 |
Siehe auch
- Maister's Graphics Adventures 2020: Compressed GPU texture formats – a review and compute shader decoders – part 1/3 part 2/3 part 3/3
- ↑ Nathan Reed 2012: Understanding BCn Texture Compression Formats https://www.reedbeta.com/blog/understanding-bcn-texture-compression-formats/ (abgerufen am 03.12.2024)
- ↑ S3 Texture Compression https://en.wikipedia.org/wiki/S3_Texture_Compression (abgerufen am 04.12.2024)