madein163 发表于 2023-7-6 19:29

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

问题


[*]在 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 为空)。
解决


[*]按照 MaliOfflineCompilerPath 的注释提示,前往方针网址(https://developer.arm.com/products/software-development-tools/graphics-development-tools/mali-offline-compiler/downloads )下载离线编译器 。



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

下载


[*]Mali_Offline_Compiler 下载
声明:本文来自公众号:Unity 与Unreal 游戏开发(GameDevLearning),转载请附上原文链接及本声明。
页: [1]
查看完整版本: Unreal编译GLES提示:Platform Android GLES X needs an offline shader compiler to extract instruction count