このドキュメントには、BC7 テクスチャ圧縮フォーマット ブロックの 8 つのブロック モードとビット割り当ての一覧が含まれています。
ブロック内の各サブセットの色は、2 つの明示的なエンドポイント の色と、それらの間の補間された色のセットによって表されます。 ブロックのインデックスの有効桁数に応じて、各サブセットの色は 4、8、または 16 にすることができます。
モード 0
BC7 モード 0 には、次の特性があります。
- カラー コンポーネントのみ (アルファなし)
- ブロックあたり 3 つのサブセット
- エンドポイントごとに一意の P ビットを使用する RGBP 4.4.4.1 エンドポイント
- 3 ビット インデックス
- 16 個のパーティション
モード 1
BC7 モード 1 には、次の特性があります。
- カラー コンポーネントのみ (アルファなし)
- ブロックあたり 2 つのサブセット
- サブセットごとに共有 P ビットを使用する RGBP 6.6.6.1 エンドポイント)
- 3 ビット インデックス
- 64 個のパーティション
モード 2
BC7 モード 2 には、次の特性があります。
- カラー コンポーネントのみ (アルファなし)
- ブロックあたり 3 つのサブセット
- RGB 5.5.5 エンドポイント
- 2 ビット インデックス
- 64 個のパーティション
モード 3
BC7 モード 3 には、次の特性があります。
- カラー コンポーネントのみ (アルファなし)
- ブロックあたり 2 つのサブセット
- RGBP 7.7.7.1 エンドポイントと、サブセットごとに一意の P ビット)
- 2 ビット インデックス
- 64 個のパーティション
モード 4
BC7 モード 4 には、次の特性があります。
- 個別のアルファ コンポーネントを持つカラー コンポーネント
- ブロックあたり 1 つのサブセット
- RGB 5.5.5 カラー エンドポイント
- 6 ビットアルファ エンドポイント
- 16 x 2 ビット インデックス
- 16 x 3 ビット インデックス
- 2 ビット コンポーネントの回転
- 1 ビット インデックス セレクター (2 ビットインデックスと 3 ビット インデックスのどちらを使用するか)
モード 5
BC7 モード 5 には、次の特性があります。
- 個別のアルファ コンポーネントを持つカラー コンポーネント
- ブロックあたり 1 つのサブセット
- RGB 7.7.7 カラー エンドポイント
- 8 ビットのアルファ エンドポイント
- 16 x 2 ビット カラー インデックス
- 16 x 2 ビット アルファ インデックス
- 2 ビット コンポーネントの回転
モード 6
BC7 モード 6 には、次の特性があります。
- 色とアルファのコンポーネントを組み合わせたもの
- ブロックごとに 1 つのサブセット
- RGBAP 7.7.7.7.1 カラー (およびアルファ) エンドポイント (エンドポイントごとに一意の P ビット)
- 16 x 4 ビット インデックス
モード 7
BC7 モード 7 には、次の特性があります。
- 色とアルファのコンポーネントを組み合わせたもの
- ブロックあたり 2 つのサブセット
- RGBAP 5.5.5.5.1 カラー (およびアルファ) エンドポイント (エンドポイントごとに一意の P ビット)
- 2 ビット インデックス
- 64 個のパーティション
備考
モード 8 (最下位バイトは 0x00 に設定) が予約されています。 エンコーダーでは使用しないでください。 このモードをハードウェアに渡すと、すべてのゼロに初期化されたブロックが返されます。
BC7 では、次のいずれかの方法でアルファ コンポーネントをエンコードできます。
明示的なアルファ コンポーネント エンコードを使用しないブロック型。 これらのブロックでは、カラー エンドポイントには RGB のみのエンコードがあり、アルファ コンポーネントはすべてのテクセルに対して 1.0 にデコードされます。
カラーコンポーネントとアルファコンポーネントを組み合わせたブロックタイプ。 これらのブロックでは、エンドポイントの色の値が RGBA 形式で指定され、アルファ コンポーネントの値が色の値と共に補間されます。
色とアルファのコンポーネントが分離されたブロック型。 これらのブロックでは、色とアルファの値は個別に指定され、それぞれに独自のインデックス セットが含まれます。 その結果、有効なベクトルとスカラー チャネルが個別にエンコードされます。ここで、ベクターは一般的にカラー チャネル [R, G, B] を指定し、スカラーはアルファ チャネル [A] を指定します。 この方法をサポートするために、エンコードには個別の 2 ビット フィールドが用意されています。これにより、個別のチャネル エンコードをスカラー値として指定できます。 その結果、ブロックは、このアルファ エンコードの次の 4 つの異なる表現のいずれかを持つことができます (2 ビット フィールドで示されます)。
- RGB|A: アルファ チャネル分離
- AGB|R: "red" カラー チャネルセパレート
- RAB|G: "緑" カラー チャネル分離
- RGA|B: "青" カラー チャネル分離
デコーダーはデコード後にチャネルの順序を RGBA に戻すため、内部ブロック形式は開発者には見えません。 色とアルファのコンポーネントが異なるブロックには、ベクトル化されたチャネルのセット用とスカラー チャネル用の 2 つのインデックス データ セットもあります。 (モード 4 の場合、これらのインデックスは幅 [2 または 3 ビット] が異なります。モード 4 には、ベクトルまたはスカラー チャネルが 3 ビット インデックスを使用するかどうかを指定する 1 ビット セレクターも含まれています)。
関連トピック