ab压力测试_3DMax多维子材质创建及在Unity里的渲染测试

4df8c61d2607339a92cbffe094b8ded1.png

一、3DMax创建多维子材质

创建球体

c7dde70374b55a958d195f96ff2b1237.png

材质面板创建多维子材质

202b4cc5fc507f7a6272369d41eca4a9.png

创建第一个子材质

29ad58731cc18926152dc25bf332f479.png

af2a885e12d162d544b6b07e31a98378.png

同样的方法创建第二个子材质

af2a885e12d162d544b6b07e31a98378.png

变为可编辑多边形,F正视图,面层级,选择一半的面,材质ID设置为1.再用同样的办法把另外一面设置为2.

704a0d701489e3d039be17aa83f808ab.png

模型层级,在材质面板把多维子材质赋予给模型,就可以看到一个模型有了两种材质表现。

1723dd8d486fac52175f2f206610a3c3.png

导出选定对象。

二、导入Unity并制作相关测试环境

进行Camera设置,去除高级特性,Clear Flags设置为Solid Color

9a194c868bd8790c4be247e628a58091.png

去掉天空盒,平行光设置为No Shadows。创建两个材质,使用Unlit/Color这个shader,颜色设置一下。

31861df1b54e8195081fee79f6307e3a.png

三、渲染分析

Statistics面板方面:

可以看到Batches是2,说明在unity中对于多维子材质是按照两个模型去渲染的,相当于两个draw call。

a744f34ad874ff222d8d526950f78c07.png

Frame Debug方面:

从两张图可以进一步证实我们的想法,可以注意到中间的Preview处,每次渲染时提交的mesh是一个半球。顺便一提,在第二张图中有提示为何两个渲染批次,因为这两个模型使用的材质是不同的。

17ffb92171901c8e9e3ce9988631e37b.png

8d283406e87913beede3e84469ca60b8.png

四、在工程上的应用

从程序角度上来讲肯定是希望任何一个模型都不使用多维子材质,且最好是一个整个的模型,例如一个茶壶,最好是整个茶壶是一个模型,UV都展在一张图上,shader使用统一的shader,材质球只使用一个。这样能有效减少draw call,提高性能。

而从美术角度上来讲,复用性也十分必要,例如有AB两个人,现在想拼出来第三个人,如果使用多维子材质或者干脆人体本身就是由多个模型组成的,那么在3dmax中,很容易就可以把A的上身抽出来,把B的下身抽出来,然后一组合,就出了第三个人C。而且这样的方式能让每一个小部分使用单独的贴图,能有效降低内存压力。还是以上面的例子举例,ABC三个人实际上使用的贴图数量跟只有AB两个人时是一样的,而如果ABC每个人都是单独的一套材质球,那需要的贴图数就会提高,内存压力就会增加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值