Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

7,779 views

Published on

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: 篠山範明)

Published in: Engineering
  • Be the first to comment

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

  1. 1. Lightmass Deep Dive 2018 Vol.1 Lightmass内部アルゴリズム概要(Lightmap編) Nori Shinoyama Epic Games Japan / Support Manager
  2. 2. 目次 1. はじめに 2. Static Lightingを4種類に分類 3. ライトマスで使われるアルゴリズム各種 ※UE4.20での実装について説明しています
  3. 3. #1 はじめに
  4. 4. 注意点1: このスライドはあくまで概要です。 概念の理解を最優先にしており不正確な部分もあります。 Lightmassの実際の実装を追っているエンジニアの方達は 回れ右してソースコードに戻ってください。 例えば、IrradiancePhoton, CacheOnSurface, IndirectPhotonPathなどについて触れておりませ ん。わかりやすさのため IndirectPhotonのEmitもDirectPhotonのEmitからシーケンシャルに行われ るように説明しております。
  5. 5. 注意点 2: Debug Info of LIghtmass... これから、このような非常に簡単な図が沢山でてきますが、 基本的にはUE3の名残の機能であり、 現在正式サポートはしていないので使い方などの説明は省きます。 アルゴリズム説明の際のイメージと捉えてください。
  6. 6. 注意点 3: とても簡素な絵での説明が続きます 非常にシンプルな図で恐縮ですが、 右図のような空間をイメージして頂けますと幸いです。
  7. 7. #2 Static Lightingを4種類に分類
  8. 8. 初めに、Lightingを直接光と間接光に分けます Direct Lighting Indirect Lighting
  9. 9. 直接光 (Direct Lighting) ライトからの直接(Direct)のライティング 二次反射以降がないので影部分は黒い。
  10. 10. 間接光 (Indirect Lighting) 二次反射。照り返し。複数回バウンドしたライティング 直接光で届かない場所へも、光が回り込む。
  11. 11. Lightingの種類によって分割... Direct Lighting 1 3 Indirect Lighting 2 4
  12. 12. 更に、LightがPhotonを出すかによって二種類に分けられます Lights emitting photons Lights NOT emitting photons OR
  13. 13. この4種類に対してそれぞれ設定ができるので見ていきます。 Lights emitting photons Lights NOT emitting photons Direct Lighting 1 3 Indirect Lighting 2 4
  14. 14. #3 ライトマスで使われるアルゴリズム各種
  15. 15. Lights emitting photons Lights NOT emitting photons Direct Lighting 1 3 Indirect Lighting 2 4
  16. 16. Direct Lighting from Lights emitting photons (Point/Spot/Directional/Rect) Photonを出すライトからの直接光
  17. 17. Photonを出すライトからの直接光 Direct Lightingは、 ライトの方向へレイを直接飛ばして行います。 ※Photon Mappingは関与しない.
  18. 18. ライトの大きさの設定 Light のSource Radius でライトの大きさを変えられます。
  19. 19. ライトの大きさの設定 Light のSource Radius でライトの大きさを変えられます。 Source Radius = 100 Source Radius = 400
  20. 20. ライトの大きさの設定 Light のSource Radius でライトの大きさを変えられます。 ライトの大きさにより、影が変わるのがわかるかと思います Source Radius = 100 Source Radius = 400
  21. 21. Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting 2 4
  22. 22. Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting 2 4
  23. 23. Indirect Lighting from Lights emitting photons (Point/Spot/Directional/Rect) Photonを出すライトからの間接光
  24. 24. Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting Photon Mapping でシミュレーション 4
  25. 25. Photon Mapping Final Gathering Irradiance Caching 間接光計算のための主なアルゴリズム3つ
  26. 26. Photon Mapping Final Gathering Irradiance Caching まずはPhoton Mappingから
  27. 27. Photon Mappingとは ライトから”Photon”を放出し、 光の複数回バウンスをシミュレートする
  28. 28. Photon Mapping ライトからPhotonを放出する
  29. 29. 当たらないPhotonは消失 Photon Mapping
  30. 30. 壁に衝突したPhotonは。。。 Photon Mapping
  31. 31. 壁に留まり、反射(バウンス)を表す新たなPhotonを放つ Photon Mapping
  32. 32. 新しいPhotonもどこかにぶつかったら。。。 Photon Mapping
  33. 33. 新しいPhotonもどこかにぶつかったら。。。 Photon Mapping
  34. 34. 更にバウンス。 Photon Mapping
  35. 35. 沢山のPhotonを沢山反射させ、 光が回り込む間接光をシミュレートする。 Photon Mapping
  36. 36. Direct Photons
  37. 37. Indirect Photon Paths
  38. 38. Photon Mapping シーンがPhotonで満たされたら。。。
  39. 39. Photon Mapping 各Lightmapのテクセルは近辺のPhotonから 自身のライティングを見積もる。。。試してみると。。。
  40. 40. Only Photon Mapping Lighting Quality: Preview
  41. 41. Only Photon Mapping Lighting Quality: Production
  42. 42. photonが足りない!!
  43. 43. Only Photon Mapping 設定をいじくりProductionよりもPhotonの数を上げていく…
  44. 44. Only Photon Mapping 設定をいじくりProductionよりもPhotonの数を上げていく…
  45. 45. 徐々にクオリティは高くなっていくが。。 いつになったらPhotonが足りるのか。。。
  46. 46. Only Photon Mapping このテクセルに届くPhotonはどれくらいでしょう?
  47. 47. Only Photon Mapping (Direct Photons) Point Lightから放出されたものの一部
  48. 48. Only Photon Mapping (Indirect Photons) Photonがどこかにあたって。。。
  49. 49. Only Photon Mapping ? ? ? ? (Indirect Photons) Photonがどこかにあたって。。。 テクセルに届くかも。。。
  50. 50. Only Photon Mapping PhotonMappingだけの場合、 非常に沢山のPhotonを放出し、 そのバウンスを計算しなければいけない。 それは非常にコストが高い。
  51. 51. Photon Mapping Final Gathering Irradiance Caching
  52. 52. Photon Mapping Final Gathering Irradiance Caching
  53. 53. Final Gathering 近傍のPhotonの探索だけでは不十分。。。
  54. 54. Final Gathering 逆に、各テクセルからレイを飛ばし、 もしもそのPhotonがこっちに飛んできたならば どれくらいの影響があるかを調べる。 ? ? ?
  55. 55. Final Gathering みずからレイを飛ばして、 遠くのフォトンからの影響を調べにいく。 見るフォトンの数が増える。
  56. 56. Final Gathering あるテクセルから発せられた Final GatherのRayの視覚化 黄色はどこかにヒットした Ray。 青は無限遠に消失(もしくはSkylightにヒット)したもの
  57. 57. Final Gathering Photon Mapping -> Final Gathering 見違えるような結果のFinal Gathering….ですが...
  58. 58. Final Gathering レイの数が少ないと大量のノイズを生みます。解決するためにレイの数を増やすとビ ルド時間が非常に長くなる危険性があります。 Production: ILQ 10Preview: ILQ 1
  59. 59. Final Gathering 各テクセルが独立してレイを飛ばすので、 近隣のテクセルの相関がありません。 なのでレイの数が少ないと沢山のノイズが発生してしまいます。
  60. 60. Photon Mapping Final Gathering Irradiance Caching
  61. 61. Photon Mapping Final Gathering Irradiance Caching
  62. 62. Irradiance Caching ファイナルギャザリングを すべてのテクセルでやるのか。。。。 時間もかかるし。。。 ノイズが。。。
  63. 63. 君たち、間接光成分だいたい一緒でしょ? Irradiance Caching
  64. 64. どこかFinal Gathering したら。。。 Irradiance Caching
  65. 65. その情報をキャッシング Irradiance Caching
  66. 66. どこかFinal Gathering したら。。。 Irradiance Caching
  67. 67. その情報もキャッシング Irradiance Caching
  68. 68. Irradiance Caching テクセルがもしもキャッシュに十分に入っていたら 近くのキャッシュから見積もる。 そのテクセルはFinal Gatherしないので高速
  69. 69. Irradiance Caching Only Final Gather With Irradiance Caching Irradiance CacheによってFinal Gatherのノイズが軽減
  70. 70. Irradiance Caching Preview 設定によって、各キャッシュの数と大きさ、補間の度合いなどを調整可能 Production
  71. 71. Irradiance Caching Preview ノイズを除去しかつ高速化されるが、あまりに大きな補間を行うとディティールが なくなるので注意が必要 Production
  72. 72. Photon mapping Final Gathering Irradiance Caching
  73. 73. Photon mapping Final Gathering Irradiance Caching
  74. 74. Lightmass内部の間接光計算のアルゴリズム概要 Final Gathering Irradiance Caching (IRC) Each texel... NO!! YES!! 値を補間してテクセルに格納し、 次のテクセル計算へ Photon Mapping Scene Setup 近くのIRCから 補間可能?
  75. 75. Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting Photon Mapping でシミュレーション 4
  76. 76. Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす 3 Indirect Lighting Photon Mapping でシミュレーション 4
  77. 77. Direct Lighting from Lights NOT emitting photons (Sky Light) Photonを出さないライトからの直接光
  78. 78. Skylightからの直接光 SkyLight Skylightは360度無限遠からのライティングです
  79. 79. SkyLight Skylightからの直接光 Skylightからの直接光はFinal Gatheringの時に計算されます。
  80. 80. Skylightからの直接光 この青いレイ達がSkyLightにヒットしたレイです (Skylightがなければ無限遠に消失したという意味になります)
  81. 81. SkyLight Skylightからの直接光 ? これだけのレイで十分??
  82. 82. Skylightからの直接光 悪い例) Skylightからのみのライティング。にじみだらけ。
  83. 83. SkyLight Skylightからの直接光 ? SkyLightに向けてもっとレイが欲 しい!
  84. 84. Lightmass Portal
  85. 85. Lightmass Portal SkyLight Portal Final Gatheringの再分割を強制させる
  86. 86. Lightmass Portal SkyLight Portal Final Gatheringの再分割を強制させる
  87. 87. Lightmass Portal 例として実際に各テクセルのFinal Gatheringのレイの数を見てみる
  88. 88. Lightmass Portal No Lightmass Portal With a Lightmass Portal
  89. 89. Lightmass Portal No Lightmass Portal With a Lightmass Portal
  90. 90. Lightmass Portal Please ignore the lightmap padding error... No Lightmass Portal With a Lightmass Portal
  91. 91. Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす Final Gathering時に 直接参照 Indirect Lighting Photon Mapping でシミュレーション 4
  92. 92. Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす Final Gathering時に 直接参照 Indirect Lighting Photon Mapping でシミュレーション 4
  93. 93. Indirect Lighting from Lights NOT emitting photons (Sky Light) Photonを出さないライトからの間接光
  94. 94. Skylightの間接光 SkyLight SkylightはPhotonを出さない。。。
  95. 95. Skylightの間接光 SkyLight しかし、Skylightからも間接光は出したい
  96. 96. Lightmass内部の間接光計算のアルゴリズム概要 Final Gathering Irradiance Caching (IRC) Each texel... NO!! YES!! 値を補間してテクセルに格納し、 次のテクセル計算へ Photon Mapping Scene Setup 近くのIRCから 補間可能? Mini Iterative Final Gather & Irradiance Caching For Skylights New!!!
  97. 97. Skylightの間接光 SkyLight Cache! Photon Mappingなどの前に、Final GatherをしてSkylightからのライ ティングをキャッシュしておく
  98. 98. Skylightの間接光 SkyLight Photon Mappingなどの前に、Final GatherをしてSkylightからのライ ティングをキャッシュしておく
  99. 99. SkyLight Skylightの間接光 複数回のバウンスを表現するために、FG&IRCを指定したバウンス回数 まで繰り返す。
  100. 100. SkyLight Skylightの間接光 複数回のバウンスを表現するために、FG&IRCを指定したバウンス回数 まで繰り返す。
  101. 101. Skylightの間接光 “Num Sky Lighting Bounces”で反復回数を指定
  102. 102. Skylightの間接光 0 (Direct Lihgting Only)  1 2 “Num Sky Lighting Bounces”で反復回数を指定
  103. 103. Advanced: Emissive Light Emissiveにより自己発光しているStatic Objectは、 Lightmass内部で光源として扱うことができます。
  104. 104. Advanced: Emissive Light しかし、Skylightと同様にEmissive LightもPhotonを出せません。
  105. 105. Advanced: Emissive Light Emissive Lightのライティングは、 Skylightと同様にFinal Gatheringを基準に行われます。
  106. 106. Advanced: Emissive Light なので”Num Sky Lighting Bounces”はEmissive Lightにも効きます
  107. 107. Advanced: Emissive Light Num Sky Lighting Bounces = 0 Num Sky Lighting Bounces = 3
  108. 108. Tips: Emissive light にも効く Lightmass portal 小さな Emissive LightはFInal Gather時にヒットせず、 参照されないこともあります。。
  109. 109. Tips: Emissive light にも効く Lightmass portal 結果、非常にノイズが多いLightmapを生成する可能性があります
  110. 110. Tips: Emissive light にも効く Lightmass portal Lightmass Portal ノイズを軽減する方法として、そのEmissive Lightよりも大きなLightmass Portal で囲ってあげる方法があります
  111. 111. Tips: Emissive light にも効く Lightmass portal Lightmass Portal Lightmass Portalにさえ当たれば、Final Gatheringのレイの分割が行われ、結 果Emissive Lightにレイがヒットしやすくなります
  112. 112. Tips: Emissive light にも効く Lightmass portal No Lightmass Portal With Lightmass Portal
  113. 113. Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす Final Gathering時に 直接参照 Indirect Lighting Photon Mapping でシミュレーション Skylight専用の FG&IRC を複数回繰り返す
  114. 114. Summary
  115. 115. Lightingの種類とLightの種類で4項目に分類 Lights emitting photons Lights NOT emitting photons Direct Lighting ライトに直接レイを飛ばす Final Gathering時に 直接参照 Indirect Lighting Photon Mapping でシミュレーション Skylight専用の FG&IRC を複数回繰り返す
  116. 116. Photon mapping Final Gathering Irradiance Caching Photon Mappingを軸にした間接光表現のためのアルゴリズム
  117. 117. Lightmass内部の間接光計算のアルゴリズム概要 Final Gathering Irradiance Caching (IRC) Each texel... NO!! YES!! 値を補間してテクセルに格納し、 次のテクセル計算へ Photon Mapping Scene Setup 近くのIRCから 補間可能? Mini Iterative Final Gather & Irradiance Caching For Skylights New!!!
  118. 118. Thank you for your time!

×