UE5.4での NaniteStreamingManager の RuntimeResourceID がオーバーフローする件について

Naniteの描画について、Shippingビルドでの動作確認中に特定のNaniteメッシュがルートジオメトリのような低ポリの状態で描画されることがありました。

これまでかなり検証しておりますが、この現象が起こったのは一度だけです。

そこで似たような事例がなかったか他のスレッドやissueを探し、

<br/>

https://issues.unrealengine.com/issue/UE\-222871

<br/>

このissueを見つけました。この問題が起きていたのではないかと思ったので2点確認させていただけるでしょうか。

1つ目は、このissueの問題が起こった際に前述のような症状が発生することはあるでしょうか。

issueの説明を読むと他のリソースを返す可能性があるということなので見た目がどう壊れてもおかしくはないと思っております。

<br/>

もう1つはこのissueの中で「The licensee worked around this by resetting the ID to INDEX_NONE on Remove.」との記載があります。

ただEPS側のページは権限がないのか閲覧出来ませんでした。

このワークアラウンドの対処方法を教えていただけないでしょうか。

時期的にUEのバージョンアップや本格的な修正は難しく、最も低リスクな修正でこの問題を回避したいと考えております。

<br/>

お手数ですが、ご確認よろしくお願いいたします。

[Attachment Removed]

お世話になっております。

ご相談頂いているNaniteメッシュのルートジオメトリが表示されていた件ですが、

こちらは何らかの条件でストリーミングが間に合っていなかった(その他ロードが走っていた、PoolがいっぱいでInOutで間に合っていない等)、

もしくは指摘いただいているような不具合で表示されてしまっていた、という2パターンがありそうです。

レベル上のNanite使用状況は”stat NaniteStreaming”コマンドのStreaming Pool Percentage等にて確認できますので、

こちらがギリギリな場合は以下設定にて数値を上げて頂くと安定する可能性があります。

r.Nanite.Streaming.StreamingPoolSize

ご共有頂いたIssueのスレッドは以下URLとなりますが、

ワークアラウンドの方法としてはIssueの方に記載されているものと同様の状態となっておりました。

[Content removed]

以下は参考までの修正方法となりますが、FStreamingManager::Remove内のRuntimeResourceIDの設定前あたりで、

ResidentPage.Keyの初期化を行うことで対応できるのではないかと考えております。

追加対応としてResidentPageMapとHierarchyDepthManagerの即時削除を行っていますが、

これらは通常InstallReadyPagesで処理されているもので、先にKeyをINDEX_NONEにしてしまうことで実行されなくなるためです。

\Engine\Source\Runtime\Engine\Private\Rendering\NaniteStreamingManager.cpp

1107行目辺り

for (FResidentPage& ResidentPage : ResidentPages)
{
    if (ResidentPage.Key.RuntimeResourceID == Resources->RuntimeResourceID)
    {
        ResidentPageMap.Remove(ResidentPage.Key);
        HierarchyDepthManager.Remove(ResidentPage.MaxHierarchyDepth);
 
        ResidentPage.Key.RuntimeResourceID = INDEX_NONE;
        ResidentPage.Key.PageIndex     = INDEX_NONE;
    }
}
Resources->RuntimeResourceID = INDEX_NONE;

Issueの状態を確認させて頂いたところ、エンジンへの修正はUE5.7のCL44781127にて行われていたものの、

バージョン差が大きいためワークアラウンドの方が安全となる可能性がありそうです。

https://issues.unrealengine.com/issue/UE\-222871

お手数おかけしますが、上記対応をお試しいただけますと幸いです。

よろしくお願いいたします。

[Attachment Removed]

ご返答ありがとうございます。

低頻度で、起きた後も時間が経っても解消することがなくレベル遷移するまでそのままでしたので、不具合が起きていたのではないかと考えておりました。

またワークアラウンドの対処方法もありがとうございます。

CL44781127はバージョン差が大きく取り込むのは難しそうですので、この対処方法を試してみたいと思います。

適用してしばらく検証し、何かありましたらまたご相談させてください。

よろしくお願いいたします。

[Attachment Removed]

ご確認ありがとうございます。状況承知いたしました。

こちら管理上Pendingとさせて頂きますが、検証頂いた上でまた何かございましたらご連絡頂ければと思います。

お手数おかけしますが、よろしくお願いいたします。​

[Attachment Removed]