unity

Unity——GPU性能优化

2021-05-18  本文已影响0人  Sonnet_Studio

从三个方面入手:

1:Fill Rate

2:GPU Memory Bandwidth

3:Vertex Processing

可以使用Unity Profiler查看数据进行性能分析

①打开Profiler界面,然后通过Window

> Analysis > Profile Analyzer 打开 ProfileAnalyzer的界面。

一:Fill Rate

1.减少 shader中的 Fragment Shader 的复杂度,因为Fragment shader 负责告诉GPU要怎么往屏幕上画像素。

2.使用更优化的Shader,比如 MobileShader

(Mobile Shader也可以用在除移动平台之外的地方)

3.如果使用的是Standard Shader,可以减少使用贴图的数量,这样Unity在编译时会自动优化。

4.需要分析所使用的Image Effect 对整体 Fill Rate 的影响,如果实在影响很大,那就要禁用某些Image Effect。

二:GPU Memory Bandwidth

1.Texture Compression

参考官方链接:https://docs.unity3d.com/Manual/class-TextureImporterOverride.html

2.Mipmap和 Mipmap Streaming

Mipmap可以提升GPU的渲染性能,不会让视觉效果打折,减少可能产生的图像缺失;

注意:如果资源在 Z 方向未发生变化,就没必要使用Mipmap。Mipmap会增加内存占用。

不使用的地方 例如:

UI贴图

天空盒

图标

Cookies

不适用的贴图类型:

Decal贴图

probe 贴图

Unity Terrain 系统中的贴图

如果是通过像Graphics.DrawMeshNow这样的API直接加载的贴图,需要使用Texture Streaming API 手动设置Mip level

三:Vertex Processing

1.尽量减少网格上的顶点数量(简化模型)

2.使用 Normal Map 表现模型细节

3.如果模型上没有使用Normal Map,可以在 Model Import Setting 界面禁用此模型的Vertex Tangents 选项。

4.使用 LOD

5.降低自定义Shader中 Vertex shader 的复杂度(Vertex shader 是 shader中告诉GPU如何画出每个顶点的代码块)

6.如果使用的是标准着色器,那么尽量使用简单的着色器,比如Mobile Shader。

主要介绍一下LOD:

什么是LOD(Level of Detail)

1.按照摄像机离开物体的距离显示不同精度的模型。摄像机离开物体越远,所用于显示的模型精度越差。

2.在建模软件中制作同一模型的不同精度的版本,按照以下命名规则来命名:

比如说模型名称为Dropship,在每个模型后面加上_LOD+数字,比如_LOD0或者_LOD00。_LOD0为精度最高的版本,精度越低,最后的数字越大。

3.从建模软件把这些模型一并导入Unity,Unity会使用LODGroup组件制作支持LOD的预制件Prefab。

记录下目前学到的GPU相关的性能优化,后续再补...

上一篇 下一篇

猜你喜欢

热点阅读