优化
2017-02-23 13:29:56 0 举报
AI智能生成
优化
作者其他创作
大纲/内容
DrawCall
定义:Unity中,每次引擎使用CPU准备数据并通知GPU的过程称为一次DrawCall;
这一过程是逐个物体进行的
这个值可以在编辑器的Statistic窗口看到
Statistic
Batches:相当于DrawCall
SaveByBatching:通过Batch减少的DrawCall次数
SetPassCalls : 跟Shader中的Pass有关,数量成正比。
注意信息的刷新
影响因素
Pass 数量
材质
BatchRender
定义:就是在一次DrawCall中批量处理多个物体
使用方法:在可见性测试之后,检查所有要绘制物体的材质,把相同材质的分为一组(一个Batch),然后把它们组合成一个物体(统一变换)。
这样就可以在一个DrawCall中处理多个物体了(实际上就是组合后的一个物体)
使用技巧
尽量减少场景中使用的材质数量,
尽量共享材质,合并材质(对于纹理不同的材质可以把纹理组合到一张更大的纹理中,称为Texture Atlasing)
然后是把不会移动的物体标记为Static
可渲染网格和地形必须标记为Static才能被烘焙
优势:对于静态物体来说,一次组合后就可以一直使用,提高效率,大幅节省dc
缺陷:消耗内存和CPU,对于移动的物体,每一次都得重新进行组合
静态批
要求:必须使用同一张Material,然后在编辑器里设置为StaticBatching
特点:无法运动
缺点:消耗内存(不适用于茂密的森林)
动态批
不是静态批的物体,运行时Unity会自动的将它们批在一起,支持运动的物体,但限制较为严格
限制条件
模型总顶点数小于900
批在一起的所有模型使用相同的缩放值
使用相同的材质
相同的LightMap
LightMap就是用一组预先烘焙好的贴图来替代运行时的光影计算,模拟灯光带来的效果。
使用单pass的shader
不能接收阴影
缺陷:合并时需要通过CPU计算转为世界坐标,耗CPU(一般是小的运动模型才比较容易动态批在一起)
使用:只在CPU消耗比DrawCall消耗“便宜”时才值得(例:苹果平台上Drawcall的消耗便宜,就不该使用这项技术)
此处说的“便宜”,并不是指金钱,而是指使CPU或者DrawCall消耗小需要付出的努力程度。
GameObject
Mesh(网格)组件:解析物体
MeshRenderer组件:渲染即显示物体
Material(材质)
Texture(纹理)
Shader(着色器)
多个Pass
0 条评论
下一页