移动端Alpha Test为啥费性能?

调查了下现在移动端的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.

发表评论

邮箱地址不会被公开。 必填项已用*标注