您的位置:首页 > 移动开发 > Unity3D

unity3D开发性能优化

2013-03-08 11:16 197 查看
1、顶点性能

      一般来说,如果您想在iPhone 3GS或更新的设备上每帧渲染不超过40,000可见点,那么对于一些配备
MBX GPU的旧设备(比如,原始的 iPhone,如 iPhone 3g和 iPod Touch第1和第2代)来说,你应该保证每帧的渲染顶点在10000以下。

2、光照性能

      像素的动态光照将对每个受影响的像素增加显著的计算开销,并可能导致物体会被渲染多次。为了避免这种情况的发生,您应该避免对于任何单个物体都使用多个像素光照,并尽可能地使用方向光。需要注意的是像素光源是一个渲染模式(Render Mode)设置为重要(Important)的光源。像素的动态光照将对顶点变换增加显著的开销。所以,应该尽量避免任何给定的物体被多个光源同时照亮的情况。对于静态物体,采用烘焙光照方法则是更为有效的方法。

3、角色

      每个角色尽量使用一个Skinned Mesh Renderer,这是因为当角色仅有一个
Skinned Mesh Renderer 时,
Unity 会 使用可见性裁剪和包围体更新的方法来优化角色的运动,而这种优化只有在角色仅含有一个
Skinned Mesh Renderer 时才会启动。角色的面数一般不要超过1500,骨骼数量少于30就好,角色Material数量一般1~2个为最佳。

4、静态物体

      对于静态物体定点数要求少于500,UV的取值范围不要超过(0,1)区间,这对于纹理的拼合优化很有帮助。不要在静态物体上附加Animation组件,虽然加了对结果没什么影响,但是会增加CPU开销。

 5、摄像机

      将远平面设置成合适的距离,远平面过大会将一些不必要的物体加入渲染,降低效率。另外我们可以根据不同的物体来设置摄像机的远裁剪平面。Unity 提供了可以根据不同的
layer 来设置不同的
view distance ,所以我们可以实现将物体进行分层,大物体层设置的可视距离大些,而小物体层可以设置地小些,另外,一些开销比较大的实体(如粒子系统)可以设置得更小些等等。

6、DrawCall

      尽可能地减少
Drawcall 的数量。
IOS 设备上建议不超过 100 。减少的方法主要有如下几种:
Frustum Culling , Occlusion Culling ,
Texture Packing 。
Frustum Culling 是 Unity 内建的,我们需要做的就是寻求一个合适的远裁剪平面;
Occlusion Culling ,遮挡剔除,
Unity 内嵌了 Umbra ,一个非常好
OC 库。但 Occlusion Culling 也并不是放之四海而皆准的,有时候进行
OC 反而比不进行还要慢,建议在
OC 之前先确定自己的场景是否适合利用 OC 来优化;
Texture Packing ,或者叫 Texture Atlasing ,是将同种
shader 的纹理进行拼合,根据
Unity 的 static batching 的特性来减少
draw call 。建议使用,但也有弊端,那就是一定要将场景中距离相近的实体纹理进行拼合,否则,拼合后很可能会增加每帧渲染所需的纹理大小,加大内存带宽的负担。这也就是为什么会出现“
DrawCall 降了,渲染速度也变慢了”的原因。

 

 

原文地址:http://blog.csdn.net/yesy10/article/details/7861236
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  untiy 性能优化