帮你把关Shader变体问题!UWA本地资源检测又更新!

帮你把关Shader变体问题!UWA本地资源检测又更新!

UWA本地资源检测最近动作频频,应广大用户要求,我们在最新的1.2.0版本中增加了Shader Analyzer功能模块,同时还新增了若干条资源相关规则,下文我们就来详细说明。

一、新增Shader Analyzer 功能模块

Shader Analyzer模块的主要功能有两点:

1.项目Shader脚本扫描分析(支持任意版本的Unity)
扫描项目中的Shader脚本,分别统计shader_feature和multi_compiler类的局部和全局关键字个数,根据项目中Material上开启的关键字情况计算可能生成的变体数。
该功能对应的规则有2条:

  • 项目中可能生成变体数过多的Shader
  • 项目中全局关键字过多的Shader

2.模拟Build变体分析(支持Unity 2018.2及以上的版本)
自动按照用户的配置进行模拟build,统计build出来的Shader名称、变体数和关键字个数。该功能对应的规则为:

  • Build后:生成变体数过多的Shader

需要说明的是,自动Build功能会默认按照用户当前的配置自动进行,并且Shader Analyzer的Build操作是单纯用于统计Shader变体信息的“模拟Build”,为了加快统计效率,省去了Shader脚本编译的过程,Build结果不可实际使用。

若研发团队想自定义Build设置,也可在本地资源检测插件包中的脚本UwaProjScanLauncher.cs中修改以下函数。Shader Analyzer会按照该函数设置的方案进行模拟Build。

此外,本地资源检测的旧规则“纹理采样数过多的Shader”被纳入Shader Analyzer模块。

二、新增三条检测规则

名称及描述如下:
1、使用了Standard Shader的材质球
Standard Shader可能生成非常多的变体,虽然Shader脚本本身占用的内存小,但其加载耗时会非常高,ShaderLab内存占用也比较高,不建议大家直接在项目中使用。

2、开启各向异性过滤的纹理
对纹理进行各向异性过滤对于地面等物体的显示会有增益,但同时会带来较高的性能开销,建议排查。

3、开启Prewarm的粒子系统
粒子系统的Prewarm操作会在使用时的第一帧中造成相对集中的CPU耗时,很可能会造成运行时局部卡顿,建议考虑是否确实需要开启该选项,如果可以不用则将其关闭。

建议大家及时更新到最新版本(1.2.0),体验新功能喔!对于这些检测的知识点补充,我们将在日后的微信文章中详述,欢迎大家关注。已发布的检测规则知识点,我们也将持续更新。

《动画优化:关于AnimationClip的三两事》
《材质优化:如何正确处理纹理和材质的关系》
《纹理优化:让你的纹理也“瘦”下来》
《纹理优化:不仅仅是一张图片那么简单》

万行代码屹立不倒,全靠基础掌握得好!

性能黑榜相关阅读

《那些年给性能埋过的坑,你跳了吗?》
《那些年给性能埋过的坑,你跳了吗?(第二弹)》
《掌握了这些规则,你已经战胜了80%的对手!》