Unreal编译GLES提示:Platform Android GLES X needs an offline shader compiler to extract instruction count

Viewed 8

问题

  • 在 Unreal( UE4 和 UE5 均可) 材质编辑器界面,打开 Platform Stats 面板,选中 Android - Android GLES 3.1 后,提示: Platform Android GLES 3.1 needs an offline shader compiler to extract instruction count. Please check 'Editor Preferences' -> 'Content Editors' -> 'Material Editor' for additional settings. 同时,对应平台下材质编译结果也异常(数字显示为 n )


1pqdi4ltiva255a9d6c5havcjf.png

分析

  • 在 Unreal 引擎源码里,搜索日志的关键词:“needs an offline shader compiler to extract instruction count”,可以找到日志出处:MaterialStats.cpp 的 FMaterialStats::ComputeGridWarnings 函数。


1bf314cacu5stb1m4kamth2edf.png

  • 断点分析,发现 SP_OPENGL_ES3_1_ANDROID 在 Windows 上需要离线编译器(FMaterialStatsUtils::PlatformNeedsOfflineCompiler)。


2d8ol5k55qs252mqbco44i2dpn.png

  • 而我们的编辑器中没有可用的离线编译器(FMaterialStatsUtils::IsPlatformOfflineCompilerAvailable,UMaterialEditorSettings 的 MaliOfflineCompilerPath 为空)。

解决


5l05ith7kc4608uj0sct6qnjmc.png

  • 我们下载到的是 Mali_Offline_Compiler_v6.4.0.504d49_Windows_x64.exe ,虽然网站提示过期,推荐下载其它软件,但因为其它软件注册登录比较麻烦,所以没下载,还是下载了首选的 Mali_Offline_Compiler 。


16er3bgc21viiomrp8n6shmvll.png

  • 下载后安装到本地磁盘(安装简单,没什么可说的)。


15gf8pe006be3hdu9dkihid519.png

  • 在 Unreal 编辑器中,打开 'Editor Preferences' -> 'Content Editors' -> 'Material Editor'


4sguf4ls4ha00p131ha1dh0aaf.png

  • 在 Mali Offline Compiler 项中,点击右侧的文件浏览器,选中 malisc.exe (注意这里直接填绝对路径可能不行,看源码是需要相对路径的)。


36p8i8jb1m6krmckecho8om9ec.png

  • 再次进入材质编辑器的 Platform Stats 界面,可以看到提示已经消失。


2t5c3tvh0atufvk24be95180c5.png

  • 随意挪动一下材质的某个节点,点击 Apply 按钮,触发 Shader 编译。


51ootmq4dp324su04humhpihiu.png

  • 编译完毕后,再看 Platform Stats 面板,可以看到编译完成,出现了对应的编译错误。


16upnoghnh14rfkb1crn5c1s1l.png

备注

  • 安装 Mali_Offline_Compiler_v6.4.0.504d49_Windows_x64.exe 时,被拦截无法安装
  • 如果安装 Mali_Offline_Compiler_v6.4.0.504d49_Windows_x64.exe 时提示被系统管理员拦截无法安装,参考图示进行设置即可。


1g9ju2q46cr8h772eobnghfnjv.png

  • 这个方法同样适用于 UE5


2a64fkm7u8qamjkhfc7dr57a70.png

4k3fqg368figksb1q4er0l17ud.png

下载

**声明:**本文来自公众号:GameDevLearning,转载请附上原文链接(https://mp.weixin.qq.com/s/OZgdLdzapM7X90fLJiCDBw)及本声明。

0 Answers