LoginSignup
10
1

More than 3 years have passed since last update.

[UE4] StationaryなDirectional Lightは半透明用のShadow Mapをひっそりと持っている

Last updated at Posted at 2019-12-08

image.png
この煙がどのようにライティングされているかイメージできてますでしょうか??

半透明オブジェクトは、StationaryなDirectional Lightの影響を影付きで受けることができます。(このシーンのDirectional LightはなのでStationaryです)その様なライティングができるように。。ShadowMapのデータがあるということなので、メモリ量であったりそのクオリティだったりに注意する必要があります。

実はあまり知られてないのですが、オフィシャルドキュメントにも実はちゃんと記載されています。

こことか -> Lit の透過処理

透過アイテムは、ライティング ビルド時に生成された特別な静的シャドウ深度マップによってStationary Light (固定ライト) から静的シャドウイングを取得できます。

ここにも-> Stationary lights(固定ライト)

透過も Stationary light (固定ライト) で負荷をかけずにシャドウイングを受け取ります。Lightmass は、ランタイム時に透過に適用される静的ジオメトリからシャドウ深度マップを事前計算します。このシャドウイングの形式は非常に粗く、シャドウイングのキャプチャはメートル単位でのみ行います。

半透明ライティングの詳細は割愛しますが、一つの手法にTranslucencyLightingVolumeを毎フレームアップデートし続ける手法があります。このボリュームデータの計算のさい、たしかにこのShadow Mapが参照されます。
image.png

しかし、そのテクスチャを見ると非常に粗いです。
image.png

これはオフィシャルにも記載されているのですが、初期設定ではこの半透明用ShadowMapはデフォルト1メールと1ピクセルという非常に粗いものです。もしもこの影のクオリティを上げたい場合、解像度を高くする必要がありますが、その手法は三種類ほど用意されています。

1. LightのComponentのShadow Resolution Scaleを上げる
image.png
しかしこの手法だと他のShadowMapの解像度も上げる可能性があります

2. World SettingsのStatic Lighting Scaleを小さくする
image.png
しかしこの手法だと、他の間接光用Volume Dataの密度も上げてしまう可能性があります。

3. Lightmass.iniのStaticShadowDepthMapTransitionSampleDistanceX/Yを小さくする
image.png
この設定で、半透明用のShadowMapの解像度だけを個別に制御することができます

ということで、3番目の手法によりStaticShadowDepthMapTransitionSampleDistanceX/Yともに10にしてみました。下の様に解像度があがっているのがわかるかと思います。
image.png

実際のライティングにより具体的に反映させるには、半透明ライティングボリュームの解像度も上げる必要があったりしますが、半透明ライティングのイメージがつかめると幸いです。

10
1
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
10
1