XNAメモ – HLSLを使って画面を白黒にする方法

Posted: 2012年4月10日 カテゴリー: プログラミングメモ, XNA, XNAメモ
タグ:, , , , , ,

このメモでは、結構前のメモで紹介した色を反転させる処理を少しだけ変更し、画面の色を白黒に変える処理を紹介します。

 

このメモでの処理は、前回のコードを1行だけ変更すれば実装できるので、同じ説明でスペースと時間を無駄にしないため変更部分だけを解説します。なので、このメモを読む前に前のメモを読むことを強くオススメします。

 

では実装に入ります。前回の処理と違うのは、ピクセルシェーダー内で画面の色を変更する時の計算方法だけです。前回は[1 – colour.rgb]の式を使用して色を反転させましたが、今回はRGB値の平均を計算することで、白黒化した色を獲得できます。

 

.fxファイル内の、ピクセルシェーダーの関数は前章のから以下の用に変更されます。

float4 Monotone(PS_INPUT p) : COLOR0

{

// テクスチャアから現在の座標の色を獲得する

float4 col = tex2D( samplerState, p.TextureCoord.xy );

// 色を白黒化する

col.rgb = ( col.r + col.g + col.b ) * 0.3333f;

// 白黒の色を返す

return col;

}

これで後は、関数を呼ぶのを忘れないようにするだけです。

technique Flip

{

pass Pass0

{

PixelShader = compile ps_2_0 Monotone(); // Negative()から変更

}

}

 

 

コメント
  1. […] XNAメモ – HLSLを使って画面を白黒にする方法 […]

  2. […] XNAメモ – HLSLを使って画面を白黒にする方法 […]

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中