Hi everyone
,
Previously, I attempted to adjust various parameters to reduce the crashes, but I couldn’t eliminate them entirely. So, I decided to spend more time conducting a detailed analysis. Below, I present the results of the tests I conducted:
Initially, the tests showed some improvement, but it turned out to be a statistical error, as subsequent runs consistently resulted in crashes. Unfortunately, none of the commands improved the situation in a reliable manner.
Detailed Breakdown of Tests Conducted to Enable and Stabilize Nanite Tessellation
Test 1: Enabling Basic Nanite Tessellation
Objective: To activate Nanite tessellation and evaluate stability.
r.Nanite.AllowTessellation=1 ; [default: 0] Enables Nanite displacement
r.Nanite.Tessellation=1 ; [default: 0] Activates Nanite tessellation
Results: 4 out of 5 tests resulted in crashes.
Consensus: Nanite tessellation is active but highly unstable, indicating potential issues with the experimental feature’s initial implementation.
Test 2: Disabling Tessellation
Objective: To determine if disabling tessellation improves stability.
r.Nanite.AllowTessellation=0 ; [default: 0]
r.Nanite.Tessellation=0 ; [default: 0]
Results: 0 out of 5 tests resulted in crashes.
Consensus: Stability achieved without tessellation, confirming that the crashes are related to the tessellation feature.
Test 3: Increasing Nanite Streaming Memory
Objective: To test if increasing the streaming memory pool size reduces crashes.
r.Nanite.AllowTessellation=1 ; [default: 0]
r.Nanite.Tessellation=1 ; [default: 0]
r.Nanite.Streaming.StreamingPoolSize=1024 ; [default: 512] Increases streaming pool size to 1024 MB.
Results: 2 out of 5 tests resulted in crashes.
Consensus: Increased memory appears to reduce crash frequency, suggesting that memory allocation might be a factor in stability.
Test 4: Further Increasing Streaming Memory
Objective: To test the effects of further increasing the streaming memory pool size.
r.Nanite.AllowTessellation=1 ; [default: 0]
r.Nanite.Tessellation=1 ; [default: 0]
r.Nanite.Streaming.StreamingPoolSize=2048 ; [default: 512]
Critical Error:
Streaming pool size (2048MB) must be smaller than the maximum allocation supported by the graphics hardware (2048MB).
Consensus: The maximum supported allocation size was reached, causing a critical error. This suggests a hardware limitation.
Test 5: Intermediate Streaming Memory Size
Objective: To find a balanced streaming memory pool size that might improve stability.
r.Nanite.AllowTessellation=1 ; [default: 0]
r.Nanite.Tessellation=1 ; [default: 0]
r.Nanite.Streaming.StreamingPoolSize=1536 ; [default: 512]
Results: 2 out of 5 tests resulted in crashes.
Consensus: No significant improvement, potentially due to statistical variance.
Test 6: Disabling Specific Nanite Features
Objective: To identify specific Nanite features that might be causing instability.
r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1
r.Nanite.AsyncRasterization=0 ; [default: 1]
r.Nanite.MeshShaderRasterization=0 ; [default: 1]
r.Nanite.PrimShaderRasterization=0 ; [default: 1]
r.Nanite.Streaming.AsyncCompute=0 ; [default: 1]
r.Nanite.ComputeRasterization=0 ; [default: 1]
Results: 3 out of 5 tests resulted in crashes. Landscape disappeared.
Notes: Crashes persist, and landscape issues are likely due to enabled tessellation.
Test 7: Disabling Programmable Rasterization
Objective: To test if disabling programmable rasterization improves stability.
r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1
r.Nanite.ProgrammableRaster=0 ; [default: 1]
Results: 0 out of 5 tests resulted in crashes.
Notes: Crashes stopped, but landscape has no masked alpha on masked materials.
Test 8: Disabling Async Rasterization
Objective: To check if disabling async rasterization helps with stability while keeping programmable rasterization enabled.
r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1
r.Nanite.AsyncRasterization=0 ; [default: 1]
Results: 3 out of 5 tests resulted in crashes.
Notes: Crash frequency remained unchanged.
Test 9: Forcing Shader Bundle Dispatch Emulation
Objective: To evaluate the impact of forcing shader bundle dispatch emulation on stability.
r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1
r.Nanite.Bundle.Emulation=1 ; [default: 0]
Results: 3 out of 5 tests resulted in crashes.
Notes: Crash frequency remained unchanged.
Test 10: Reducing Nanite Clusters
Objective: To test if reducing the count of Nanite clusters by controlling tessellation dicing and distance density improves stability.
r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1
r.Nanite.MaxPixelsPerEdge=2 ; [default: 1]
r.Nanite.DicingRate=8 ; [default: 2]
Results: 3 out of 5 tests resulted in crashes.
Notes: Crash frequency remained unchanged.
Test 11: Increasing Nanite Clusters
Objective: To test if increasing the count of Nanite clusters by controlling tessellation dicing affects stability.
r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1
r.Nanite.DicingRate=1 ; [default: 2]
Results: 3 out of 5 tests resulted in crashes.
Notes: Crash frequency remained unchanged.
Test 12: Using Epic’s Proposed Values
Objective: To evaluate the stability of Epic’s proposed settings for Nanite, found in ElectricDreamsEnv project.
r.Nanite.AllowTessellation=1 ; [default: 0]
r.Nanite.Tessellation=1 ; [default: 0]
r.Nanite.MaxVisibleClusters=10485760 ; [default: 4194304]
r.Nanite.MaxCandidateClusters=16777216 ; [default: 16777216]
r.Nanite.MaxNodes=10485760 ; [default: 2097152]
Results: 4 out of 5 tests resulted in crashes.
Consensus: No significant improvement in stability, indicating that these values might not be optimal for all hardware configurations.
Test 13: Lowering Values for Stability
Objective: To test if lowering specific Nanite parameters improves stability.
r.Nanite.AllowTessellation=1 ; [default: 0]
r.Nanite.Tessellation=1 ; [default: 0]
r.Nanite.MaxVisibleClusters=131072; [default: 4194304]
r.Nanite.MaxCandidateClusters=4194304; [default: 16777216]
r.Nanite.MaxNodes=65536; [default: 2097152]
Results: 1 out of 5 tests resulted in crashes.
Consensus: Better stability achieved, indicating that lowering these parameters can significantly reduce crashes while maintaining functionality. It still may be potentially due to statistical variance.
EDIT 1: While initial tests showed improved stability, further testing revealed consistent crashes, indicating that the improvements were likely due to statistical variance.
Conclusion
Lowering specific Nanite parameters improved stability maintaining tessellation functionality. This suggests that fine-tuning these settings is crucial for achieving optimal performance and stability when using the experimental Nanite tessellation feature in Unreal Engine 5.4.
EDIT 1: Although initial results suggested that lowering specific Nanite parameters improved stability while maintaining tessellation functionality, further testing disproved this, revealing the improvement was a statistical anomaly. Regular crashes resumed, showing that these adjustments did not provide a reliable solution.
Further testing and adjustments are still necessary as more updates and insights become available.
I hope this helps others who are facing similar issues. If you have any additional suggestions or solutions, please share them!
Thank you in advance!
Thomas Winged