DELPHIER

プログラミングを中心にした思いつきの書きとめ場所です。

2002年07月23日

Smart Filtering

スクリーンショット











点補間

点補間

バイリニア

バイリニア

スマートフィルタリング

スマートフィルタリング


ダウンロード


  • プログラム(90kb)
  • ソース(30kb)


  • 要約


    テクスチャのフィルタリングは現代の3Dグラフィックスにおける必須機能である。
    3Dのアクセラレーション機能が登場するまで、リアルタイムテクスチャマッピングには、
    四角っぽさ丸出しの、点補間フィルタだけが使われていた。
    今では、我々はいろいろなフィルタを使うことができる(ミップマップベースの縮小、
    バイリニアフィルタによる拡大など)。



    バイリニアフィルタでは、たいていの場合十分な画質が得られる。
    特に、隣接したテクセルの色が比較的目立たない場合に有効である。
    だが実際には、多くのテクスチャにはくっきりとした境界線で区切られた均一色領域がいくつかある。
    バイリニアフィルタはこれらの境界線を滑らかにしてしまうので、非常にぼやけた画像を作ってしまう。
    人間の視覚は、均一色領域間にあるエッジ(縁)の検出を基本とているので、
    エッジをぼかさずにはっきりと表現することは、とても重要である。



    このデモでは、この問題を解決するために設計したテクスチャのフィルタリング方法を紹介する。

    まず、処理段階において、四つの隣接したテクセルのうち、
    それぞれが似たような色同士であるかどうかを決定する。
    ただ色を比較するだけなので簡単にできる。これには14の場合が考えられる。



    それぞれの場合で、それに見合うフィルタを用いる。

    その1:四つのすべてのテクセルが同じ領域にあるので、
    このテクセルの補間には、バイリニアフィルタを使う。

    その2:上の二つのテクセルと下の二つのテクセルで分かれている。
    水平境界線の上の領域の色は上の2つのテクセルによって線形補間される。
    下の領域も同様に処理する。その他の場合のフィルタも同じような方法で定義される。

    テクセル補間のためのフィルタ番号は、テクスチャと一緒に格納されている(各テクセルに4bitを付加することによって実現している)。
    レンダリング段階では、このフィルタ番号を読み込むことによって、テクセル補間に正確なフィルタを使うことができる。
    だから、このテクニックを使うと、拡大率にかかわらず、均一色領域の間をはっきりとした境界線として表現できる。
    さらに、均一色領域内部にバイリニアフィルタを使うことによって、待望の滑らかさを得る。



    この特殊なデモはちょっと複雑なテクニックを使っている。テクセルごとに付加した4bitが、
    各テクセル間の境界線の位置を正確に記述するのに役立っている。
    だから、テクスチャは24bitを色情報、残り8bitをフィルタ記述子とした、
    32bitTGAファイルとして記憶されている。レンダリングは全て完全にソフトウェアで実装されており、
    スマートテクスチャフィルタリングのための性能は、ソフトウェアでバイリニアフィルタを実装した場合と比べて約10%しかない。
    そんなにいい性能の理由は単純である。典型的なテクスチャ画像では、境界のテクセルの個数は、テクセル内部の個数よりも
    ずっと少ないからである。



    現在のハードウェアはこのテクスチャフィルタリングテクニックをサポートしていないが、
    将来もっとバージョンの進化したプログラマブル・ピクセル・シェーダがハードウェアでの実行を可能にするだろう。






    個人的な感想(訳者による)


    実行画面もとてもきれいで久々に驚いた。
    これをハードウェアがサポートすれば、正に「革命」となりうるだろう。
    320x240の解像度で実行される2Dゲームでも、解像度を上げて、この手法を取り入れれば
    画質が向上すると思われる。

    しかし、α値はどこに格納するのか、などの点が気になった。

    256854 Since 2005-05-01