Lightmass Deep Dive 2018 Vol.1: Lightmass内部アルゴリズム概要(Lightmap編)

7.3K Views

September 26, 18

スライド概要

UE4のライトビルドシステムであるライトマスの内部挙動について、イラストにてなるべくかみ砕いて説明しております。ライトマップ編

アルゴリズム説明にフォーカスしております、実際のパラメータの設定で何が変更されるかは、本公演のVol.2を参考にしていただければと思います。
https://www.slideshare.net/EpicGamesJapan/lightmass-deep-dive-2018-vol-2-lightmaplightmass/EpicGamesJapan/lightmass-deep-dive-2018-vol-2-lightmaplightmass

※こちらは2016年に行った""Lightmass Deep Dive""の2018年度版になります。
Original Slide: https://www.slideshare.net/EpicGamesJapan/lightmass-lightmap-epic-games-japan


(Epic Games Japan: 篠山範明)

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Lightmass Deep Dive 2018 Vol.1 Lightmass内部アルゴリズム概要(Lightmap編) Nori Shinoyama Epic Games Japan / Support Manager

2.

目次 1. はじめに 2. Static Lightingを4種類に分類 3. ライトマスで使われるアルゴリズム各種 ※UE4.20での実装について説明しています

3.

#1 はじめに

4.

注意点1: このスライドはあくまで概要です。 概念の理解を最優先にしており不正確な部分もあります。 Lightmassの実際の実装を追っているエンジニアの方達は 回れ右してソースコードに戻ってください。 例えば、IrradiancePhoton, CacheOnSurface, IndirectPhotonPathなどについて触れておりませ ん。わかりやすさのため IndirectPhotonのEmitもDirectPhotonのEmitからシーケンシャルに行われ るように説明しております。

5.

注意点 2: Debug Info of LIghtmass... これから、このような非常に簡単な図が沢山でてきますが、 基本的にはUE3の名残の機能であり、 現在正式サポートはしていないので使い方などの説明は省きます。 アルゴリズム説明の際のイメージと捉えてください。

6.

注意点 3: とても簡素な絵での説明が続きます 非常にシンプルな図で恐縮ですが、 右図のような空間をイメージして頂けますと幸いです。

7.

#2 Static Lightingを4種類に分類

8.

初めに、Lightingを直接光と間接光に分けます Direct Lighting Indirect Lighting

9.

直接光 (Direct Lighting) ライトからの直接(Direct)のライティング 二次反射以降がないので影部分は黒い。

10.

間接光 (Indirect Lighting) 二次反射。照り返し。複数回バウンドしたライティング 直接光で届かない場所へも、光が回り込む。

11.

Lightingの種類によって分割... Direct Lighting 1 3 Indirect Lighting 2 4

12.

更に、LightがPhotonを出すかによって二種類に分けられます Lights emitting photons OR Lights NOT emitting photons

13.

この4種類に対してそれぞれ設定ができるので見ていきます。 Lights emitting photons Lights NOT emitting photons Direct Lighting 1 3 Indirect Lighting 2 4

14.

#3 ライトマスで使われるアルゴリズム各種

15.

Lights emitting photons Lights NOT emitting photons Direct Lighting 1 3 Indirect Lighting 2 4

16.

Direct Lighting from Lights emitting photons (Point/Spot/Directional/Rect) Photonを出すライトからの直接光

17.

Photonを出すライトからの直接光 Direct Lightingは、 ライトの方向へレイを直接飛ばして行います。 ※Photon Mappingは関与しない .

18.

ライトの大きさの設定 Light のSource Radius でライトの大きさを変えられます。

19.

ライトの大きさの設定 Light のSource Radius でライトの大きさを変えられます。 Source Radius = 100 Source Radius = 400

20.

ライトの大きさの設定 Light のSource Radius でライトの大きさを変えられます。 ライトの大きさにより、影が変わるのがわかるかと思います Source Radius = 100 Source Radius = 400

21.

Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting 2 4

22.

Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting 2 4

23.

Indirect Lighting from Lights emitting photons (Point/Spot/Directional/Rect) Photonを出すライトからの間接光

24.

Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting Photon Mapping でシミュレーション 4

25.

間接光計算のための主なアルゴリズム3つ Photon Mapping Final Gathering Irradiance Caching

26.

まずはPhoton Mappingから Photon Mapping Final Gathering Irradiance Caching

27.

Photon Mappingとは ライトから”Photon”を放出し、 光の複数回バウンスをシミュレートする

28.

Photon Mapping ライトからPhotonを放出する

29.

Photon Mapping 当たらないPhotonは消失

30.

Photon Mapping 壁に衝突したPhotonは。。。

31.

Photon Mapping 壁に留まり、反射(バウンス)を表す新たなPhotonを放つ

32.

Photon Mapping 新しいPhotonもどこかにぶつかったら。。。

33.

Photon Mapping 新しいPhotonもどこかにぶつかったら。。。

