はじめに
通常のGameObjectでは問題なくても、ECSで描画した場合に画面上で重複したオブジェクトがちらつきを起こす場合があります。
こんな感じです。
位置の重なりは発生していないのですが、画面上で位置が被ったオブジェクト同士が干渉を起こしてちらつきが発生しています。
ShaderGraphを使用している場合にはこれは設定1つで調整が可能です。
パターン1:画面上の重複時の解決方法
シェーダグラフにおける解決方法です。
干渉を起こしているオブジェクトが使用しているシェーダグラフを開き
Graph Inspecter > Graph Settings > Depth WriteをForce Enabledに設定します。

Graph Inspectorが表示されていない場合には右上の「i」のアイコンをクリックすると表示されるようになります。

設定を切り替えてShaderGraphを保存することでちらつきが発生しなくなります。
パターン2:透過同士の干渉
SurfaceTypeがTransparentのオブジェクト2つが画面上で重複すると、パターン1と同様にちらつきが発生することがあります。
そんなときにはDepthTestの項目をAlwaysにすると解消する場合があります。

追記:いろいろ触っているうちにAlwaysの時に逆にちらつくパターンもあったので、解決できるかは場合によるかもしれません。。。
さいごに
自分で調べたときには、この現象に関する記事が見当たらなかったので、誰かのお役に立てば幸いです。
コメント