0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Unity】Cast ShadowsのTwo Sidedとは

Last updated at Posted at 2022-07-14

UnityのMeshRendererのCast Shadowsの設定項目にTwo Sidedという設定があります(図1)。
この設定は一体なんなのでしょうか?
[図1]
Two sided.png
Cast ShadowsはMeshRendererが描画するメッシュをシャドウマップに書き込むかどうかの設定です。
これをOnにしていると図2のように影が落ちます。
しかし、よく見てみるとちょっと違和感のある影の落ち方をしています。
[図2]
teapot shadow.png
このような現象はCastShadowの設定をTwo Sidedに変更すると解決することができます(図3)。
[図3]
teapot shadow2.png
では、なぜ図2のような現象が起きるのでしょう?
答えはシャドウマップに描画する際に背面カリングを行う設定でメッシュを描画しているからです。
背面カリングとはポリゴンの裏面を描画しない設定です。
閉じているモデルであれば、本来背面は映らないので、背面を描画しない設定でいいのですが、開いているモデルはカメラの位置によって、背面が見えてしまいます。
図4を見てみてください。実はこのティーポットのモデルはティーポットの蓋と本体との間に隙間があって、ティーポットの底が見える形状になっています。
ティーポットの底のメッシュは裏側が表示されているので、背面カリングで描画されていません。
このため、図2のような違和感のある影ができてしまっていたのです。
[図4]
teapot shadow3.png
Caster Shadowsの設定をTwo Sidedにすると、カリング設定がオフになり、表面、背面ともに描画されるようになります。
このため、Two Sided(両面)という設定が用意されているわけです。
RenderDocで確認すると、TwoSidedの時はちゃんとカリングがオフになっていました(図5)。
[図5]
teapot shadow4.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?