34.

Photon Mapping 更にバウンス。

35.

Photon Mapping 沢山のPhotonを沢山反射させ、 光が回り込む間接光をシミュレートする。

36.

Direct Photons

37.

Indirect Photon Paths

38.

Photon Mapping シーンがPhotonで満たされたら。。。

39.

Photon Mapping 各Lightmapのテクセルは近辺のPhotonから 自身のライティングを見積もる。。。試してみると。。。

40.

Only Photon Mapping Lighting Quality: Preview

41.

Only Photon Mapping Lighting Quality: Production

42.

photonが足りない!!

43.

Only Photon Mapping 設定をいじくりProductionよりもPhotonの数を上げていく…

44.

Only Photon Mapping 設定をいじくりProductionよりもPhotonの数を上げていく…

45.

徐々にクオリティは高くなっていくが。。 いつになったらPhotonが足りるのか。。。

46.

Only Photon Mapping このテクセルに届く Photonはどれくらいでしょう?

47.

Only Photon Mapping (Direct Photons) Point Lightから放出されたものの一部

48.

Only Photon Mapping (Indirect Photons) Photonがどこかにあたって。。。

49.

Only Photon Mapping ? ? ? ? (Indirect Photons) Photonがどこかにあたって。。。 テクセルに届くかも。。。

50.

Only Photon Mapping PhotonMappingだけの場合、 非常に沢山の Photonを放出し、 そのバウンスを計算しなければいけない。 それは非常にコストが高い。

51.

Photon Mapping Final Gathering Irradiance Caching

52.

Photon Mapping Final Gathering Irradiance Caching

53.

Final Gathering 近傍のPhotonの探索だけでは不十分。。。

54.

Final Gathering ? ? ? 逆に、各テクセルからレイを飛ばし、 もしもそのPhotonがこっちに飛んできたならば どれくらいの影響があるかを調べる。

55.

Final Gathering みずからレイを飛ばして、 遠くのフォトンからの影響を調べにいく。 見るフォトンの数が増える。

56.

Final Gathering あるテクセルから発せられた Final GatherのRayの視覚化 黄色はどこかにヒットした Ray。 青は無限遠に消失 (もしくはSkylightにヒット)したもの

57.

Final Gathering 見違えるような結果のFinal Gathering….ですが... Photon Mapping -> Final Gathering

58.

Final Gathering レイの数が少ないと大量のノイズを生みます。解決するためにレイの数を増やすとビ ルド時間が非常に長くなる危険性があります。 Preview: ILQ 1 Production: ILQ 10

59.

Final Gathering 各テクセルが独立してレイを飛ばすので、 近隣のテクセルの相関がありません。 なのでレイの数が少ないと沢山のノイズが発生してしまいます。

60.

Photon Mapping Final Gathering Irradiance Caching

61.

Photon Mapping Final Gathering Irradiance Caching

62.

Irradiance Caching ファイナルギャザリングを すべてのテクセルでやるのか。。。。 時間もかかるし。。。 ノイズが。。。

63.

Irradiance Caching 君たち、間接光成分だいたい一緒でしょ?

64.

Irradiance Caching どこかFinal Gathering したら。。。

65.

Irradiance Caching その情報をキャッシング

66.

Irradiance Caching どこかFinal Gathering したら。。。

67.

Irradiance Caching その情報もキャッシング

68.

Irradiance Caching テクセルがもしもキャッシュに十分に入っていたら 近くのキャッシュから見積もる。 そのテクセルは Final Gatherしないので高速

69.

Irradiance Caching Irradiance CacheによってFinal Gatherのノイズが軽減 Only Final Gather With Irradiance Caching

70.

Irradiance Caching 設定によって、各キャッシュの数と大きさ、補間の度合いなどを調整可能 Preview Production

71.

Irradiance Caching ノイズを除去しかつ高速化されるが、あまりに大きな補間を行うとディティールが なくなるので注意が必要 Preview Production

72.

Photon mapping Final Gathering Irradiance Caching

73.

Photon mapping Final Gathering Irradiance Caching

74.

Lightmass内部の間接光計算のアルゴリズム概要 Scene Setup Each texel... Photon Mapping 近くのIRCから 補間可能? YES!! 値を補間してテクセルに格納し、 次のテクセル計算へ NO!! Final Gathering Irradiance Caching (IRC)

75.

Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting Photon Mapping でシミュレーション 4

76.

Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting Photon Mapping でシミュレーション 4

77.

Direct Lighting from Lights NOT emitting photons (Sky Light) Photonを出さないライトからの直接光

78.

Skylightからの直接光 Skylightは360度無限遠からのライティングです SkyLight

79.

Skylightからの直接光 Skylightからの直接光はFinal Gatheringの時に計算されます。 SkyLight

80.

Skylightからの直接光 この青いレイ達がSkyLightにヒットしたレイです (Skylightがなければ無限遠に消失したという意味になります)

