解决 UnrealEditor 的 D3D11-compatible 问题

这篇文章,记录一下在远程无显卡的虚拟 windows 机器上,跑起 UE5 Editor 做材质烘焙任务过程中,遇到的一个 D3D11 不兼容问题。

在没有 gpu 的远程windows 机器上,开 UnrealEditor 会遇到这个问题:

image-20231008211645268

根据错误消息,定位到源码:

image-20231008211705845
  1. 于是,尝试 Force 强行指定一个 RHI:

即:

UnrealEditor.exe -opengl 
image-20231008211746492

发现所有的RHI都不行。搜索了下,启动时加 -log 参数可以看到日志。于是对比成功和失败的启动日志:

失败的日志:

image-20231008211800368

成功的日志:

image-20231008211809176

根据关键词搜索源码,往上看下具体逻辑:

image-20231008211818311

在一些条件下,会 skip 掉当前的 adapter:

image-20231008211828691

而这个 0x1414,看起来就是那个 Microsoft Basic Renderer 了,它被直接 skip 掉。

而这个貌似可以被修改:

image-20231008211841341

找到了这个参数:

image-20231008211850056

于是在命令行里加上它:

UnrealEditor.exe -AllowSoftwareRendering -log

顺利启动:

image-20231008211909345

烘焙出来的 glb 也是正确的:

image-20231008211922676