Unity性能优化GPU渲染优化
GPU优化不够容易出现
1.发热严重,耗电量高
2.FPS降低
GPU优化的方向:
1.像素的复杂度,比如实施阴影(手游中禁用),复杂的shader
2.顶点过多,也就是模型面数多、复杂
3.GPU的显存带宽
一、优化美术资源
1)合理规划图集
2)约定好模型的最大三角形面数
3)制定合理的粒子效果规范
4)减少模型数量,谷歌数量,使用法线贴图代替细节模型
使用平台推荐的压缩方式
1)安卓平台 ETC1
2)IOS平台PVRTC
简化或者优化Shader
1)少使用的函数:pow,sin,cos等
2)fixed、half、float慢慢斟酌着使用,切忌浪费,采取够用的类型就行
3)在游戏开始前就对Shader进行编译和加载。
二、减少绘制数目
1)保持材质的数目尽可能少。这使得Unity更容易进行批处理。
2)使用纹理图集(一张大贴图里包含了很多子贴图)来代替一系列单独的小贴图。它们可以更快地被加载,具有很少的状态转换,而且批处理更友好。
3)如果使用了纹理图集和共享材质,使用Renderer.sharedMaterial 来代替Renderer.material 。
4)使用光照纹理(lightmap)而非实时灯光。
5)使用LOD(细节级别渐变),好处就是对那些离得远,看不清的物体的细节可以忽略。也就是根据距离的远近使用不同模型级别,这样就可以减少模型上面的顶点和面片数量从而提高性能。
6)遮挡剔除(Occlusion culling)
三、优化显存带宽
1)压缩图片,减小显存带宽的压力。例如:可以通过减色的方式减少图片大小。许多UI其实用的色彩很少,用不到256色,这类图片就可以使用减色压缩。
2)使用MipMap(纹理贴图金字塔)贴图会根据摄像机距离模型的远近而调整不同的不同质量的贴图显示。
Mipmap中每一个层级的小图都是主图的一个特定比例的缩小细节的复制品。因为存了主图和它的那些缩小的复制品,所以内存占用会比之前大。但是为何又优化了显存带宽呢?因为可以根据实际情况,选择适合的小图来渲染。所以,虽然会消耗一些内存,但是为了图片渲染的质量(比压缩要好),这种方式也是推荐的。