81.

Skylightからの直接光 SkyLight ? これだけのレイで十分??

82.

Skylightからの直接光 悪い例) Skylightからのみのライティング。にじみだらけ。

83.

Skylightからの直接光 SkyLight ? SkyLightに向けてもっとレイが欲 しい!

84.

Lightmass Portal

85.

Lightmass Portal Final Gatheringの再分割を強制させる SkyLight Portal

86.

Lightmass Portal Final Gatheringの再分割を強制させる SkyLight Portal

87.

Lightmass Portal 例として実際に各テクセルのFinal Gatheringのレイの数を見てみる

88.

Lightmass Portal No Lightmass Portal With a Lightmass Portal

89.

Lightmass Portal No Lightmass Portal With a Lightmass Portal

90.

Lightmass Portal No Lightmass Portal With a Lightmass Portal Please ignore the lightmap padding error...

91.

Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす Final Gathering時に 直接参照 Indirect Lighting Photon Mapping でシミュレーション 4

92.

Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす Final Gathering時に 直接参照 Indirect Lighting Photon Mapping でシミュレーション 4

93.

Indirect Lighting from Lights NOT emitting photons (Sky Light) Photonを出さないライトからの間接光

94.

Skylightの間接光 SkylightはPhotonを出さない。。。 SkyLight

95.

Skylightの間接光 しかし、Skylightからも間接光は出したい SkyLight

96.

Lightmass内部の間接光計算のアルゴリズム概要 Scene Setup Each texel... Photon Mapping 近くのIRCから 補間可能? !! ! w Mini Iterative e N Final Gather & Irradiance Caching For Skylights YES!! 値を補間してテクセルに格納し、 次のテクセル計算へ NO!! Final Gathering Irradiance Caching (IRC)

97.

Skylightの間接光 Photon Mappingなどの前に、Final GatherをしてSkylightからのライ ティングをキャッシュしておく SkyLight Cache!

98.

Skylightの間接光 Photon Mappingなどの前に、Final GatherをしてSkylightからのライ ティングをキャッシュしておく SkyLight

99.

Skylightの間接光 複数回のバウンスを表現するために、FG&IRCを指定したバウンス回数 まで繰り返す。 SkyLight

100.

Skylightの間接光 複数回のバウンスを表現するために、FG&IRCを指定したバウンス回数 まで繰り返す。 SkyLight

101.

Skylightの間接光 “Num Sky Lighting Bounces”で反復回数を指定

102.

Skylightの間接光 “Num Sky Lighting Bounces”で反復回数を指定 0 (Direct Lihgting Only) 1 2

103.

Advanced: Emissive Light Emissiveにより自己発光しているStatic Objectは、 Lightmass内部で光源として扱うことができます。

104.

Advanced: Emissive Light しかし、Skylightと同様にEmissive LightもPhotonを出せません。

105.

Advanced: Emissive Light Emissive Lightのライティングは、 Skylightと同様にFinal Gatheringを基準に行われます。

106.

Advanced: Emissive Light なので”Num Sky Lighting Bounces”はEmissive Lightにも効きます

107.

Advanced: Emissive Light Num Sky Lighting Bounces = 0 Num Sky Lighting Bounces = 3

108.

Tips: Emissive light にも効く Lightmass portal 小さな Emissive LightはFInal Gather時にヒットせず、 参照されないこともあります。。

109.

Tips: Emissive light にも効く Lightmass portal 結果、非常にノイズが多いLightmapを生成する可能性があります

110.

Tips: Emissive light にも効く Lightmass portal ノイズを軽減する方法として、そのEmissive Lightよりも大きなLightmass Portal で囲ってあげる方法があります Lightmass Portal

111.

Tips: Emissive light にも効く Lightmass portal Lightmass Portalにさえ当たれば、Final Gatheringのレイの分割が行われ、結 果Emissive Lightにレイがヒットしやすくなります Lightmass Portal

112.

Tips: Emissive light にも効く Lightmass portal No Lightmass Portal With Lightmass Portal

113.

Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす Final Gathering時に 直接参照 Indirect Lighting Photon Mapping でシミュレーション Skylight専用の FG&IRC を複数回繰り返す

114.

Summary

115.

Lightingの種類とLightの種類で4項目に分類 Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす Final Gathering時に 直接参照 Indirect Lighting Photon Mapping でシミュレーション Skylight専用の FG&IRC を複数回繰り返す

116.

Photon Mappingを軸にした間接光表現のためのアルゴリズム Photon mapping Final Gathering Irradiance Caching

117.

Lightmass内部の間接光計算のアルゴリズム概要 Scene Setup Each texel... Photon Mapping 近くのIRCから 補間可能? !! ! w Mini Iterative e N Final Gather & Irradiance Caching For Skylights YES!! 値を補間してテクセルに格納し、 次のテクセル計算へ NO!! Final Gathering Irradiance Caching (IRC)

118.

Thank you for your time!