ロードのインターフェイス。描画に関係しないシステム的な部分。(地面)あと、実行ファイル及び、プロジェクトファイルが入っています。■やってることさて、今回のレンダリングですが、1フレームに6回のレンダリングをしています。大雑把に説明しましょう。最初に火種を猫マップで作成します。次に、燃える場所を描きこんだマップ(「t-pot」ってかいてあるやつね)を環境マップのように3次元のモデルに張り込みます。その張り込んだテクスチャと火種を乗算合成することによって、今回の燃え具合を決定します。次のプロセスは、上に昇る炎を作ることです。今作った燃え具合のテクスチャと、前のフレームの炎の画像を加算合成します。前のフレームの画像は、少し上にずらして色の強さも少々減算します。炎が燃え上がる画像が出来ます。今できた炎は少し置いておいて、次に炎の周りのこげ後を作ります。こげ跡は、燃える場所を描きこんだマップを16箱サンプリングして、ぼかした画像を使います。このレンダリングは、毎回やることは無いのですが、炎が動的に変化するときを考えて、毎回行いました。次に、今できたこげ跡のテクスチャを通常のレンダリングの結果に減算合成してこげ跡を作ります。完全に黒くするより、少し色が残っていたほうが綺麗かなぁと思って、薄く減算しています。こげ跡のついた地形と炎のテクスチャを2次元的に加算すれば、焼け焦げた景色の出来上がりです。■猫マップ一つ目のレンダリングが猫マップです。火種のテクスチャーを並び替えて、動きのある火種を作ります。レンダリング先と元になるテクスチャを入れ替えながらレンダリングします。}最初のフレームだけ元絵を使って、後のフレームでは、前の結果のテクスチャを使用します。■火種がはじけた次に3次元的に燃えている場所を描いたテクスチャをレンダリングします。テクスチャ座標をそのまま出力すれば、レンダリングされます。1);モデルの描画も特に変わったことはありません。今回は、テクスチャ0に燃える場所のレジスタ、テスクチャ1はなし(NULL)を指定することぐらいです。}頂点シェーダ、ピクセルシェーダは簡単なものです。座標変換は普通のワールドから射影空間への変換で、テクスチャ座標はそのままコピーします。今回はテクスチャ1の内容が無いので、テクスチャ1の値がそのまま出力されます。今回はテクスチャ1の内容が無いので、テクスチャ1の値がそのまま出力されます。実は、この段階では、まだ猫マップの結果は合成しません。次の段階で合成します。■炎を昇らせるでは、炎のテクスチャを完成させます。この段階では、テクスチャを3枚使います。2つめは、猫マップの結果、もう一つが前のフレームの炎のテクスチャーです。このレンダリングターゲットも2枚用意して、1フレームごとにテクスチャと役割を切り替えて使います。テクスチャ座標は前のフレームの画像を少し上にあげて出力します。作ってみて、上下が入れ替わっていたものがあったので、ここで修正しました。ピクセルシェーダはそれぞれのテクスチャーを組み合わせます。前のフレームの画像は、読み込んだ直後に減算します。猫マップと燃えあとは、乗算して模様付けした後に前のフレームの画像と合成します。■焦げ跡を作る16箱サンプリングでぼかした焦げ跡のテクスチャを作ります。テクスチャステージステートの設定を万万やっていますが、4つ設定しているだけで、特にすごい設定をしている訳ではありません。基本的には4枚のテクスチャを張るだけです。NULL);頂点シェーダで縦横ずらして表示します。それぞれ別方向にずらしています。■焦げ跡をつける焦げ跡は、減算してレンダリングするだけです。3Dの地面のモデルに張ります。燃える場所を3Dに起こしたときと同じシェーダを使います。今回は、減算の項も効くのを忘れてはいけません。最後に炎を合成しますが、2次元的に加算で張るだけです。FALSE);■最後にてなわけで、炎を作りました。これだけでは目新しくありませんが、マップを用意するだけで燃やせるので、バンバン燃やしていきましょう。もどるimagire@gmail.com。