memo : Gatherがサンプリングする位置

 カテゴリー: Direct3D11 — Kaori @ 5 月 19th, 2010

GatherはDirectX10.1から使える機能の1つで4サンプルを1度にとってこられるものです。
Gatherを使うと4つのピクセルのRGBを3命令でとってくることができます。

今までは
Sample( sampler, uv )
Sample( sampler, uv + offset0 )
Sample( sampler, uv + offset1 )
Sample( sampler, uv + offset2 )
とやっていたのが
GatherRed( sampler, uv );
GatherGreen( sampler, uv );
GatherBlue( sampler, uv );
で取れるということです。

が、いざ使ってみようと思ったら、
Gatherに指定するuvとフェッチされるサンプルの位置についての記述が見当たりません。
どこに書いてあるんですか??

仕方ないので調べてみる。
まず普通にテクスチャを描画。
テクスチャは16x16です。(ポイントフィルタで描画)

次に、Gatherでサンプリングした結果を復元して描画

Rチャンネル
uvが0.5ずつ左下にずれている
Gチャンネル
uvが0.5ずつ右下にずれている
Bチャンネル
uvが0.5ずつ右上にずれている
Aチャンネル
uvが0.5ずつ左上にずれている

ということで、
- Gatherに指定するuv → 中心
- Gatherでサンプリングする位置 → 中心±0.5テクセルの位置

Gatherに指定するuvをPとすると、
RGBA各チャンネルのサンプリングポイントは以下の図のようになる

まあ予想通りというか普通な結果ですが、
指定したuvはサンプリングされないということです。
それと、Gatherを使う場合はリニアフィルタが利かないです。

コメントはまだありません »

コメントはまだありません。

このコメント欄の RSS フィード TrackBack URI

コメントをどうぞ

You must be logged in to post a comment.

ホットワード サンプリング 位置 カテゴリー
割引クーポンまとめ情報 - クー割