【Unity】HDRPでオブジェクトの表示順を変える

投稿者: | 2021-06-25

HDRPでオブジェクトの表示順を変えてみました。

ビルトインレンダーパイプラインでは、オブジェクトの表示順はレンダリンモードとレンダーキューで決まります。

しかし、HDRPではレンダーキューが直接公開されないので、代わりにマテリアルとレンダラーコンポーネントのプロパティで表示順をコントロールします。

マテリアルごとの表示順

通常は、カメラから近いオブジェクトが前面に表示されます。

赤と青の2種類のマテリアルの両方のSurface Typeを「Transparent」にしました。「Transparent」にすると、「Sorting Priority」プロパティが現れるので、赤いマテリアルの値を1に上げます。

すると、後ろにある赤いCubeが前面に表示されました。

しかし、青いマテリアルの「Depth Write」のチェックを入れると、表示順が元に戻ります。

これは、深度テストが「Sorting Priority」を上書きするからです。

レンダラーコンポーネントごとの表示順

同じマテリアルの表示順はレンダラーコンポーネントでコントロールできます。

後ろにあるCubeを選択して、インスペクタでメッシュレンダラーコンポーネントの「Priority」を上げました。

すると、表示順が逆になりました。

これも、マテリアルの「Depth Write」のチェックを入れると無効になります。

Surface Typeを「Opaque」に戻しても、表示順をコントロールできなくなりました。

マテリアルとレンダラーの表示順

マテリアルの「Sorting Priority」が赤いマテリアルより低い、青いCubeをカメラの最も近くに表示すると、赤いCubeの後ろに表示されます。

この「Sorting Priority」を赤いマテリアルと同じにすると、なぜかレンダラーの「Priority」が高い方だけが前面に表示されました。

「Sorting Priority」をもっと上げるか、メッシュレンダラーの「Priority」を上げると、青いCubeが前面に表示されます。

コメントを残す

メールアドレスが公開されることはありません。