屈折シェーダ #2

昔に実験してみた水面の屈折表現を最近また思い出したかのようにいじっています。以前のものからの変更はマスクの画像を挟んでいるところです。

20130624_distortion_00

駆逐艦がソナーを使って潜水艦を探しているビジュアルです。ちなみに以前の記事はプロセスを書いてなかったですね。今回はレンダーターゲットの画像を載せてみます。

 

20130624_distortion_01

まずシンプルにレンダリングします。

 

20130624_distortion_02

つぎに、法線テクスチャーをレンダリングします。屈折させたい箇所以外はフラットな法線カラーにしておきます。

 

20130624_distortion_03

そして、マスクも白と黒でレンダリング。屈折させたいところとそれ以外を分けます。これは法線と同じレンダーターゲットのアルファに格納しておきます。

屈折は三次元的に計算しているわけではなく、スクリーン座標を参考に二次元的に歪めるという、わりといい加減な計算をしています。法線カラーの値から適当に周囲の色を拾うようにしているので、間違って水中以外の箇所から色を拾わないようにマスク画像を用意しておくわけです。

 

20130624_distortion_04

最初の画像を法線とマスクの画像を参考に歪めた画像です。水面の法線テクスチャーはアニメーションしているので実際はゆらゆらして見えます。

これをゲームプログラムに導入しようかどうか悩んでいるところです。マルチターゲットでレンダリングするとプロセスが途端に複雑になるんですよね。

広告

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中