お世話になっております。
GPU Lightmassについて、お聞きしたい点があります。
現在、当社のプロジェクトで2km x 2kmのマップを作成しているのですが、GPU Lightmass のビルドに失敗するという問題があります。
該当マップでは、数多くのライトベイク対象オブジェクトを配置しており、この数が原因ではないかと考えておりました。
つきましては、GPU Lightmass でのベイクについて、オブジェクト数や、合計ライトマップサイズなどの制限はございますでしょうか?
以下、GPU Lightmass のベイクが失敗するケースについて詳細をお伝えします。
①2km x 2km のマップ
・2km 四方の Landscape アクターを配置
・ステイショナリーな Directional Light を一灯配置
・スタティックな SpotLight を複数灯 (5~10程度) 配置
・プロシージャルに生成した木、岩、石などを Incetanced Static Mesh Actor として配置
→ 配置した ISM はライトベイクの対象とする
→ 配置総数は100万以上
上記の設定で、GPU Lightmass によるライトベイクが失敗します。
②検証用に作ったマップ
・新規レベルを作成
・ステイショナリーな Directional Light を一灯配置
・Instanced Static Mesh を配置し、そのインスタンス数を増減
上記の設定で、ISM のインスタンス数が
・約52万個未満のとき、GPU ライトベイクが成功
・52万個を越えたとき、GPU ライトベイクが失敗
という結果になりました。
失敗するケースでは、以下2か所のどちらかでアサートが発生しました。
A.
VirtualTextureAllocator.cpp
FVirtualTextureAllocator::AcquireBlock() 内
check(Index <= 0xffff); // make sure we fit in 16bit index
のチェックを違反
A.について、https://issues.unrealengine.com/issue/UE-151841 と同内容であることを確認しました。
[Content removed] の回避方法を現在確認中です。
B.
RenderGraphBuilder.cpp
FRDGBuilder::SubmitBufferUploads 内
FMemory::Memcpy(DestPtr, UploadedBuffer.Data, UploadedBuffer.DataSize);
にてメモリのアクセス違反
以上の経緯から、GPU Lightmass のライトベイクではオブジェクト数などの制限があるかと考え、ご質問させていただきました。
検証環境は以下となります。
Windows11
UE5.7.1
CPU: Intel(R) Core™ Ultra 7 265K (3.90 GHz)
GPU: NVIDIA GeForce RTX 5070 Ti (16GB)
メモリ: 64GB
ご確認いただけますと幸いです。
何卒よろしくお願いいたします。
[Attachment Removed]