[Unity 优化]渲染优化

图片

图片

渲染优化主要是减少GPU的压力。

1、透明效果

Overdraw就是过度绘制,是指在一帧的时间内(16.67ms)像素被绘制了多次,理论上一个像素每次只绘制一次是最优的,但是由于重叠的布局导致一些像素会被多次绘制,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,当这个操作耗时超过16.67ms时,就会出现掉帧现象,也就是我们所说的卡顿,所以对重叠不可见元素的重复绘制会产生额外的开销,需要尽量减少Overdraw的发生。

当进行大量的半透明 Fragment 渲染的时候就会产生大量的 Overdraw。究其原因,就是当渲染不透明 Fragment 的时候,可以根据深度缓冲中的数据将不必要的 Fragment 剔除掉,即使深度检测通过了,也只需要直接写入颜色数据即可。而渲染半透明 Fragment 时,无法通过深度缓冲剔除,而且需要读取已有的颜色,使其与新的颜色进行混合。

2、光照

使用光照贴图避免实时光照。

3、MipMap

UI(没有距离变化的UI)关闭MipMap,人物模型存在移动的可以适当使用MipMap。

4、后期处理

比如像高斯模糊,径向模糊之类的这些后期渲染效果,就不要在手游上使用啦,因为帧率掉得太厉害,卡爆了。

5、Shader

①使用fixed。
②减少判断逻辑结构,if。
③计算量较大的尽量放在顶点函数而不是片元函数。
④shader一般打成一个AssetBundle,游戏一启动就加载。
⑤少用类似Fog/Alpha test/Alpha blending。
⑥使用顶点和片段着色器,而不使用表面着色器。

6、顶点数+三角面数

①减少面数。
②关闭不用的多余相机,减少渲染。
③LOD,可以简单了解SimpleLOD这个插件,当模型较远的时候,就能减少面数,与MipMap类似。

7、UI

UI一直是大头。
UI动静分离,避免频繁的重建Mesh。
HUD实现:计算屏幕中角色在屏幕中的位置,根据屏幕中的位置来计算各自HUD的位置,并根据HUD的数量分别放置在一个或几个Panel/Canvas下。

猜你喜欢

转载自blog.csdn.net/husheng0/article/details/78473181