Unity最全渲染优化(LOD、遮挡剔除、光照贴图、Mash合并)

LOD技术
1、创建空物体,添加组件Lod Group
在这里插入图片描述
2、把不同细节的模型分别拖入到相对应的LOD0、LOD1、LOD2中去
3、调节每个区间的大小,测试

遮挡剔除
概念:只渲染那些在视野内的游戏物体
步骤:
①选中需要遮挡剔除的所有游戏物体,属性面板右上角小箭头下拉,选择Occluder Static
在这里插入图片描述
②菜单栏中Window->Occlusion Culling
在这里插入图片描述
③Occluder Static打勾,Bake
在这里插入图片描述
在这里插入图片描述
④选择Camera,测试

在这里插入图片描述
光照贴图
原因:光源的渲染要计算光的信息,会消耗性能。
步骤:
①打好场景光
②全选需要光照贴图的模型,属性面板右上角下拉单选择Lightmap Static

在这里插入图片描述
③菜单栏中Windows->Lighting->Build

在这里插入图片描述
④全选灯光,Baking属性修改为Baked,然后把灯光隐藏,模型上任然看起来有灯光
在这里插入图片描述
Mash合并
是指把多个模型合并成一个模型,可以在3DMax和玛雅和Unity中完成
Mash Render组件负责渲染
Mash Filter组件负责存放合并后的mesh
为什么要合并:如果有1000个小mesh,和1个大mesh,它们的大小一样,对于GPU来说渲染的大小没有变,但是对于CPU来说准备工作做1000次要比1次更耗性能

在这里插入图片描述
合并代码
void Start ()
{
Combiner();
}
void Combiner()
{
MeshFilter[] filters = GetComponentsInChildren();
CombineInstance[] instances = new CombineInstance[filters.Length];//Unity提供的类专门用来处理合并
for (int i = 0; i < filters.Length; i++)
{
instances[i].mesh = filters[i].sharedMesh;
instances[i].transform = filters[i].transform.localToWorldMatrix;//矩阵,用来转换坐标
}
Mesh finalMesh = new Mesh();
finalMesh.CombineMeshes(instances);
GetComponent().sharedMesh = finalMesh;
}
此代码只能在运行的时候合并Mesh,因为只有运行的时候才执行代码,停止运行之后还是恢复到合并之前,如果想真正的合并,可以把代码放在Editor中,通过菜单栏中的选项对游戏对象进行合并,这样就可以真正的合并Mesh了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小姑娘不爱写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值