~■はじめにただの陰影計算ではつまりません。影をつけてみましょう。今回のプログラムは、次のものです。DirectX9)まぁ、いつものように適当にファイルが入っています。出力されるフレームワークのファイルは紹介を省かせていただきます。ダイアログを管理するクラスのヘッダあと、実行ファイル、リソースファイル、プロジェクトファイルが入っています。■何やってるの?今回の方法ですが、レイがぶつかった場所から再びレイを飛ばします。飛ばす方向は、光源の方向です。光源の方向にレイを飛ばして、光源と飛ばした場所の間に物体があれば光は届かないので、その部分を影にします。実際のプログラムは、次のようになります。交差点から出たレイが他の物体と交差しないか検出します。0にして、拡散項の成分を落とします。なる、面が光源の方を向いていないときには、計算は無駄なので影の計算はしないようにしています。}■メッシュ今回は、前回のプログラムを改良してたくさんの3角形を一度に扱うためのメッシュクラスを作りました。メッシュクラスは、3角形等の数と、それらのポインタを格納する配列を持っています。ここは、クラスのポインタを配列として持つのでなくて、データ配列へのポインタを持つようにするのも良いでしょう。クラスに名前を変えました。};メッシュクラスの各メソッドは、プリミティブの個数だけ初期化や交差判定の処理を回しています。交差判定のプログラムは、次のようになっています。っぽいプログラムさて、今回からプログラムの実行時間が長くなってきました。関数で処理をまわしっぱなしにしてしまうと、処理が終了するまでウィンドウの位置が動かせなかったりと、ちょいとしょぼいプログラムになってしまいます。ここらへんで、処理付加を独り占めしない行儀のよいアプリケーションにしてみましょう。手始めに、アプリケーションを変更して、描画関数を1ピクセルずつ処理する関数に変更します。隣のピクセルに移動して、終了します。右までピクセルが移動したら、次に下の段に移動します。右下まで移動したら、本当にレイトレーシングは終了します。