mental ray は、ライト マッピングをサポートしています。これは(マテリアルにライトマップ シェーダを含む)特定のオブジェクト上で実行される 2 部制の処理で、イルミネーションまたはその他の情報を計算し、結果をテクスチャまたはその他の場所に書き込みます。第一段階では、オブジェクトのすべての頂点についてライトマップ シェーダを頂点モード で呼び出し、戻された情報を収集します。第二段階では、ライトマップ シェーダを出力モードで呼び出し、収集された情報を使用して、オブジェクトのすべての三角形をループすることによってテクスチャまたはその他の出力データをペイントします。
ベース シェーダライブラリ内のライトマップ シェーダは、直接イルミネーションおよび間接イルミネーションを収集し、そこから書き込み可能なテクスチャマップを作成します。mental ray は 1 つのライトマップ シェーダしか認識しませんが、ベースライトマップシェーダは出力の段階を処理するメイン シェーダと、メイン シェーダによって呼び出され頂点の段階を処理する個別のシェーダに分割されます。このため、1 つの段階だけを、ユーザが作成した別のシェーダに簡単に置き換えることができます。
ライトマップ イルミネーション サンプリング シェーダは、サーフェス ライトの流入密度をサンプリングする単純なカラー シェーダです。直接イルミネーションと、オプションで間接イルミネーションを収集します。マテリアル内で使用するのではなく、 input パラメータ(mib_lightmap_write シェーダ`)に割り当てる必要があります。
color "mib_lightmap_sample" ( boolean "indirect", integer "flip", array light "lights")
ライトマップ生成シェーダは、メイン ライトマップ シェーダです。ジオメトリ情報と三角の頂点のテクスチャ座標を集め、それぞれの三角形にテクスチャの三角領域を記述します。三角形がカバーするテクスチャの各ピクセルについて、サンプリング関数が呼び出され、結果がシェーダに書き出されます。ライトマップ シェーダは lightmap キーワードを使用してマテリアルにアタッチされます。
struct { vector "point", vector "normal", vector "tex" } "mib_lightmap_write" ( color texture "texture", vector texture "coord", color texture "input", integer "fg_mode")
-1 | off |
0 | (テッセレーションされたジオメトリの)各頂点で FG ポイントを強制します |
1 | 各テクスチャ ピクセル(テクセル)で FG ポイントを強制します。 |
2 | ... 1 テクセル間隔 |
3 | ... 2 テクセル間隔(既定) |
n (n > 3) | ... n-1 テクセル間隔 |
Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.