デカールのレンダリング¶
3Dオブジェクトの表面にデカールをzファイティングなしでレンダリングするために、Pipeline State Render Pass を使用します。Pipeline State Render Pass によってレンダリングされる要素に適用したいポリゴンの深度オフセットを設定できます。
デカールをレンダリングするには、
デカールをレンダリングしたい表面上に3Dコンテンツを作成します。
例えば、Node Tree で Plane ノードを作成します。
デカールとしてレンダリングしたいコンテンツを作成します。
例えば、前のステップで作成した Plane ノードで、Plane ノードを作成し、それに Decal という名前を付け、テクスチャを表示するように設定します。
Preview では、ノード間のZファイティングを見ることができます。
デカールとしてレンダリングしたいノードにタグを付けます。ノードにタグを付ける を参照してください。
例えば、Decal ノードにタグ Decal を付けます。
デカールとしてレンダリングしたいノードを選択する Tag Filter を作成し、デカールとしてレンダリングしたいノード以外のすべてのノードを選択する Tag Filter を作成します。Tag Filter の使用 を参照してください。
レンダーパスを使用して、Zファイティングなしでコンテンツとデカールをレンダリングします。
例えば、Default Render Pass レンダーパスプリセットを修正してコンテンツとデカールをレンダリングするには:
Library Alt を押しながら右クリック Rendering で、Default Render Pass レンダーパスプリセットを選択します。Kanzi Studio レンダーパスプリセットを使用する を参照してください。
Default Render Pass レンダーパスプレハブを使用するには、レンダリングしたい3Dコンテンツとデカールを含む Viewport 2D ノードを選択し、Properties で Render Pass Prefab プロパティを Default Render Pass に設定します。
Default Render Pass レンダーパスプレハブの Library で、Draw Objects Opaque レンダーパスを選択し、Properties で Objects Source プロパティを Tag Filter に設定して、デカールとしてレンダリングしたいノードを除くすべてのノードを選択します。
この Draw Objects Render Pass を設定して、Viewport 2D ノード内のすべてのノードをレンダリングしますが、デカールノードは除きます。
Default Render Pass レンダーパスプレハブで Draw Objects Transparent レンダーパスを選択し、Properties で Objects Source プロパティを Tag Filter に設定して、デカールとしてレンダリングしたいノードを選択します。
この Draw Objects Render Pass を設定して、デカールノードのみをレンダリングします。
Default Render Pass > Gather Lights Render Pass で Pipeline State Render Pass を作成し、デカールノードをレンダリングする Draw Objects Render Pass を Pipeline State Render Pass にドラッグします。
Pipeline State Render Pass を選択し、Properties で Polygon Depth Offset プロパティフィールドを追加して、目的のレンダリング結果を提供する値に設定します。
Derivate Multiplier は、各ピクセルの深度変化の微分の乗数を設定します。
Constant Multiplier は、ターゲットプラットフォームに依存する深さの最小測定単位を乗算します。
Kanzi は通常、負の深度オフセットを持つポリゴンをカメラに近い位置に表示します。