Top > エフェクト-ガウスフィルタ

エフェクト-ガウスフィルタ

・ガウス関数による係数で複数のピクセルを参照、平滑化しスクリーンをぼかす。


描画パス

1.ガウス分布の計算

2.横方向、縦方向、それぞれ一回ずつぼかしならがレンダリングする。
横軸フィルタ
 ↓
 effect-gauss-h.JPG
 ↓
縦軸フィルタ
 ↓
 effect-gauss.JPG
 ↓
ガウスフィルタ結果

ガウス分布の計算

const int Dispersion = 5.0; // ガウス散乱率
const int Sampling = 8; // サンプリング数

const float dispersion = Dispersion * Dispersion;
const int sample = Sampling / 2;

assert((sample > 0) && (sample <= 8));

// 重さ結果格納
float weight_list[sample] = {0};

// 重み計算
float total = 0.0f;
for (int i = 0 ; i < sample ; ++i) {
  float weight = expf(-0.5f * (i*i)/dispersion);
  total += 2.0f * weight;
  weight_list[i] = weight;
}
for (int i = 0 ; i < sample ; ++i) weight_list[i] /= total;

ぼかしフィルタ

横軸ぼかし:filegauss-h.fx
縦軸ぼかし:filegauss-v.fx

・VertexShaderの計算は、0.5pixelずらすと自動的に補間してくれるらしいのでそれを期待したコードになっています。


添付ファイル: fileeffect-gauss.JPG 731件 [詳細] fileeffect-gauss-h.JPG 636件 [詳細] filegauss-v.fx 538件 [詳細] filegauss-h.fx 647件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2011-08-07 (日) 19:53:54 (4641d)