DirectDraw Surface: Unterschied zwischen den Versionen

Aus torgue.net
Zeile 12: Zeile 12:
'''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.
'''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.


Direct3D 6+
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>
* DXT1/DXT2 = BC1 (alpha 1bit)
* DXT3/DXT4 = BC2
* DXT4/DXT5 = BC3
Direct3D 10
* ATI1 = BC4
* ATI2 = BC5
Direct3D 11
* BC6 nur HDR-Texturen
* BC7 ersetzt BC1/2/3 (stark erweitertes BC3)


Verlustbehaftete Texturkomprimierung, S3 Texture Compression (S3TC): DXT1 bis DXT5
Das Texturkomprimierungssystem ''S3 Texture Compression'' (S3TC, DXT1 bis DXT5) gilt als veraltet.
4×4-Pixelblocks in eine 64-Bit- oder 128-Bit-Menge, was zu Kompressionsverhältnissen von 6:1 bei 24-Bit-RGB-Eingangsdaten oder 4:1 bei 32-Bit-RGBA-Eingangsdaten führt.
{| class="wikitable"
 
|+ Übersicht Texturkomprimierungsalgorithmen
BC2/3/5 sind Kombinationen aus BC1 und BC4
|-
== Siehe auch ==
! Bezeichnung !! Synonym !! Datenmaterial !! Kompression !! Palettenfarben !! Liniensegmente !! Einsatzgebiete !! Direct3D
* Basisartikel <ref>Understanding BCn Texture Compression Formats https://www.reedbeta.com/blog/understanding-bcn-texture-compression-formats/ (abgerufen am 03.12.2024)</ref>
|-
* Diskussion auf Nexusmods <ref>Demystifying Textures - Strategies to simultaneously maximize visuals and lower VRAM  https://www.nexusmods.com/fallout4/mods/25799?tab=posts (abgerufen am 27.11.2024)</ref>
| BC1 || DXT1 || RGB (opt. 1-bit-α || 0,5 Byte/Pixel; 6:1 (bei 24bit) || 4 || 1 || Color Maps || 6
|-
| BC2 || DXT2/DXT3 || RGB +4-bit-α || 1 Byte/Pixel; 4:1 || 4 || 1 || ? || 6
|-
| BC3 || DXT4/DXT5 || RGBA || 1 Byte/Pixel; 4:1 || 4 Farbe + 8 α || 1 Farbe + 1 α || Color Maps mit vollständiger α || 6
|-
| BC4 || ATI1 || Graustufen || 0,5 Byte/Pixel; 2:1 || 8 || 1 || Height Maps, Gloss Maps, Graustufenbilder || 10
|-
| BC5 || ATI2 || 2x Graustufen || 1 Byte/Pixel; 2:1 || 8 pro Kanal || 1 pro Kanal || Normal Maps || 10
|-
| BC6H || - || RGB, Fließkomma || 1 Byte/Pixel; 6:1 || 8-16 || 1-2 || HDR Bilder || 11
|-
| BC7 || - || RGB oder RGBA || 1 Byte/Pixel; 4:1 || 4-16 || 1-3 || Hochwerige Color Maps, Color Maps mit vollständiger α || 11
|}
BC2/3/5 sind Kombinationen aus BC1 und BC4, BC6 und BC7 sind 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>
{{refs}}
{{refs}}


[[Kategorie:Bildsynthese]]
[[Kategorie:Bildsynthese]]
[[Kategorie:Datenformat]]
[[Kategorie:Datenformat]]

Version vom 4. Dezember 2024, 16:26 Uhr

DDS Speicheroptionen in paint.net 5.1

Direct Draw Surface (DDS) ist ein von Microsoft eingeführtes Dateiformat (Endung .dds) zur Optimierung und Speicherung von Texturen bzw. Cube Maps oder Mipmaps, das erstmals in DirectX 7.0 vorgestellt wurde.[1]

Die DDS-Datei wurde extra für die Spieleindustrie entwickelt und hier vor allem mit dem Direct X SDK verbreitet. Spieleentwickler nutzen diese Dateien vor allem für das Speichern der Modelltexturen, Mipmap-Ebenen und Cubemaps. Um die Daten zu speichern, werden diese mit einem S3-Texturkomprimierungsalgoritmus verkleinert. In der Regel unterstützen Grafikkarten S3TC/DXTn-Komprimierungen. Dieses Verfahren wird als DXTn-Textur bezeichnet. Bei diesen Verfahren kommt es allerdings zu gewissen Qualitätseinbußen. [2]

Mit Materialize aus der Diffuse Map (_d) erstellte Normal (_n), Bump (_b), und Specular Map (_s), alle 256x256 Pixel groß


BCn-Texturkompression

Bildvergleich RAW BC1 BC7, 4x4 Blöcke mit begrenzter Farbvariation
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 „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.[3]

Das Texturkomprimierungssystem S3 Texture Compression (S3TC, DXT1 bis DXT5) gilt als veraltet.

Übersicht Texturkomprimierungsalgorithmen
Bezeichnung Synonym Datenmaterial Kompression Palettenfarben Liniensegmente Einsatzgebiete Direct3D
BC1 DXT1 RGB (opt. 1-bit-α 0,5 Byte/Pixel; 6:1 (bei 24bit) 4 1 Color Maps 6
BC2 DXT2/DXT3 RGB +4-bit-α 1 Byte/Pixel; 4:1 4 1 ? 6
BC3 DXT4/DXT5 RGBA 1 Byte/Pixel; 4:1 4 Farbe + 8 α 1 Farbe + 1 α Color Maps mit vollständiger α 6
BC4 ATI1 Graustufen 0,5 Byte/Pixel; 2:1 8 1 Height Maps, Gloss Maps, Graustufenbilder 10
BC5 ATI2 2x Graustufen 1 Byte/Pixel; 2:1 8 pro Kanal 1 pro Kanal Normal Maps 10
BC6H - RGB, Fließkomma 1 Byte/Pixel; 6:1 8-16 1-2 HDR Bilder 11
BC7 - RGB oder RGBA 1 Byte/Pixel; 4:1 4-16 1-3 Hochwerige Color Maps, Color Maps mit vollständiger α 11

BC2/3/5 sind Kombinationen aus BC1 und BC4, BC6 und BC7 sind komplexer als die Vorgänger, liefern aber bessere Ergebnisse. [4]


Einzelnachweise

  1. ↑ DirectDraw Surface https://de.wikipedia.org/wiki/DirectDraw_Surface (abgerufen am 27.11.2024)
  2. ↑ PC-Tipps 2022: Was ist eine DDS-Datei?https://pctipps.de/dds-datei/ (abgerufen am 27.11.2024)
  3. ↑ Nathan Reed 2012: Understanding BCn Texture Compression Formats https://www.reedbeta.com/blog/understanding-bcn-texture-compression-formats/ (abgerufen am 03.12.2024)
  4. ↑ S3 Texture Compression https://en.wikipedia.org/wiki/S3_Texture_Compression (abgerufen am 04.12.2024)