BC7のCPUデコーダーを作っている過程でおもしろいものが確認できたので記事にしてみました。当たり前の話ではあるのですが、視覚化されたケースって無いようなので。
BC7 はいわゆる第2世代のテクスチャ圧縮技術で、各ブロックごとに最適なモードを選択してデータを圧縮しています。このブロックがどんな風に割り当てられているかを、ブロックごとの色分けで塗ってみたら以下のような結果を得られました。
この段階でも各ブロックの特徴によってモード選択されているのが確認できます。そのためおおよその画像の検討が付く程度にはなっています。これらのブロック種別を順番に展開してみます。
この段階ではあまりわかりませんが、一部のブロックがデコード済みになってます。そして何となく同じような画像パターンがデコードされていることに気付けそうな気がします。
ようやく部分デコードされた感覚が出てきました。
この段階でもう随分と絵が完成してきました。しかし↑の段階ではまだモードは半分しか終わっていません。
背景部分も終わり、あともう少しです。
あとは輪郭部分のみを残す段階となりました。
デコードが完了しました。
順番に見てみると適切にブロックを選択して画質の向上を狙っているフォーマットであることがわかりました。今回と同じように BC6H もブロックごとにデコードできるので同じように進捗を確認してみることができます。