时间: 2020-10
首发知乎:https://zhuanlan.zhihu.com/p/264836914
声明:此文为个人学习笔记,首发知乎。自己温习,也同他人分享沟通。如果文章中有侵权,错误,或者有不同的理解,烦请大家多多指正,指教。此致崇高敬意!
认知:优先分析;提前规划;长期处理;认真执行;高自动化。
文章大纲
思路导图;项目分析、性能报告、性能方案和分级、性能工具。
思路导图
项目分析
有明确的参考产品,产品对象,渲染管线,分析哪些能用、哪些不能用,优先记录
性能报告
前期规划,中后期间歇性出文档报告。利用报告,定制性能方案。
性能方案和分级
误区:绝大多数人员认为,我们做的性能分级就要让玩家调节性能分级时,要明显感受到性能分级,效果变化明显,其实这是种偏执的理解。应尽可能的降低消耗的同时,去做效果上的一致(统一),例如:做了三级(高中低配),如果从高到中到低,每级美术效果变化太大,可以理解成中效果和低效果没有做到尽善尽美,没有把函数拟合(效果拟合)做到位。应提高玩家体验,在切换效果配置时,效果应没有特别大的变化,让效果分级有一个平滑的过渡。
优先出最好的效果(艺术效果),再砍效果和提性能,做分级,再拟合做效果统一。同时还要兼顾人员配合,和资源制作时工作流中的时间成本。从项目思路来说,应该是先出渲染方案,同时出性能方案。(《性能优化》笔记提前写于了渲染方案前了,本人写文章条理失策......后面会把项目渲染设计规划学习笔记补上)
性能工具
效率优先,缩短测试时间,去定位性能瓶颈。生成包体ADB真机测试时,做好UI按纽开关,更方便测试。
A、优先电脑安卓平台上UnityProfiler调试。也尽可能自动化测试。
B、ADB真机连UnityProfiler调试(高效率,中质量;推荐方法)
C、RenderDoc真机抓帧调试(低效率,高质量)
D、GPA模拟器抓帧调试(高效率,低质量)
E、上线前使用第三方自动化测试,测试时长48小时。以防项目包体外泄,最后一步才用。
性能细节
下面每一小方面都可规划成单独白皮书
脚本:尽可能用低级算法;尽可能减少逻辑;尽可能不放在updata函数里面
Shader:尽可能用低级算法(加减乘除)去模拟高级算法效果(函数拟合);keywords .cginc去控制变体和LOD分级;高度利用 FallBack UsePass;不要过多的逻辑判断;尽可能少提供外部Properties可调节参数。
角色:裁剪>个数>阴影>透明>不透明>贴图数>模型面数(性能收益大的写在前面)
动作:有骨骼>无骨骼>骨骼数>压缩
场景:裁剪>透明>不透明>贴图数>模型面数
特效:裁剪>粒子最大发射量>overdraw>透明区域大小(自动化测试单个播放,生成数据报表,查看该资源的运行效率(特效如果前期没有做规划,有可能在后期时全砍,浪费时间浪费金钱))
UI:2次幂>大小>纹素级利用率
模型:压缩>UV通道>顶点色>A通道;(AB包)
贴图:外部格式,引擎内属性和格式,大小(AB包),张数,A通道,压缩,纹素级利用率