CG游麟网官方站
查看: 3137|回复: 20

[Unity3D教程] unity3D教程:DrawCall优化

[复制链接]

13

主题

22

帖子

148

积分

锋芒初露

Rank: 2

麒麟币
126
任务币
0
威望
0
贡献
0
主题
13
在线时间
7 小时
发表于 2015-9-21 18:11:52 | 显示全部楼层 |阅读模式
一 Mesh Renderer
二 Skinned Mesh Renderer
三 合并要求对比
四 总结
五 场景制作建议
DrawCall优化合并,即DrawCall Batching. 通过减少Draw call数 和对显卡性能的消耗来提高性能。
一 Mesh Renderer
分为Dynamic Batching和 Static Batching
Dynamic Batching
不需要任何操作,只要共享材质(即使是不同的Mesh模型也可以),就会自动被合并。可以自由移动旋转。但有以下使用要求:
(1) 模型文件共计点数不超过900。(重复使用同一个Mesh不计)
(2) 单个物体可以不超过300点,Shader可以有法线UV。
但如果Shader使用了 UV0 UV1两套UV,或者Tangent切线的话,单个物体只能不超过180点
(3)游戏对象使用相同模型和材质时,只有相同缩放(即xyz等比缩放,浮点尾数可以有细微差)的会被合并。

(1,1,1)与(1,1,1)
(2,2,2)与(2,2,2)
(0.5,0.5,0.5)与 (0.5,0.5,0.5)
(2,2,2)与(2,2,2.0001)
(4)场景烘焙:烘焙后同材质将不会被烘焙。lightmap 有隐藏的材质参数:offset/scale, 所以使用lightmap的物体不会被合并
(5)Shader不能使用多Pass:多Pass的Shader会破坏Dynamic Batching
Static Batching
原理:
运行游戏后将一组游戏对象的多个模型会被动态合并为1个。这组游戏对象所有使用同一材质的在一个DrawCall来完成。这些游戏对象运行后无法移动缩放旋转。但是Drawcall一定是最大化合并的,并且不受动态合并的诸多限制(见下文详述)。
注意:即使物体都使用了同样的模型,在batch后每一个物体都会创建一份模型对应的geometry,在新的Combined Mesh里。所以过多的batch会增加内存占用。例如场景里的树群就不适合Static Batch,而适合动态合并。
实现方法:
(1)MeshRenderer勾选Batching Static: 勾了即可
(2)代码中使用UnityEngine.StaticBatchingUtility实现(可以在任何平台调用):
1)将所有要合并的静态物体(不须勾Batching Static)放入统一一个root
2)StaticBatchingUtility.Combine(root);
之后就合并好了!
区别:
勾选Batching Static:
完全自动合并,在MeshFilter里显示的是 Combined Mesh(root:scene)。合并后不能移动
StaticBatchingUtility:
合并到一个游戏对象下。合并后可以移动父节点游戏对象
二 Skinned Mesh Renderer
没有任何batching, 故不是人物的话尽量少用。
注意:
(1)修改Renderer.material将会创建一份新的material,应使用Renderer.sharedMaterial来保持材质公用。
(2)可以使用Mesh.Optimize() 优化模型。导入模型不需要调用此接口,在导入模型至Unity3d时已自动处理。
代码创建的模型有可能需要调用此接口来优化。
三 合并要求对比
要求 动态静态
1 只能是MeshRenderer不能是SkinnedMeshRenderer要求要求
2 Shader必须是单Pass要求不要求
3 不能被场景烘焙(不能标注为Light map static)要求不要求
4 网格模型文件总点数要求要求不要求
5 网格模型单个文件点数要求要求不要求
6 限制缩放要求不要求
7 限制位移旋转不要求要求
源自:http://www.youxi.com/game/code/1501.html


楼主热帖
回复

使用道具 举报

0

主题

635

帖子

650

积分

声名鹊起

Rank: 4

麒麟币
8
任务币
35
威望
0
贡献
0
主题
0
在线时间
33 小时
发表于 2015-9-21 18:24:41 | 显示全部楼层
额额我的沙发
回复 支持 反对

使用道具 举报

0

主题

293

帖子

386

积分

小有名气

Rank: 3Rank: 3

麒麟币
89
任务币
50
威望
0
贡献
1
主题
0
在线时间
100 小时

最佳新人忠实会员

发表于 2015-9-21 21:37:05 | 显示全部楼层
真的非常棒!真的非常棒!
回复 支持 反对

使用道具 举报

2

主题

6279

帖子

6918

积分

四方传颂

Rank: 9Rank: 9Rank: 9

麒麟币
549
任务币
50
威望
0
贡献
22
主题
2
在线时间
304 小时

忠实会员最佳新人

发表于 2015-9-21 22:43:29 | 显示全部楼层
真的很漂亮~我喜欢!
回复 支持 反对

使用道具 举报

16

主题

774

帖子

2942

积分

名动江湖

Rank: 6Rank: 6

麒麟币
2167
任务币
70
威望
0
贡献
0
主题
16
在线时间
280 小时

最佳新人

发表于 2015-9-22 02:35:57 | 显示全部楼层



默默的支持
回复 支持 反对

使用道具 举报

17

主题

717

帖子

2469

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1734
任务币
50
威望
0
贡献
0
主题
17
在线时间
66 小时

最佳新人忠实会员

发表于 2015-9-22 09:06:06 | 显示全部楼层
我一直默默的支持楼主
回复 支持 反对

使用道具 举报

4

主题

1177

帖子

5785

积分

誉满一方

Rank: 8Rank: 8

麒麟币
4604
任务币
50
威望
2
贡献
459
主题
4
在线时间
424 小时
发表于 2015-9-22 09:32:19 | 显示全部楼层
真的非常棒!真的非常棒!
回复 支持 反对

使用道具 举报

0

主题

393

帖子

1967

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1551
任务币
0
威望
0
贡献
0
主题
0
在线时间
32 小时
发表于 2015-9-22 10:01:06 | 显示全部楼层
我一直默默的支持楼主
回复 支持 反对

使用道具 举报

5

主题

178

帖子

1494

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1311
任务币
0
威望
0
贡献
6
主题
5
在线时间
25 小时

最佳新人

QQ
发表于 2015-9-22 11:13:35 | 显示全部楼层
非常不错,感谢分享!
非常不错,感谢分享!
非常不错,感谢分享!
非常不错,感谢分享!
非常不错,感谢分享!
非常不错,感谢分享!
非常不错,感谢分享!
非常不错,感谢分享!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
客服QQ:
47413829
新QQ群:
418757022
在线时间:周一至周五
9:00-22:00 Email:
47413829@qq.com
举报:网盘资源失效
在线客服
快速回复 返回顶部 返回列表