【UE5】Assertion failed: CurrentGPUVirtualAddress != 0 – Unreal Engine 5.4

Unreal Engine

水ノ茉の宣伝

準備中...
ゲームを作る予定なの
水ノ茉こおり

始まり

顔陰ツールを検証用プロジェクト(ReinCarnation)からゲーム開発用プロジェクト(Grim)にお引越しした際に遭遇した現象のお話です。

ツール画面を開いたらアサートに引っかかりました。

………はて?

これを発生させる条件を満たした覚えはないんですよね。

描画まわりのエンジン改造、しかも結構な魔改造を経験したことがある方なら分かるかもですが、これはコンスタントバッファがセットされていない、ないしヌルポの時に止まる場所です。筆者は独自のコンスタントバッファを追加した際に一部対応漏れでこれを引き起こしたことがありました。

後々独自CBを追加する予定はあるんですが、まだ着手してないからこのエラーは起きるはずがないんです。

不思議ですね。

アサートの再現方法

ConsoleVariables.iniを開きます。

;r.Shaders.Optimize=0のコロンを消してシェーダーのデバッグ機能を有効化します。

シェーダーデバッグ無効(初期値)シェーダーデバッグ有効化
;r.Shaders.Optimize=0r.Shaders.Optimize=0

githubで見る(L75)

シェーダーデバッグを有効化した状態でUEを起動します。

Material DomainにUser Interfaceが選択されたマテリアルを開いてドローコールを発生させれば再現します。

手元で施した改造が原因かと疑いましたが、純正エンジンでも再現できたので、そういうことでしょう。

こういうことが稀によくあるからUEのことが嫌いなんです。

回避方法

先ほどのシェーダーデバッグを無効化、要は初期値に戻すだけです。

シェーダーデバッグが出来なくなるって?

………そうだけど。

まぁ、デバッグが効かない環境で不具合を潰すこととか稀によくあるので、皆さん慣れっこでしょう。

なんとかなる。というか、なんとかするしかないのです。

おわり!!!

ツールを開けました。よかった。

修正方法?

それを考えるのはEPICのお仕事です。

Slateの処理を追えば辿り着けそうな気もしますが、知るかです。