ディスプレイスメント シェーダ上の Turtle アトリビュート

アトリビュート エディタ(Attribute Editor)で次のアトリビュートを表示するには、オブジェクトを選択し、ディスプレイスメント シェーダ ノードの Turtle セクションを展開します。

方法

Turtle でディスプレイスメント マッピングを実行するには、レンダー時のマイクロ三角形(Rendertime Micro Triangles)プリテッセレーション(Pre-Tessellation)の 2 つの方法があります。両方の方法について以下に説明します。使用する方法とそれぞれの方法の設定については、ディスプレイスメント シェーダの Turtle ロールアウトに記載されています。次の 2 つのアトリビュートが両方の方法で使用されます。

ディスプレイスメント スケール(Displacement Scale)

ディスプレイスメント マップの高さを制御します。値が大きいほど、ディスプレイスメントが増えます。このアトリビュートは、アニメーションに対してキー設定できます。

スムーズ ベース メッシュ(Smooth Base Mesh)

ベース メッシュの平滑性を改善するポイントのディスプレイスメント値にスムージング値を追加し、最終レンダリングで基本三角形の境界が表示されていないことを確認します。スムーズ ベース メッシュ(Smooth Base Mesh)は個別のポリゴンに適用できます。「グローバル」スムーズな外観を希望する場合は、サブディビジョン サーフェスとしてオブジェクトをレンダーします。

レンダー時のマイクロ三角形(Rendertime Micro Triangles)

この方法ではレンダー時のジオメトリが置き換えられ、レイがオブジェクトにヒットする場合、必要に応じてマイクロ三角形のみが作成されます。このため、メモリ効率が非常に優れています。また、詳細レベル(LOD)の手法を使用し、カメラとの距離に応じてテッセレーション量もスケールします。これはディスプレイスメント マッピングの既定の方法です。

エッジ単位の最大三角形(Max Triangles Per Edge)

基本三角形を分割するマイクロ三角形の最大数を制御します。エッジ単位の最大三角形(Max Triangles Per Edge)を 10 に設定すると、基本三角形は 10*10 = 100 のマイクロ三角形に分割されます。

LOD の有効化(Enable LOD)

ディスプレイスされたオブジェクトの詳細レベルを有効にします。LOD のアルゴリズムが、1 ピクセルのサイズよりも小さくなるように、マイクロ三角形のサイズを調整します。オブジェクトが離れている場合、生成されるマイクロ三角形の数はわずかです。

LOD 品質(LOD Quality)

LOD を大きくテッセレーションするか(1 より大きい場合)、間隔を広げます(1 より小さい場合)。LOD 計算から推奨されるテッセレーションはこの値で乗算されます。これにより、必要に応じて、LOD フィーチャをトリムすることができます。

レイの最大オフセット(Max Ray Offset)

この方法とファイナル ギャザリングやオクルージョンを組み合わせる場合は、セルフ シャドウ アーティファクトを防ぐためにこのパラメータを調整する必要があります。正と負のディスプレイスメント両方を使用する場合は、この値をディスプレイスメント スケール値の半分に設定することをお勧めします。ディスプレイスメント マップ全体が正の場合、レイのオフセットはゼロのままにします。

プリテッセレーション

この方法は、レンダリングの開始前にオブジェクトをマイクロ三角形にテッセレーションします。すべての三角形がメモリに保持されているため、非常に細かいオブジェクトの場合は大量のメモリを消費する可能性があります。しかし、生成される三角形をできるだけ少なくすることで、テッセレーションを適切に実行できます。

最大サブディビジョン(Max Subdivision)

基本三角形からマイクロ三角形を作成する場合に使用するサブディビジョンの初期レベルを設定します。基本三角形は各レベルで 4 つの新しい三角形に分割されるため、各基本三角形に対して、4 のべき乗(最大サブディビジョンのマイクロ三角形の数)だけ生成されます。

エッジの長さ(Edge length)

このパラメータを使用すると、特定のエッジの長さに到達した場合、サブディビジョンが停止されます。エッジの長さは、距離としてワールド空間単位(cm)で指定されます。三角形のエッジがこの距離よりも短い場合、この三角形にサブディビジョンは適用されません。

エッジの高さ(Edge Height)

このパラメータを使用すると、生成されるマイクロ三角形の数を減らすことができます。隣接するマイクロ三角形に類似したディスプレイスメントがある場合、このマイクロ三角形をマージして、1 つの大きな三角形を形成します。エッジの高さは、三角形をマージできるディスプレイスメントの最大差異を設定します。

法線のスムーズ(Smooth Normals)

ディスプレイスされた三角形の法線を補間するために法線のスムーズ(Smooth Normals)を有効にします。法線をスムージングしないほうが、ディスプレイスメントの効果がわかりやすくなる場合があります。

ディスプレイスメントの境界

ディスプレイスメントの境界は、Turtle で自動的に計算されるか、または手動で設定できます。既定の設定では、境界は自動的に計算されます。ただし、計算で正しい境界を見つけるのに失敗することがあるため、ディスプレイスメント アーティファクトが発生する可能性があります。境界を手動で設定すると、この問題を回避できます。境界を見つけられるようにシェーディング ネットワークを分析する場合、特にプロシージャ テクスチャに対して、かなりの時間がかかることがあります。そのため、手動で設定した境界を使用すると、前処理の段階で大幅な時間を節約することもできます。手動で設定した境界を使用した場合、できるだけタイトに設定すると、パフォーマンスが向上します。

下位境界(Lower Bound)

シェーダが返すディスプレイスメントの最小値を制御します。負のディスプレイスメントがある場合は、負の値になります。シェーダがこの値よりも小さな値を返した場合は、この値にクランプされます。

上位境界(Upper Bound)

シェーダが返すディスプレイスメントの最大値を制御します。シェーダがこの値よりも大きな値を返した場合は、この値にクランプされます。

ヒント: ディスプレイスメント マップとしてファイル テクスチャを使用する場合は、パフォーマンス向上のために MipMap フィルタリング オプションを使用します。