美文网首页Unity3D 游戏开发技术
移动端Alpha Test为啥费性能?

移动端Alpha Test为啥费性能?

作者: SwordMaster | 来源:发表于2018-03-01 18:31 被阅读133次

    调查了下现在移动端的GPU厂商,主要有Imagenation technology公司的Power VR 系列

    高通的骁龙系列,Mali的MP系列。


    各品牌手机使用的GPU

    苹果手机->Power VR

    魅族->Power VR

    三星手机->骁龙

    小米手机->骁龙

    华为手机->Mali

    每家芯片的特性不同,根据向framebuffer写法的不同,分为tile-based的mobile cpu,如PowerVR,Mali,一部分老版本Adreno。对tile-based的GPU来说,一旦使用打开alpha test或者其他discard功能的指令,就意味着这个fragment shader上不再只绘制一次像素了。这样会增加额外的性能消耗,所以一般都是建议用不实用alpha test,或者用alpha blend来代替。


    PowerVR文档对Alpha Test的建议:

    传送门:http://cdn.imgtec.com/sdk-documentation/PowerVR+Performance+Recommendations.The+Golden+Rules.pdf

    个人理解:

    由于Power VR使用了基于瓦片的延时渲染技术。

    普通物体由于Early-Z技术的存在,使得被遮挡的物体片元的着色器不会被执行,马上更新深度缓冲的值

    使用了Alpha Test的物体破坏了Early-Z技术,硬件检测后禁掉Early-Z技术,使得即使被遮挡的片元的片元着色器执行完才更新深度缓冲的值。(片元着色器被多执行了)

    使用Alpha Test会导致性能降低,所以尽量使用Alpha Blend代替Alpha Test.

    相关文章

      网友评论

        本文标题:移动端Alpha Test为啥费性能?

        本文链接:https://www.haomeiwen.com/subject/lddnxftx.html