The function "FStaticMeshLODResources::GetResourceSizeEx(...)" does not take into account that the buffers might be emptied, due to Mesh Streaming. This causes "obj list" to report sizes larger than the actual resident memory, which will affect "memreport".
1. Download the attached test project, and make a packaged build from it.
2. Run the packaged build with the -log command-line argument
3. Move backwards slightly so you can see the shiny rock "SM_Rock".
4. Run the console command "Stat StreamingOverview"
5. Observe that the "Mesh LOD Bytes Resident" is 31 MB
6. Run the console command "obj list class=StaticMesh"
7. Observe that the mesh /Game/SM_Rock.SM_Rock" has a ResExcKB of 31 MB, roughly matching the "Mesh LOD Bytes Resident" stat.
8. Run the console command "r.Streaming.PoolSizeForMeshes 10"
9. Repeat steps 5 to 7. This time, the "Mesh LOD Bytes Resident" stat is 4 MB, with 27 MB being evicted from memory, but teh ResExcKB size of the object is unchanged. (BUG)
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-221113 in the post.
0 |
Component | UE - Rendering Architecture |
---|---|
Affects Versions | 5.4, 5.4.3 |
Target Fix | 5.6 |
Created | Aug 6, 2024 |
---|---|
Updated | Aug 21, 2024 |