116.3K Views
January 20, 23
スライド概要
2022年11月18日に行われたライセンシー様向けUE5.1勉強会の資料です。
スライドに埋め込まれた動画は下記URL先のパワポ版にてご確認ください。
https://epicgames.ent.box.com/s/gu5vwl64vxa6c6n2t6py909nwxkngsak
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
Rendering / Effect UE5.1 アップデート
2022 Licensee Meeting Rendering Epic Games Japan Nori Shinoyama
UE5.1がReleaseされました!
篠山が主に説明するTopic ● Lumen ● Virtual Shadow Map ● Strata (Experimental)
Matrix Demoで賞賛と共に言われていたこと ● 60fpsじゃないじゃん.... ● 木に葉がないじゃん... 5.1にはこれらに対する様々な改善が取り込まれています
60fps対応? Lumen/VSMの改善項目
具体的な改善点の前に。。。 Lumenの実装のメンタルモデルを作成するための入門スライドを作成しました まだの方はご参考にして頂ければ幸いです。 https://www.docswell.com/s/EpicGamesJapan/5EV87K-UE5_Lumen101
UE5.1からLumenが60fps対応? ● UE5.1 Release Noteより ● Lumen / Nanite / VSM that lay the groundwork for games and experiences running at 60 fps on next-gen consoles and capable PCs. ● これはScalabilityのHighをPS5/XSX等次世代機にて60fpsをターゲットと して設定したという意味 ● プラットフォーム個別の設定は Platforms/PLTFORM_NAME/DataDrivenPlatformInfo.iniに 具体的な変更点が記述 ● 例えば XSX/XSSでの設定の違いなどもここで吸収されている
Scalabilityの比較 (一部抜粋) High Epic r.LumenScene.Radiosity.ProbeSpacing 8 4 r.LumenScene.Radiosity.HemisphereProbeResolution 3 4 r.Lumen.TraceMeshSDFs.Allow 0 1 r.Lumen.ScreenProbeGather.RadianceCache.ProbeResolution 16 32 r.Lumen.ScreenProbeGather.ScreenSpaceBentNormal 0 1 r.Lumen.ScreenProbeGather.DownsampleFactor 32 16 r.Lumen.ScreenProbeGather.IrradianceFormat 1 0 r.Lumen.ScreenProbeGather.TwoSidedFoliageBackfaceDiffuse 0 1 r.Lumen.ScreenProbeGather.StochasticInterpolation 1 0 r.LumenScene.SurfaceCache.CardCaptureRefreshFraction 0 0.125
5.0 -> 5.1からの細かな改善と高速化 (例) 新しいデノイザーにより、高速化により発生するノイズを軽減 https://developer.nvidia.com/blog/rendering-in-real-time-with-spatiotemporal-blue-noise-textures-part-1/
処理負荷比較 ● 某プラットフォーム ● 某シーン (軽量) ● 解像度: 2845x1600 (4Kの75%) 最終的に4KにUpscale High Epic LumenSceneLighting 0.43ms 1.06ms DiffuseIndirectAndAO 3.09ms 6.23ms
備考: 60fpsでハードウェアレイトレは使えるか? ● Epicとして公式に「60fpsならばDistance Fieldで」とは言っていない ● Scalability Highの状態でも、DF/HWRTどちらでも設定可能 ● しかしHWRTの方が3ms以上平均して重たくなるだろうとのこと (経験上、殆どのシーンは3msの増加では済まない)
UE5.1 Virtual Shadow Mapの軽量化 ● Distant Light Mode ● 遠くにあるローカルライトのVSM更新 をフレーム分割する機能 ● r.shadow.virtual.distantlightmode ● 0: Off ● 1: 遠くのライトのみ ● 2:全ライトが対象(Debug) ● r.Shadow.Virtual.MaxDistantUpdateP erFrame ● 1フレームに何個のライトを更新 するか設定可能 (Default 1) https://twitter.com/tempkinder/status/ 1579116089816252419 動画はこちらをご参照ください
UE5.1 Virtual Shadow Mapの軽量化 ● Distance Lighting Mode ● OFF vs ON ● このテストシーンのとある視点では約88%の処理負荷削減
UE5.1 Virtual Shadow Mapの軽量化 ● Onepass Projection ● ● ● ● r.Shadow.Virtual.OnePassProjection 通常ではライト毎にシャドウ描画が行われるが、それを1パスで一括で描画する このシーンの特定の視点からみた場合、83%の高速化 各ピクセルが参照できる最大ライト数 ● r.Shadow.Virtual.OnePassProjection.MaxLightsPerPixel (default: 16) ● UE5.0まではこちらClustered Deferred Shadingを使用しなければいけなかったがUE5.1 からはOffのままで使用可能
UE5.1での60fps対応 ● 60fpsの”基準値”としてGI Scalability Highを調整 ● VSMにも処理負荷軽減のための実装が入る ● しかし、勿論どんなシーンでも60fps対応できるというわけではなく プロジェクト毎に慎重な設定が必要となります
葉や草
おさらい - LumenとFoliageの関係 ● Lumenは(正確にはSurface Cacheの計算は) FoliageではNanite Meshにのみ対応 ベンチはFoliageではない ベンチにはカードが生成されない
Nanite MeshのFoliageしかLumenが見ない理由 詳細は弊社澤田のCEDEC講演をご参考にしていただけますと幸いです
Lumen Scene内でのMaskedの扱い 5.1からHardware Ray TracingではLumenScene内でもMaskedとして扱われる様に Distance Field Hardware Raytracing 5.0 Scene 5.1 Lumen Scene
UE5.1からTwo-sided Foliageに対応 ● Foliageモデルで問題になったのはOverOcclusion、暗くなりすぎる ● UE5.1からそれらの改善を実装 ● r.LumenScene.GlobalSDF.DitheredTransparencyStepThreshold ● r.Lumen.ScreenProbeGather.TwoSidedFoliageBackfaceDiffuse 5.0 5.1
TwoSidedFoliageBackfaceDiffuse: ON Distance Field / Hardware Raytrace どちらにも効果あり
TwoSidedFoliageBackfaceDiffuse: OFF Distance Field / Hardware Raytrace どちらにも効果あり
DitheredTransparencyStepThreshold: 0.1 Distance Fieldにのみ効果あり Default 0.1
DitheredTransparencyStepThreshold: 0.5 Distance Fieldにのみ効果あり Default 0.1
UE5.1からのFoliage対応 ● 5.1からLumen内でのMaskedの扱いが若干改善 ● (5.1からNaniteがMasked対応したこともあり)、Foliageでの森林表現が対応 されやすくなる ● Lumenとして、葉の間などが暗くなってしまう(OverOcclusion)の軽減策を 5.1にて実装 ● ※パフォーマンスや精度に関してはまだまだ検証の必要あり
その他 Lumenの改善
High Quality Translucency Reflections
Lumen ReflectionがSingle Layer Waterに対応
Experimentals
Strata ● 新しいMaterial System ● エンジン内部でハードコードされているShadingModelから ユーザが自由に作れる用に ● 任意のBSDFモデル ● 複雑なレイヤードマテリアル ● いつExprimentalがとれるかは未定 ● Engineの他機能に未対応の部分がいくつかある ● 使用方法 ● Project SettingsのStrata MaterialsをONにする ● 従来のMaterialと同時に使うことはできない ● 既存Materialは全てStrataに変換される
注意: Strata検証は別プロジェクトで行う Strataは従来のMaterialも全て Strataに自動で変換します Strata上でマテリアルをSaveする と、StrataをOffにした際に マテリアルが壊れる可能性あり
Strata Examples
Strata Examples
Strata Examples
Strata Epic Developer Communityにチュートリアルなどがあります!(英語)
ご清聴ありがとうございました。
目次 - Naniteやその他レンダリング関係の機能について ・Nanite関連 ・ライトミキサー ・アナモルフィック被写界深度 ・マテリアル・テクスチャ関連 ・Movie Render Queue関連 ・HDR/Color関連のアップデート
目次 - Naniteやその他レンダリング関係の機能について ・Nanite関連 ・ライトミキサー ・アナモルフィック被写界深度 ・マテリアル・テクスチャ関連 ・Movie Render Queue関連 ・HDR/Color関連のアップデート
Naniteの改善 5.0と比較し多くのマテリアル機能に対応 ・Masked ・Two Sided ・ワールド位置オフセット (ベータ機能) ・ピクセル位置オフセット その他フォリッジジオメトリも対応を拡充 パフォーマンスに関しては、現在も改良に向けて研究開発中
Naniteワークフローの改善 実際に利用していく上でNaniteの設定周りを改良 Nanite をサポートするプラットフォームと サポートしないプラットフォームの両方でオーサリングできるように
非Naniteメッシュに別の高精細メッシュを追加可能に 別の高精細メッシュを Naniteメッシュとして追加できるように 既存のメッシュがフォールバックメッシュに
Nanite Pass Switch Nanite Pass Switchが追加され、Naniteの場合のみの処理を定義可能に 使い分け ・Naniteはメッシュにディティールがある分 シンプルに ・非Naniteパスはテクスチャ等を追加など
Nanite Override Material Nanite Override Material:Nanite用マテリアル Naniteの時に適用されるマテリアルを指定。Material毎に設定可能
Nanite Override Materialの注意点 マルチプラットフォームの場合にマテリアルを分けて制作が可能 注意点 ・同一アセットのマテリアルが2つ存在するため、更新の管理が大変 ・トラブルのもと ・基本的にはNanite Switch Passで同一マテリアル上で管理することをおすすめ
Disallow Nanite Disallow Nanite(Naniteを不許可):Static Mesh Componentにて設定可能 メッシュとしてはNaniteを持つが、 通常のStatic Meshを利用したい場合に使用
目次 - Naniteやその他レンダリング関係の機能について ・Nanite関連 ・ライトミキサー ・アナモルフィック被写界深度 ・マテリアル・テクスチャ関連 ・Movie Render Queue関連 ・HDR/Color関連のアップデート
ライトミキサー ・ライトの一覧化 ・指定パラメータを編集
環境光ライトミキサー(既存機能) SkyAtmosphere等を含む、 環境光に関する機能に限定 設定可能なパラメーターが固定
ライトミキサーの機能 ・ライトの追加 ・パラメーターの変更 ・単一ライトの確認 ・表示パラメーターの変更 ・コレクションの追加
ライトミキサーの機能 - ライトの追加
ライトミキサーの機能 - 単一ライトの確認
ライトミキサーの機能 - パラメーターの変更
ライトミキサーの機能 - 表示パラメータの変更
ライトミキサーの機能 - コレクションの追加
オブジェクトミキサー ライトミキサー自体はオブジェクトミキサー機能に実装 Level上のコンポーネントの設定を一覧化、設定が可能に フィルターは現状C++で作成 ※講演確認時点ではBPで動いていないようでしたが5.1リリース版ではBPでの設定も動くようでした こちら記事にして頂いていた方がいたので紹介させていただきます ObjectMixerを使ってLevel上のActorのPropertyを一括編集する | hakobuneworks https://www.hakobuneworks.com/posts/2022/11/21/
UObjectMixerObjectFilter UObjectMixerObjectFilterを継承したC++ Classを作成 LightMixerObjectFilterを参考に実装 .¥Engine¥Plugins¥Editor¥ObjectMixer¥LightMixer¥Source¥LightMixer¥Public¥LightMixerObjectFilter.h
目次 - Naniteやその他レンダリング関係の機能について ・Nanite関連 ・ライトミキサー ・アナモルフィック被写界深度 ・マテリアル・テクスチャ関連 ・Movie Render Queue関連 ・HDR/Color関連のアップデート
アナモルフィック被写界深度 DoFでアナモルフィックレンズのような楕円形のボケ効果が可能に -> スクイーズ倍率で調整
アナモルフィック被写界深度 ボケ効果だけ変更したい場合は、追加されたCropを設定後スクイーズ倍率で調整
目次 - Naniteやその他レンダリング関係の機能について ・Nanite関連 ・ライトミキサー ・アナモルフィック被写界深度 ・マテリアル・テクスチャ関連 ・Movie Render Queue関連 ・HDR/Color関連のアップデート
Textureの改善 - 32bit floatへ対応 ・Single Float(R32F) ・HDR High Precision(RGBA32F) ※スカイライトのキューブマップは、 16ビット浮動小数点にクランプされてしまう 既知の問題があり、今後改善予定
2の累乗ではないテクスチャでミップマップ対応 ・2の累乗ではないテクスチャでミップマップ対応 ・圧縮は4の倍数が必要
2の累乗ではないテクスチャでミップマップ対応 注意点 ・ストリーミングには利用できない (強制Never Stream) ・基本的には2の累乗テクスチャをおすすめ 活用方法 ・LOD Biasでゲーム内の最大サイズを制御
SceneCaptureコンポーネントのメモリ表示 SceneCaptureコンポーネントで使用されているレンダーターゲットで使用する GPUメモリとテクスチャ、LumenSceneを含むメモリ量が表示されるように
マテリアルのインライン編集 マテリアルノード80個以上が見直され、インライン(ノード上)で値を変更可能に
オーバーレイマテリアル メッシュを複製せずにベースマテリアルパスの上にもう1パス描画を行う Max Draw Distanceを設定しておくと、 一定距離の場合のみOverlay描画を行うことが可能
ラフディフューズ マテリアルのディフューズライティング計算を Chan モデル(from Activision WWII advances Siggraph 2018) に変更 https://advances.realtimerendering.com/s2018/MaterialAdvancesInWWII.pdf https://advances.realtimerendering.com/s2018/MaterialAdvancesInWWII-course_notes.pdf UE 5.0~
ラフディフューズ ベースカラー (1.0, 1.0, 1.0) Metallic (0.0) デフォルト(ランバート) ラフディフューズ ラフネス:左から右にかけて0.0-1.0
マテリアルでエネルギー保存を有効化 マイクロファセット間の複数のバウンス効果を近似する設定 UE 5.0~
マテリアルのエネルギー保存を有効化 ベースカラー (1.0, 1.0, 1.0) Metallic (1.0) デフォルト エネルギー保存を有効化 ラフネス:左から右にかけて0.0-1.0
目次 - Naniteやその他レンダリング関係の機能について ・Nanite関連 ・ライトミキサー ・アナモルフィック被写界深度 ・マテリアル・テクスチャ関連 ・Movie Render Queue関連 ・HDR/Color関連のアップデート
Texture Streamingの改善 - MRQ 動画書き出し時のTexture Streamingは規定値として無効化 - > 有効化しないとメモリが足りない - > 有効化するとテクスチャがボケる といった既知の問題が存在 この問題を改善するべくオプションを追加 Flash Streaming Managers
Texture Streamingの改善 - MRQ 現在もTexture Streamingは、デフォルト無効 使用する際には、無効化しないように設定が必要 ・機能 フレーム毎に処理をフラッシュ r.Streaming.SyncStatesWhenBlocking
Cinematic Pre-streaming 実験段階 カットシーンでNaniteやVirtual Textureのストリーミングが間に合うようにキ ャッシュデータを作成する機能
Cinematic Pre-streaming 実験段階 ムービーレンダーキューの設定からプリストリーミングレコーダーを追加
Cinematic Pre-streaming 設定 ・デフォルトでVirtual TextureとNaniteを記録 ・Disable Advance Render Fuaturesを有効を確認して閉じる キャッシュ作成に不必要な機能がオフに 実験段階
Cinematic Pre-streaming MRQから一度レンダリングを行うと、 対象シーケンスにシネマティックプレストリーミングが作られる キャッシュデータは設定により保存される(例) ¥Content¥Cinematics¥Prestreaming¥シーケンス名 実験段階
Cinematic Pre-streaming 実験段階 通常のムービー書き出しをする際には、プリストリーミングレコーダーをオフに Disable Advance Render Fuaturesオプションにより影などが切られてしまう
目次 - Naniteやその他レンダリング関係の機能について ・Nanite関連 ・ライトミキサー ・アナモルフィック被写界深度 ・マテリアル・テクスチャ関連 ・Movie Render Queue関連 ・HDR/Color関連のアップデート
HDR - 直近の更新 少しずつ改善中 ・Editor HDR対応 - (CL19918995) ・Background blurへの対応(UE5.1) - CL20933909 ・最小、中間、最大輝度などへの対応(基礎的なもの) - CL21559813 r.HDR.Display.MinLuminanceLog10 r.HDR.Display.MidLuminance r.HDR.Display.MaxLuminance HDR対応に関して要望は多く、引き続き改善を続けている
Working Color Spaceの対応 5.0 ~ UE5から少しずつWorking Color Space(色空間)対応が導入されている 従来は暗黙知的にリニアsRGBで計算
Working Color Spaceの対応 今後 sRGB前提で計算されてしまっている箇所等が非常に多く、 UE5.2での改善に向けて取り組んでいる 現状Color値がプロジェクト設定に依存してしまっているため、 TextureなどのようにColor Spaceを混合できない ※例:他のColor Spaceを設定中にsRGBの値を入れたりが難しい それぞれColor値毎にColor Spaceを定義できるように検討中...
Niagara アップデート Epic Games Japan 斎藤 修
はじめに Niagaraは5.1においては劇的な新機能というのはないかもしれませんが 依然変わらず精力的に改善と更新が行われています
Niagara アップデート まず 大きな機能の更新の一つとしては GPUパーティクルでリボンを扱えるようになりました
Niagara アップデート また UI/UX周りも大きく改善されています
Niagara アップデート 大きなものとしてはスケーラビリティモードの追加
Niagara アップデート 各プラットフォームごとの見た目を確認しやすくなりました
Niagara アップデート さらにエミッターのバージョン管理も可能になっております
Niagara アップデート 小さなところでは スクラッチパッドがタブ表示可能になり
Niagara アップデート ユーザーパラメーターの整理も可能になりました
Niagara アップデート 詳細パネルにはEffect項目が追加され Niagara Debugger を直接起動可能になりました
Niagara アップデート また フリップブックベイカーも強化されています
Niagara アップデート これまでのフリップブックテクスチャに加えて ボリュームテクスチャやシミュキャッシュのベイクも可能になりました
Niagara アップデート これまでのフリップブックテクスチャに加えて ボリュームテクスチャやシミュキャッシュのベイクも可能になりました
Niagara アップデート Niagara Fluid も様々に改善されております
Niagara アップデート 特に Heterogeneous Volumetric Rendering シーンのライティングをボリュームに直接反映させることが可能です
Niagara アップデート 使用方法はプロジェクト設定での有効化と 専用のMaterialのアサインのみでお試しいただけます
Niagara アップデート Niagara Fluid はその他にも TriCubic補間の追加や
Niagara アップデート Linear Cubic Niagara Fluid はその他にも TriCubic補間の追加や
Niagara アップデート 処理負荷 Turbulenceや各フォースの挙動を改善し 使用メモリなども削減されていますので是非お試しください