【Unity】Receive Shadows設定のゆくえ
unityの新しいバージョンを使っていたらメッシュレンダラーにレシーブシャドウの設定が消えている事に気が付きました。
ReceiveShadowsとは影を受ける/受けないの設定になります。
公式のマニュアルでも見つけることができず困っていましたが、海外のフォーラムで解決方法を見つけたので試してみました。追記:簡単に実装できる方法がありました。
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のチェックが追加されいることが確認できます。