描画に関係しないシステム的な部分。ロードのインターフェイス。今回の方法は、DrawIndexedPrimitiveの単位でIDを付けて、IDマップを作ります。法線マップのエッジと合成して、IDと法線のエッジを1パスで作ってから、後は同じように合成します。アニメっぽい線が引けることです。具体的な実装方法をしては、IDを振るクラスを作りました。数値をクリアして、GetId()で数値を得ると共に内部の数値を進めます。車の同じ部位に関しては同じ値になるようにしました。ID間の値の差が小さいと、エッジを取ったときにエッジが消える可能性があるので、適当に大きな差が必要になります。車ごとのエッジは深度エッジで取れるので、これで十分です。これをDrawIndexedPrimitiveごとに、定数レジスタに設定しました。for(i=0;i<dwNumMaterials;i++){色の設定。}頂点レジスタでは、色のα成分にIDマップを作ります。c16あとは、エッジを作るピクセルシェーダーが異なります。rレジスタと同じ感覚で使えるので、とても便利ですと、新坂さんに教えていただきました。α成分にIDを入れるのも新坂さんに教えていただいた方法です。本当に新坂さまさまさまです。ps1.xの少ない命令数を補うために、+命令を使って、RGB成分とα成分を同時に別の命令を実行して命令数を稼いでいます。内容的には、α成分の差の2乗を計算して、法線エッジのエッジに足しこんでいます。4(1-64(|t3-t0|^2+|t2-t1|^2))以上が変更点です。これで、IDマップを使ったエッジが作れます。今回は、DrawIndexedPrimitive単位でIDを振りましたが、テクスチャーに入れてデザイナーの自由に設定をすることも出来ます。(当然お分かりかとは思いますが、直接線をデカールとして引くこととの違いはポリゴンが傾いたときでも一定の太さの線が引けるということです)。今回やってみた結果、IDマップは線が綺麗に出ますね。もどるimagire@gmail.com。