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

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

第六章动态图形

渲染性能的增强

1启用禁用GPU SKinning

1.png

编辑



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

2.降低几何复杂度

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

3种解决办法

  • 美术手动调整,生存多边形书更少的网格,网格抽取工具简化网格

  • 简单从场景中移除网格,这是最后的手段

  • 实现网格的自动剔除特效,如LOD等技术

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

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

2.png编辑



具体可以看官网文章: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.考虑使用户移动平台的着色器

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


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
缓存 图形学
《unity游戏优化》第一章读书笔记
《unity游戏优化》第一章读书笔记
|
12月前
|
存储 安全 编译器
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
|
12月前
|
存储 关系型数据库 编译器
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
102 1
|
12月前
|
存储 算法 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
62 1
|
12月前
|
存储 算法 Java
[笔记]读书笔记 C++设计新思维《二》技术(Techniques)(二)
[笔记]读书笔记 C++设计新思维《二》技术(Techniques)(二)
下一篇
无影云桌面