BC7-Formatmodusreferenz
Diese Dokumentation enthält eine Liste der 8 Blockmodi und Bitzuordnungen für BC7-Texturkomprimierungsformatblöcke.
Die Farben für jede Teilmenge in einem Block werden durch zwei explizite Endpunktfarben und einen Satz interpolierter Farben zwischen ihnen dargestellt. Abhängig von der Indexgenauigkeit des Blocks kann jede Teilmenge 4, 8 oder 16 mögliche Farben aufweisen.
Modus 0
BC7 Mode 0 weist die folgenden Merkmale auf:
- Nur Farbkomponenten (kein Alpha)
- 3 Teilmengen pro Block
- RGBP 4.4.4.1-Endpunkte mit einem eindeutigen P-Bit pro Endpunkt
- 3-Bit-Indizes
- 16 Partitionen
Modus 1
BC7 Mode 1 weist die folgenden Merkmale auf:
- Nur Farbkomponenten (kein Alpha)
- 2 Teilmengen pro Block
- RGBP 6.6.6.1-Endpunkte mit einem freigegebenen P-Bit pro Teilmenge)
- 3-Bit-Indizes
- 64 Partitionen
Modus 2
BC7 Mode 2 weist die folgenden Merkmale auf:
- Nur Farbkomponenten (kein Alpha)
- 3 Teilmengen pro Block
- RGB 5.5.5-Endpunkte
- 2-Bit-Indizes
- 64 Partitionen
Modus 3
BC7 Mode 3 weist die folgenden Merkmale auf:
- Nur Farbkomponenten (kein Alpha)
- 2 Teilmengen pro Block
- RGBP 7.7.7.1-Endpunkte mit einem eindeutigen P-Bit pro Teilmenge)
- 2-Bit-Indizes
- 64 Partitionen
Modus 4
BC7 Mode 4 weist die folgenden Merkmale auf:
- Farbkomponenten mit separater Alphakomponente
- 1 Teilmenge pro Block
- RGB 5.5.5 Farbendpunkte
- 6-Bit-Alphaendpunkte
- 16 x 2-Bit-Indizes
- 16 x 3-Bit-Indizes
- 2-Bit-Komponentenrotation
- 1-Bit-Indexauswahl (unabhängig davon, ob die 2- oder 3-Bit-Indizes verwendet werden)
Modus 5
BC7 Modus 5 weist die folgenden Merkmale auf:
- Farbkomponenten mit separater Alphakomponente
- 1 Teilmenge pro Block
- RGB 7.7.7 Farbendpunkte
- 8-Bit-Alphaendpunkte
- 16 x 2-Bit-Farbindizes
- 16 x 2-Bit-Alphaindizes
- 2-Bit-Komponentenrotation
Modus 6
BC7 Modus 6 weist die folgenden Merkmale auf:
- Kombinierte Farb- und Alphakomponenten
- Eine Teilmenge pro Block
- RGBAP 7.7.7.7.1 Farbendpunkte (und Alpha) (eindeutiges P-Bit pro Endpunkt)
- 16 x 4-Bit-Indizes
Modus 7
DER BC7-Modus 7 weist die folgenden Merkmale auf:
- Kombinierte Farb- und Alphakomponenten
- 2 Teilmengen pro Block
- RGBAP 5.5.5.5.1 Farbendpunkte (und Alpha) (eindeutiges P-Bit pro Endpunkt)
- 2-Bit-Indizes
- 64 Partitionen
Bemerkungen
Modus 8 (das am wenigsten signifikante Byte ist auf 0x00 festgelegt) ist reserviert. Verwenden Sie es nicht in Ihrem Encoder. Wenn Sie diesen Modus an die Hardware übergeben, wird ein Block zurückgegeben, der mit allen Nullen initialisiert ist.
In BC7 können Sie die Alphakomponente auf eine der folgenden Arten codieren:
Blocktypen ohne explizite Alphakomponentencodierung. In diesen Blöcken verfügen die Farbendpunkte über eine reine RGB-Codierung, wobei die Alphakomponente für alle Texel auf 1.0 decodiert ist.
Blocktypen mit kombinierten Farb- und Alphakomponenten. In diesen Blöcken werden die Endpunktfarbwerte im RGBA-Format angegeben, und die Werte der Alphakomponente werden zusammen mit den Farbwerten interpoliert.
Blocktypen mit getrennten Farb- und Alphakomponenten. In diesen Blöcken werden die Farb- und Alphawerte separat angegeben, jeweils mit einem eigenen Satz von Indizes. Infolgedessen verfügen sie über einen effektiven Vektor und einen skalaren Kanal separat codiert, wobei der Vektor häufig die Farbkanäle [R, G, B] und der Skalar den Alphakanal [A] angibt. Zur Unterstützung dieses Ansatzes wird ein separates 2-Bit-Feld in der Codierung bereitgestellt, das die Angabe der separaten Kanalcodierung als skalaren Wert zulässt. Daher kann der Block eine der folgenden vier verschiedenen Darstellungen dieser Alphacodierung aufweisen (wie im 2-Bit-Feld angegeben):
- RGB| A: Alphakanal getrennt
- AGB| R: "roter" Farbkanal getrennt
- RAB| G: "grüner" Farbkanal getrennt
- RGA| B: "blauer" Farbkanal getrennt
Der Decoder sortiert die Kanalreihenfolge nach der Decodierung wieder in RGBA um, sodass das interne Blockformat für den Entwickler nicht sichtbar ist. Blöcke mit separaten Farb- und Alphakomponenten verfügen auch über zwei Sätze von Indexdaten: einen für den vektorierten Satz von Kanälen und einen für den skalaren Kanal. (Im Fall des Modus 4 sind diese Indizes unterschiedlich breit [2 oder 3 Bit]. Modus 4 enthält auch einen 1-Bit-Selektor, der angibt, ob der Vektor oder der skalare Kanal die 3-Bit-Indizes verwendet.)
Zugehörige Themen