ライト マッピング

mental ray は、ライト マッピングをサポートしています。これは(マテリアルにライトマップ シェーダを含む)特定のオブジェクト上で実行される 2 部制の処理で、イルミネーションまたはその他の情報を計算し、結果をテクスチャまたはその他の場所に書き込みます。第一段階では、オブジェクトのすべての頂点についてライトマップ シェーダを頂点モード で呼び出し、戻された情報を収集します。第二段階では、ライトマップ シェーダを出力モードで呼び出し、収集された情報を使用して、オブジェクトのすべての三角形をループすることによってテクスチャまたはその他の出力データをペイントします。

ベース シェーダライブラリ内のライトマップ シェーダは、直接イルミネーションおよび間接イルミネーションを収集し、そこから書き込み可能なテクスチャマップを作成します。mental ray は 1 つのライトマップ シェーダしか認識しませんが、ベースライトマップシェーダは出力の段階を処理するメイン シェーダと、メイン シェーダによって呼び出され頂点の段階を処理する個別のシェーダに分割されます。このため、1 つの段階だけを、ユーザが作成した別のシェーダに簡単に置き換えることができます。

イルミネーション サンプリング

ライトマップ イルミネーション サンプリング シェーダは、サーフェス ライトの流入密度をサンプリングする単純なカラー シェーダです。直接イルミネーションと、オプションで間接イルミネーションを収集します。マテリアル内で使用するのではなく、 input パラメータ(mib_lightmap_write シェーダ`)に割り当てる必要があります。

mib_lightmap_sample
color "mib_lightmap_sample" (
    boolean         "indirect",
    integer         "flip",
    array light     "lights")
indirect
間接イルミネーションもサンプリングするようにシェーダに指示します。
flip
ジオメトリの、照らし出す側面を選択する整数値です。この値を 0 にすると法線の方向(正面)が選択され、1 にすると反対方向(背面)が選択され、2 にすると両方向からイルミネーションがサンプリングされ、結合されます。
lights
直接イルミネーションのサンプリングを行うライトの配列です。

ライトマップ生成

ライトマップ生成シェーダは、メイン ライトマップ シェーダです。ジオメトリ情報と三角の頂点のテクスチャ座標を集め、それぞれの三角形にテクスチャの三角領域を記述します。三角形がカバーするテクスチャの各ピクセルについて、サンプリング関数が呼び出され、結果がシェーダに書き出されます。ライトマップ シェーダは lightmap キーワードを使用してマテリアルにアタッチされます。

mib_lightmap_write
struct {
    vector          "point",
    vector          "normal",
    vector          "tex"
} "mib_lightmap_write" (
    color texture   "texture",
    vector texture  "coord",
    color texture   "input",
    integer         "fg_mode")
texture
ライトマップによって書き込まれる、書き込み可能なテクスチャです。writable キーワードを使用して宣言しておく必要があります。
coord
mib_texture_remap など、現在の特定のポイントのテクスチャ UV 座標を戻すシェーダです。
input
各テクスチャ ピクセルに書き込むべきデータを戻すシェーダです。たとえば、ここで mib_lightmap_sample を使用すると、ライトマップに書き込むべきイルミネーションを収集する場合に便利です。
fg_mode
ファイナルギャザーが有効な場合は、このモードによってサーフェス全体のファイナルギャザー ポイントの配置をコントロールし、品質を調整することができます。これは普通、オブジェクトの背面側やカメラのビューの外部にある領域、mental ray ファイナルギャザー ビューに依存する最適化では対象とされない場所の品質を向上する場合に必要となります。サポートされる値は以下のとおりです。
-1off
 0(テッセレーションされたジオメトリの)各頂点で FG ポイントを強制します
 1各テクスチャ ピクセル(テクセル)で FG ポイントを強制します。
 2... 1 テクセル間隔
 3... 2 テクセル間隔(既定)
n (n > 3)... n-1 テクセル間隔

Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.