BC7について段階的にデコードしてみた


BC7のCPUデコーダーを作っている過程でおもしろいものが確認できたので記事にしてみました。当たり前の話ではあるのですが、視覚化されたケースって無いようなので。
BC7 はいわゆる第2世代のテクスチャ圧縮技術で、各ブロックごとに最適なモードを選択してデータを圧縮しています。このブロックがどんな風に割り当てられているかを、ブロックごとの色分けで塗ってみたら以下のような結果を得られました。

image_partition

この段階でも各ブロックの特徴によってモード選択されているのが確認できます。そのためおおよその画像の検討が付く程度にはなっています。これらのブロック種別を順番に展開してみます。

image_decode_step1

この段階ではあまりわかりませんが、一部のブロックがデコード済みになってます。そして何となく同じような画像パターンがデコードされていることに気付けそうな気がします。
image_decode_step2

ようやく部分デコードされた感覚が出てきました。

image_decode_step3

image_decode_step4

この段階でもう随分と絵が完成してきました。しかし↑の段階ではまだモードは半分しか終わっていません。

image_decode_step5

image_decode_step6

背景部分も終わり、あともう少しです。

image_decode_step7

あとは輪郭部分のみを残す段階となりました。

image_decode_step8

デコードが完了しました。
順番に見てみると適切にブロックを選択して画質の向上を狙っているフォーマットであることがわかりました。今回と同じように BC6H もブロックごとにデコードできるので同じように進捗を確認してみることができます。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする