PVRTCテクスチャの解析 その4


ようやくデコード(仮)が出来ました。
6種類くらいの並び替え方式を試していたらピタリと当てはまる物があったのです。
これで一段落かと思いきや、2BPPタイプのほうがとても難しい。
今までは割と素直な4BPPタイプの物を扱っていました。
4BPPだと処理単位が正方ブロックでModulation Dataと呼ばれる部分の並びもwhite paperにあったりして、情報が結構そろっている&解説されているためこちらを選んでいました。

しかし、2BPPの物については説明があまりないです。
2種類くらいのpdfを読んで、両者から情報をかき集めてデコードしてみたのですが、それでもまだエラーが残る状態です。

デコード後にエラーが残っている図

2BPPにおいては、Modulation Dataの部分がいろいろと複雑なようです。
まずmodeにより2種類の並びに分岐します。1つは1bitで各ピクセルをColorA or Bを選択する方式、もう一つが並びがチェックパターンとなり、white paperによると補間モードとしてさらに分岐されるとなっています。
問題はこの補間モードにあるのかと考えています。

エラーの部分を抽出

エラーがどの程度発生しているのかを調べるために、2枚の画像を引き算してみました。
その結果下記のように、エラー発生具合にもばらつきがあることがわかりました。
見ているとどうも2種類のケースがあるようで、ブロック範囲全体にエラーが散るケース、規則的にエラーが発生するケースとなっているようにもみえます。
これを2BPPの8×4ブロックで区切ってみるとそれがわかりやすい気がします。

画像の差分と、グリッド表示

このことからブロック最初のピクセル情報として取り出しているデータに関しては別の情報が格納されている可能性がありそうです。

スポンサーリンク

シェアする

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

フォローする