XNA メモ – HLSLを使用して画面をセピア調にする方法

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

今回は、前回に引き続きHLSLを使って画面の色を反転する方法で紹介した処理を少しだけ変更し、違うエフェクトを作る方法を紹介します。

 

今回は前回実装したモノクロ処理に少しだけ処理を追加して、画面をセピア調に変更します。

 

まず、ピクセルの色を白黒からセピア調へ変更する際に使う色を.fxファイル内の上部に宣言します。

float4 sepiaTone = float4( 1.0f, 0.8f, 0.0f, 1.0f );  /ピクセルの調整値。

次に、ピクセルシェーダー内での処理で、前章同様白黒の色を計算し、その色に上記の色を掛けます。

float4 Sepia(PS_INPUT p) : COLOR0

{

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

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

// 色を白黒化する

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

//セピア調の色を計算する

col = tempPixel * sepiaTone;

return col;

}

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

technique Flip

{

pass Pass0

{

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

}

}

 

結構前のメモや、前回の物をそのまま使用した場合、これだけで動きます。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中