頂点シェーダープログラム。α成分書き込み付き平行光源ライト。頂点シェーダープログラム。描画に関係しないシステム的な部分。変更が無いので、出番無し。今回も画面サイズは512x512です。今回も、前回のフォーカスと同じようにボケた画像とはっきりした画像を合成します。違いは深度を合成用のパラメータに用いることです。深度を画像にすると、下の用になります(遠い場所が白、近くが黒です)。前回は、はっきりした部分が白、ボケた部分が黒でした。中央の車をはっきりさせたいので、中央が白、手前と奥が黒くなるように変換します。図で記すと、次の変換をします。以上の変換をすると深度は次のようになります。変換した深度このテクスチャーを合成パラメータに使った画像が次のようになります。上の画像を使った被写界深度。作ってみた感想ですが、ピントのあった部分が少なく、中央の車自体にもボケた部分が存在します。そこで、中央の部分を大きくして、ピントの合う部分を増やします。中央が広い深度の変換その画像が下です。中央の部分を広げた深度。このテクスチャーを使用して合成した絵が最初の画像です。z^2))を用いると、さらによい結果が得られるかもしれません。プログラム合成に用いるピクセルシェーダープログラムは次(dof.psh)です。コマンドで、テクスチャーを読み込みます。大きくボケた画像を入力します。それぞれの画像にはα成分に深度が入っています。次の黄色の部分は、今までに出てこなかった事柄です。やっていることは、合成に用いる深度を、はっきりしたテクスチャーと一番ボケたテクスチャーの平均に設定します。2実際の画像として表現すると、次のようになります。=違いは、元の画像でくっきりしていた端の部分が、適度にボケていることです。シャープな画像が得られません。平均をとっても、侵食は避けられないのですが、多少はごまかすことができます。命令が、中央が広い深度の変換をします。大きい時は3項目、小さい時は4項目を読み取ります。折り返す山なりの形が得られます。なるように調整します。値を制限することによって、台形な形の変換をすることができます。残りはテクスチャーの合成です。『テクスチャーは3枚で合成するといいよ』と、いわれたので、今回は3枚で合成しました。命令を使って最終的に合成します。■他のソースでは、それ以外のソースで、フォーカスの時とは違う部分を説明します。今回は、ブラー用のテクスチャーを3枚用意します(nBlurTex=3)。その初期化部分は次のようになります。}実は前回との違いは一箇所です。このフォーマットを指定することにより、α成分に書き込みを行うことができます。違いは定数レジスタの設定が一つ増えている事と、テクスチャーの設定を3つ行っていることです。後は、ボケた画像を作る方法は前回と同じです。レジスタの設定は、モデルを描画する時に反映されます。今回、描画に関して地面や空のモデルも、車と同じレンダリングを行っています。レンダリングのプログラムは、次になります。v7黄色い部分が今回反映されたα成分への深度の書き込みです。命令で、z値を求め(oPos.zと同じ値)、線形合成して適当に変換します。数式では、次のように表されます。範囲にスケーリングします。引いたりしていますが、これは完全に目あわせす。出力される画像がいい感じになるように調整しました。プログラムは次のようになります。色はテクスチャーと頂点色を加算合成し、α成分は上の頂点シェーダープログラムで得られた頂点色を用いています。v0以上が前回からの違いです。■最後に被写界深度を実装しました。『ボクと魔王』を見た時に、やり方が分からず驚愕したのを覚えています。テクスチャーへのレンダリングや、前回のフォーカスは今回の為の前準備といっても過言ではありません。調整が必要なので、思うとおりに使うのは難しいかもしれませんが、レンダリングの効果の一つとして使ってみてはいかがでしょうか。もどるimagire@gmail.com。