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

简介: 《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.考虑使用户移动平台的着色器


使用小的数据类型 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. 着色器尽可能使用最低的精度格式


相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
2月前
|
大数据 API 图形学
Unity优化——批处理的优势
Unity优化——批处理的优势
|
2月前
|
存储 人工智能 Java
Unity优化——脚本优化策略4
Unity优化——脚本优化策略4
|
3月前
|
安全 Java 图形学
Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)
Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)
30 0
|
4月前
|
存储 自然语言处理 监控
【Unity 实用工具篇】| 游戏多语言解决方案,官方插件Localization 实现本地化及多种语言切换
Unity的多语言本地化是一个很实用的功能,它可以帮助游戏支持多种语言,让不同语言的玩家都能够更好地体验游戏。 而实现本地化的方案也有很多种,各个方案之间也各有优劣,后面也会对多个方案进行介绍学习。 本文就来介绍一个专门作用于多语言本地化的Unity官方插件:Localization 。 这个插件方便进行游戏的多语言本地化,让游戏支持多种语言,下面就来看看该插件的使用方法吧!
|
2月前
|
人工智能 安全 API
Unity优化——加速物理引擎1
Unity优化——加速物理引擎1
|
2月前
|
存储 人工智能 缓存
Unity优化——脚本优化策略3
Unity优化——脚本优化策略3
|
2月前
|
存储 缓存 Java
Unity优化——脚本优化策略2
Unity优化——脚本优化策略2
|
2月前
|
存储 XML 缓存
Unity优化——脚本优化策略1
Unity优化——脚本优化策略1
|
3月前
|
定位技术 C# 图形学
Unity和C#游戏编程入门:创建迷宫小球游戏示例
Unity和C#游戏编程入门:创建迷宫小球游戏示例
72 2
|
4月前
|
运维 API C#
【Unity游戏破解】外挂原理分析
【Unity游戏破解】外挂原理分析
156 0
【Unity游戏破解】外挂原理分析