BC7 フォーマット モード リファレンス

このドキュメントには、BC7 テクスチャ圧縮形式ブロックの 8 つのブロック モードとビット割り当ての一覧が含まれています。

ブロック内の各サブセットの色は、2 つの明示的なエンドポイントの色とその間の補間された色のセットで表されます。 ブロックのインデックスの精度に応じて、各サブセットは 4、8 または 16 の色を持つことができます。

モード 0

BC7 モード 0 には以下の特徴があります。

  • カラー成分のみ (アルファなし)
  • ブロックごとに 3 つのサブセット
  • エンドポイントごとに固有の P ビットを持つ、RGBP 4.4.4.1 エンドポイント
  • 3 ビット インデックス
  • 16 パーティション

モード 0 のビット レイアウト

モード 1

BC7 モード 1 には以下の特徴があります。

  • カラー成分のみ (アルファなし)
  • ブロックごとに 2 つのサブセット
  • エンドポイントごとに 1 つの共有 P ビットを持つ、RGBP 6.6.6.1 エンドポイント)
  • 3 ビット インデックス
  • 64 パーティション

モード 1 のビット レイアウト

モード 2

BC7 モード 2 には以下の特徴があります。

  • カラー成分のみ (アルファなし)
  • ブロックごとに 3 つのサブセット
  • RGB 5.5.5 エンドポイント
  • 2 ビット インデックス
  • 64 パーティション

モード 2 のビット レイアウト

モード 3

BC7 モード 3 には以下の特徴があります。

  • カラー成分のみ (アルファなし)
  • ブロックごとに 2 つのサブセット
  • サブセットごとに固有の P ビットを持つ、RGBP 7.7.7.1 エンドポイント)
  • 2 ビット インデックス
  • 64 パーティション

モード 3 のビット レイアウト

モード 4

BC7 モード 4 には以下の特徴があります。

  • 別のアルファ成分を持つカラー成分
  • ブロックごとに 1 つのサブセット
  • RGB 5.5.5 カラー エンドポイント
  • 6 ビットのアルファ エンドポイント
  • 16 個の 2 ビット インデックス
  • 16 個の 3 ビット インデックス
  • 2 ビット成分回転
  • 1 ビットのインデックス セレクター (2 ビットまたは 3 ビットのインデックスの使用を指定する)

モード 4 のビット レイアウト

モード 5

BC7 モード 5 には以下の特徴があります。

  • 別のアルファ成分を持つカラー成分
  • ブロックごとに 1 つのサブセット
  • RGB 7.7.7 カラー エンドポイント
  • 8 ビット アルファ エンドポイント
  • 16 個の 2 ビット カラー インデックス
  • 16 個の 2 ビット アルファ インデックス
  • 2 ビット成分回転

モード 5 のビット レイアウト

モード 6

BC7 モード 6 には以下の特徴があります。

  • 色成分とアルファ成分の結合
  • ブロックごとに 1 つのサブセット
  • RGBAP 7.7.7.7.1 カラー (およびアルファ) エンドポイント (エンドポイントごとに固有の P ビット)
  • 16 個の 4 ビット インデックス

モード 6 のビット レイアウト

モード 7

BC7 モード 7 には以下の特徴があります。

  • 色成分とアルファ成分の結合
  • ブロックごとに 2 つのサブセット
  • RGBAP 5.5.5.5.1 カラー (およびアルファ) エンドポイント (エンドポイントごとに固有の P ビット)
  • 2 ビット インデックス
  • 64 パーティション

モード 7 のビット レイアウト

注釈

モード 8 (最下位バイトは 0x00 に設定されます) は予約されています。 エンコーダーで使用しないでください。 このモードをハードウェアに渡すと、すべてゼロに初期化されたブロックが返されます。

BC7 では、次のいずれかの方法でアルファ成分をエンコードできます。

  • 明示的なアルファ成分エンコーディングのないブロック タイプ。 これらのブロックでは、カラー エンドポイントには RGB のみのエンコードがあり、アルファ成分はすべてのテクセルに対して 1.0 にデコードされます。

  • 色成分とアルファ成分を組み合わせたブロック タイプ。 これらのブロックでは、エンドポイントのカラー値は RGBA 形式で指定され、アルファ成分の値は、カラー値と共に補間されます。

  • 色成分とアルファ成分が分離されたブロック タイプ。 これらのブロックでは、色とアルファの値が別々に指定され、それぞれ独自のインデックス セットを持ちます。 その結果、有効なベクトルとスカラー チャネルが別々にエンコードされます。一般にベクトルはカラー チャネル [R, G, B] を指定し、スカラーはアルファ チャネル [A] を指定します。 この方法をサポートするために、別の 2 ビット フィールドがエンコードに提供されます。これにより、スカラー値として別のチャネル エンコードの指定が可能になります。 その結果、ブロックは、このアルファ エンコードの次の 4 つの異なる表現のうちの 1 つを持つことができます (2 ビット フィールドによって示されます)。

    • RGB|A: アルファ チャネル分離
    • AGB|R: "赤" 色チャネル分離
    • RAB|G: "緑" 色チャネル分離
    • RGA|B: "青" 色チャネル分離

    デコーダーは、デコード後にチャネルの順序を RGBA に戻すため、内部ブロックの形式は開発者には見えません。 異なる色とアルファのコンポーネントを持つブロックには、2 つのインデックス データのセットがあります。1 つはベクター化されたチャネルのセット用、もう 1 つはスカラー チャネル用です。 (モード 4 の場合、これらのインデックスは幅 [2 ビットまたは 3 ビット] が異なります。モード 4 には、ベクターまたはスカラー チャネルが 3 ビット インデックスを使用するかどうかを指定する 1 ビット セレクターも含まれています)。

BC7 形式