《unity游戏优化》第六章读书笔记

第六章动态图形

渲染性能的增强

1启用禁用GPU SKinning

 

骨骼位置变化网格顶点的过程,该顶点处理任务可以在GPU上执行,也可以CPU,这个取决于上面的参数

2.降低几何复杂度

减少网格的顶点年属性,网格包含大量不必要的uv和法线数据

  3种解决办法
  • 美术手动调整,生存多边形书更少的网格,网格抽取工具简化网格
  • 简单从场景中移除网格,这是最后的手段
  • 实现网格的自动剔除特效,如LOD等技术

3.减少曲面细分 改进曲面细分算法活减轻其他前端任务的负载

4.应用GPU实例化 一般是创建大量item时使用

 

具体可以看官网文章:GPU 实例化 - Unity 手册

5.LOD 会占用一定内存,配合美术和关卡配置一起跳转,要避免预先优化,一般游戏是在RTS和moba中,剔除租

6.使用遮挡剔除

staicFlag下拉列表正确标记为Occluder static

7.优化粒子系统

使用粒子删除系统

避免粒子系统的递归调用

粒子系统api还有start,stop,pause ,clear等api这些方法都有一个默认的true的withChildren从参数,禁用调用递归等

缓存粒子系统组件,并手手动迭代他们

8.优化unityUI

  • 使用更多的画布
  • 动静分离
  • 为无交互的元素禁用Raycast Target
  • 禁用父画布组件来隐藏ui元素
  • 避免Animator组件
  • 为worldspace画布显示定义EventCamera
  • 不要使用alpha隐藏ui元素
  • 优化ScrollRect 确保使用RectMask2D,禁用pixel perfect ,手动停用ScrollRect活动
  • 使用空的uiText元素进行全屏交互,创建一个没有定义字体或文本的UIText元素,不需要生成任何渲染信息的元素,只处理边界框的交互检查

6.3.9 着色器优化

1.考虑使用户移动平台的着色器

  1. 使用小的数据类型 32位浮点调整为16位浮点

3.重排时避免修改精度 精度类型转换是非常耗时 ,一开始统一精度,或者使用高精度

4.使用GPU优化的辅助函数 意思是不要自己写一些算法库,能用框架里的用框架里

5.禁用不需要的特性,比如找色器徐亚哦透明度,z写入,aplha测试活着混合嘛

6.删除不必要的输入数据 一些着色器多余数据

7.只公开所需的变量

8.减少数学计算的复杂度 比如sin和cos提前算好,利用平方代替开方等

9.减少纹理采样

纹理采样是内存宽带的核心开销

10.避免条件语句

11.减少数据依赖 避免强依赖

float sum = input.color1.r;
sum = sum + input.color2.g;
sum = sum + input.color3.b;
sum = sum + input.color4.a;
float result = calculateSomething(sum);

代码对比
float sum1, sum2, sum3, sum4;
sum1 = input.color1.r;
sum2 = input.color2.g;
sum3 = input.color3.b;
sum4 = input.color4.a;
float sum = sum1 + sum2 + sum3 + sum4;
float result = CalculateSomething(sum);

6.3.12 最小化纹理交换

6.3.13 VRAM限制

用隐藏的Gameobject预加载纹理

避免纹理抖动

6.3.14 照明优化

1.1谨慎使用实时阴影

1.2使用剔除遮罩 CullingMask

1.3使用烘焙的光照纹理 LightMapping

6.3.15优化移动设备的渲染性能

  1. 避免alpha测试,消耗资源,利用alpha混叠来避免
  2. 最小化drawcall
  3. 最小化材质数量
  4. 最小化纹理大小 1024*1024
  5. 确保纹理是方形且大小为2的幂次方
  6. 着色器尽可能使用最低的精度格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值