depthmap はユーザが割り当てることはできず、自動モードでのみ使用されます。唯一の目的は若干のメモリ/パフォーマンスの最適化です。
使いやすさを考慮して、ライトマップを適切なフォーマットで明示的に渡す必要はありません。ただし、すべてのパーティシペイト シェーダは使用されるライトマップを認識する必要があるので、最初の 2 つのパラメータがライトマップとデプスマップのペアである、特殊な種類のフェノメナを使用します。フェノメナの内部でシェーダを使用する場合は、特定の値に設定する代わりに、interface による接続を介して最初の 2 つのパラメータにリンクする必要があります。
これらの条件が満たされた場合のみ、ライトマップの自動生成が使用できます。条件を満たさなかった場合は、ライトマップを手動で指定する必要があります。
次に示すのは、これらの条件を満たすフェノメナの擬似コードです。
declare phenomenon material "my_sss_phenomenon" ( color texture "lightmap", # must be first color texture "depthmap", # must be second color "diffuse_paint", color "my_special_color", scalar "lightmap_size", # for example ... ) shader "myscattering" "misss_fast_shader" ( "lightmap" = interface "lightmap", # required "depthmap" = interface "depthmap", # required "diffuse_illum" ... ... ) shader "mylightmapping" "misss_lightmap_write" ( "lightmap" = interface "lightmap", # required "depthmap" = interface "depthmap", # required "lightmap_group" "A", "lightmap_size" = interface "lightmap_size", # for example ... ) ... end declare
これらのガイドラインに従っていない場合にはフェノメナが予期に反する動作をしたり、シェーダが通信に使用しようとしたパラメータスロットが失われていたり別の用途で使用されていたりする場合には、レンダリングが中止されてしまう可能性もあります。
mental ray は、ライトマップをレンダリングする際に、負荷をオブジェクトごとに複数のホストに分散しようと試みます。しかし、misss_fast_ シェーダでは複数のオブジェクトで同じライトマップを共有することが推奨され(メモリの使用効率のため)、場合によっては(個別のオブジェクトを相互に散乱させるために)複数のオブジェクトで同一のライトマップを共有しなければならないことがあります。
複数のホストから同じライトマップへの書き込みは mental ray では不可能であり、衝突が発生することがあります。このような場合には、不完全または不正なライトマップ データが作成されてしまいます。
この問題を回避するには、以下の方法があります。
Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.