NaniteBuilder uses an int8 type for ExternalEdges and counts adjacency with a int32. The bug stems for the cast to int8 when adding the adjacency count into the ExternalEdges array.
The precision loss leads to bug where an adjacency count that is a multiple of 256 overflows to exactly 0 in the cast, leading to ExternalEdges having 0 added to the array, but the number of edges increment uses the uncast adjacency count, which is above zero.
Later, the ExternalEdges array for the cluster is checked in ClusterDAG.cpp for truthiness, which results in nothing being added to the DAGs ExternalEdges. Since no edges were processed, the ExternalEdgeOffset isn't incremented and is no longer equal to the length of the DAGs ExternalEdges.
How do I set a material as a post-processing material?
How does TextureRenderTarget2D get TArray<uint8> type data?
Why does the REMOVE method of map container remove elements have memory leaks?
What is the difference between Camera and CineCamera?
How does TArray loop correctly remove elements in blueprints?
UMG RichText not appear image when packaged
What controls of umg have mouse wheel events in UE4.27?
How to use the.usf file in the ue4 engine Shader in the material?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-219250 in the post.
0 |
Component | UE - Graphics Features - Nanite |
---|---|
Affects Versions | 5.4.2 |
Target Fix | 5.6 |
Created | Jul 10, 2024 |
---|---|
Updated | Jan 22, 2025 |