描画に関係しないシステム的な部分。ロードのインターフェイス。(空デカール)あと、モデルのファイル、実行ファイル及び、プロジェクトファイルが入っています。今回も4パス使ってます。それぞれのパスでは次の手順を踏んでます。深度と1パス目のテクスチャーの深度を比較し影の部分を算出し、ぼかしたエッジを掛けて影をぼかす■パス1:深度をレンダリング最初に深度をテクスチャーにレンダリングします。今回も、透視影マップのゆがんだ画面です。幾何学的には位置ベクトルに行列を掛けてライト方向からの透視変換した後の座標を計算します。(Zfar-Znear)を使います。c15.yピクセルシェーダーとしては、その色を与えれば十分です。v0c言語の部分は、テクスチャーにレンダリングする設定をしてから、画面をクリアしてからモデルを描画します。bBg);■パス2:深度のエッジを作る次は、深度に関するエッジを取ります。具体的には、ピクセルの対角的な成分の差をとって、和をとります。頂点シェーダーは隣り合うピクセルの中心座標を取るようにテクスチャー座標をずらします。c23ピクセルシェーダーでは、差の値を大きくしながらピクセル差をとります。4(1-64((t3.a-t0.a)^2+(t2.a-t1.a)^2))レンダリング対象は、先ほどとは違うテクスチャーにレンダリングします。使うテクスチャーは深度を描き込んだテクスチャーです。);■パス3:エッジをぼかす次に、作成した深度エッジをぼかします。ぼかす方法は16サンプルボックスフィルターです。エッジを取ったときよりも一回り大きいテクセル座標でテクスチャー座標をずらします。c33ピクセルシェーダーでは、それぞれのテクセルの平均を取ります。r1_bx2今度もまた、別のテクスチャーにレンダリングします。ビデオメモリを節約する方法として、深度のテクスチャーのRGBもしくはα成分に埋め込む手がありますがそれはお好みでどうぞ。);■パス4:影を作る最後が影を作る部分です。色の成分にやはり深度を入れます。2つのテクスチャー座標にライト方向からのスクリーン座標を入れます。c12.yピクセルシェーダーでは、ぼかしたテクスチャ―を定数に掛けて、影の部分の色を調整します。その部分は減算されず明るいままで、中に行くに従って減算する量は大きくなります。-r0今度は、レンダリングする場所をバックバッファに移して、レンダリングです。ぼかしのテクスチャーと深度比較のために深度のテクスチャーをセットします。bBg);■最後に地面はぼけたんですが、車体に落ちる影がぼけていないのでそこが残念です。エッジが取れていない奥の部分もぼけていませんが、これは調整で何とかできそうです。あと、ぼけかたが一様なので、エッジを取るときやぼかすときに調整したほうがよさそうですね。この画像では目だちませんが、ぼかした結果、一部の影が消える現象が出ます。奥の車のバックミラー周辺の影が消えすぎていたりしています。今回は、影の境界をぼかす方法をとりましたが、ライトの位置をずらして何回かレンダリングする方法も考えられますね。今回のも一つの方法としていいのではないのでしょうか。もどるimagire@gmail.com。