[Unity Rendering] URP 透明オブジェクトの自己レンダリング散在例外の問題

バックグラウンド:

URP のオブジェクトの場合、その前面と背面の両方をレンダリングしたい場合。

通常、解決策は 2 つあります。

1. グリッドを両面グリッドに設定します。(この場合、Mesh.RecalculateNormals の計算結果が異常である可能性があり、メッシュ法線の生成異常を参照することで解決できます)

2. マテリアルを両面マテリアルに設定します。レンダリング面は両方に設定されます。
ここに画像の説明を挿入

期待される結果:

図1
図2

異常な結果

画像3
明らかに、描画順序が 1、2、3 の順で描画され、表示に異常が発生していることがわかります。

異常な

テストの結果、シェーダの両面レンダリングがチェックされている場合、透明モードでは、パッチはグリッド内の三角形のラベルに従って前から後ろにレンダリングされることがわかりました。

その結果、後からソートされたパッチが前面に描画されます。

最初に RenderFace=Back のケースをレンダリングし、次に RenderFace=Front のケースを期待どおりにレンダリングするのではなく。

図 3 と図 4 を組み合わせると、サイド 1 が上部にレンダリングされ、サイド 2 が中央にレンダリングされ、サイド 3 が最後にレンダリングされていることがわかります。グリッド内の三角形ラベルのシーケンスに対応します。
図4

解決

1. シェーダーを両面レンダリングに設定せず、前面のみをレンダリングします (RenderFace=Front)。

2. グリッド面を増やし、グリッドを両面グリッドとして設定します。(両面メッシュに設定すると自動法線インターフェース Mesh.RecalculateNormals の計算結果が異常となる可能性があり、その解決策はメッシュ法線の異常生成を参照できることに注意してください)

透明オブジェクトのレンダリング自体の異常な問題を解決できます。
ここに画像の説明を挿入

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/boyZhenGui/article/details/130288259