Unity

【Unity】Receive Shadows設定のゆくえ

unityの新しいバージョンを使っていたらメッシュレンダラーにReceive Shadowsの設定が消えている事に気が付きました。
ReceiveShadowsとは影を受ける/受けないの設定になります。
公式のマニュアルでも見つけることができず困っていましたが、海外のフォーラムで解決方法を見つけたので試してみました。
追記:簡単に実装できる方法がありました。

バージョン:Unity 2021.3.11f1
レンダリングパイプライン:URP

Receive Shadows

過去バージョンであった場所

いつから切り替わったのかわかりませんが、Mesh RendererのCast Shadowsの下にあるイメージが強いです。

バージョン:2021.3.11f1である場所

シェーダーで設定できるようになったようです。
URPでデフォルトでアサインされているUniversal Render Pipeline/Litに設定項目がありました。

Shader Graphで項目を追加する1

自作したシェーダーに組み込みたい場合の設定方法です。
Allow Material Override にチェックを入れるだけでUniversal Render Pipeline/Litにもある項目が追加されます。

Shader Graphで項目を追加する2

参考サイト:海外フォーラムへのリンク

自作したシェーダーに組み込みたい場合の設定方法です。
ただこの方法だと、チェックを入れると影を受けなくなるという上で紹介したUniversal Render Pipeline/Litとは逆の設定になってしまいます。これを同じにする方法はわかりませんでした。

シェーダーグラフのBaseShaderで+ボタンからKeyword → Boolean
名前はなんでも良いですがわかりやすいように ReceiveShadows

作成したReceiveShadowsを選択してGraph Inspector → Node Settings
Referenceに _RECEIVE_SHADOWS_OFF を入力
シェーダーを保存しましょう。

作成したシェーダーをマテリアルに設定するとReceiveShadowsのチェックが追加されいることが確認できます。