前提
Unity の Universal RP を用いてARアプリケーションを制作しようとしていて、次の2つの処理を実装したいのですが、シェーダについての理解が追いついておらず、うまくやる方法が見つかりません。知恵をお貸しいただけると幸いです。
実現したいこと
1. 受けた影だけを描画するシェーダ
ARなので、影だけを描画したいのですが、URPに対応したシェーダでのやり方がわかりません。
このページで紹介されているカスタムノードを用いてシャドウのマップを取得することはできており、PBR Graph を用いて影の落ちた平面の影部分を透過することはできるのですが、透過を逆転させると影の落ちている部分と落ちていない部分の区別ができなくなります。(透過してしまった部分は影を受けられないから、という理解で合っているでしょうか…?)
2. 透明マント
ハリーポッターの透明マントの要領で、自身が透明かつ自身よりも奥のオブジェクトをすべて透過する処理を実装したいです。このページを参考にいろいろいじってみたところ、一応はできました。(なぜか記事の通りにやっても同じことができなかったのですが、透明マントレイヤーと通常オブジェクトでレイヤーを分けてどちらもDefault Layer Maskから外したうえで、マント→オブジェクトの順でRender Features を用いて追加の描画をしています。ここでマントに透過オブジェクトを用いれば図のように処理できました。)
しかし、Default Layer Maskから対象を外してしまった時点でオブジェクト同士のシャドウが描画されなくなってしまうのが気に入りません。先ほどの記事のように遮蔽部分の描画色を変えるだけならDefault Layer Maskから外さずにシャドウを維持して行えたのですが、この処理で遮蔽部分のシェーダに透過シェーダを適用すると下にもともとのオブジェクトが描画されているため思ったような表示になりません。
まだ回答がついていません
会員登録して回答してみよう