What

Alpha Test 特性
Alpha Test是是OpenGLES1.1特有的呈现管道阶段

简单来说就是以一个参考值去比对需要渲染的像素的值,如果效验出问题的话,就会直接放弃这个像素。Alpha Test是不需要关闭ZWrite的。

Why

参考内容:
再议移动平台的AlphaTest效率问题
OpenGLWiki_Early_Fragment_Test

因为移动端平台广泛的使用了Early-DT(Early-Z,Early Fragment Test),该技术可减少同像素重复计算量的Deferred Shading(延迟渲染)才成为了PC主机平台的游戏标配。而因为移动平台拥有early-DT,它的功能和Deferred Shading的功能是部分重叠的,所以移动平台才不建议使用Deferred Shading,因为获得的收益很可能会反倒不如Deferred技术新增的成本。

在early-DT下,AlphaTest虽然可以正常可以读取Depth,但是写Depth并不能进行,因为它只有读取了纹理才知道自己能不能写入深度。

  • 不透明物体,只要通过了AlphaTest,就一定需要执行写深度操作,early阶段就提前写深度是没问题的。
  • 透明物体,不管怎么样都不会执行写深度操作,所以也不会影响early阶段
  • 在全部移动平台上,AlphaTest会阻塞后方的AlphaBlend/Opaque,产生一定的性能降低。
  • AlphaTest要写入深度,所以会破坏TBDR的earlyZ机制

How

引用内容及图源:
再议移动平台的AlphaTest效率问题

  1. AlphaTest在early-DT阶段执行读操作,然后在最后再执行DT,进行写操作。(极其繁琐,不如删了)

    2.AlphaTest在early-DT直接跳过,默认Pass,然后在最后再执行一次完整的DT读+写。
    这样做和later-DT是完全一样的,并没有串行化问题。但是假如后面需要绘制Opque/Alpha Blend这些需要执行正常的early-DT的东西,还是要进行等待,但也只需要等待一次。

    缺陷:AlphaTest是纯粹的later-DT,无法通过相互遮挡进行过滤,Frag阶段都必须完整执行。

3.除此之外,还有一种可能是。先在early-DT执行读操作,通过后,再在最后重新执行一次完整的later-DT。

和上一个差别不大,就是在前面加了一次Depth的读操作。其实我们要求的顺序只是写的顺序,读的顺序不对,只会导致读出来的数据不准确。假如读出来的是Pass,最后还是可能因为DepthTest不通过而丢弃掉像素白白浪费了计算,但假如读出来的是No Pass,那就确确实实不需要再绘制了,可以直接中断掉。这样AlphaTest被前面的不透明物体遮挡的时候,也能和AlphaBlend一样获得减少OverDraw的效果(尽管这种情况概率很低),在这种情况下,AlphaTest就更不可能比AlphaBlend慢了

Alpha Test是什么,为什么移动端需要避免使用Alpha Test?相关推荐

  1. PS教程新手入门(二)--保存清晰透明的.Png格式图片的方法和技巧教程

    .Png格式是图像文件存储格式,在网页设计中已经不是一个陌生的名词,在前端开发中经常使用到它,本文是对.PNG格式的详细介绍,并且针对网页设计上.PNG格式的使用做了相关说明. Png有多少种格式?有 ...

  2. Alpha冲刺 - 事后诸葛亮

    Alpha冲刺 - 事后诸葛亮 Alpha完成情况表 Stardust(安卓端) 模块 预期计划 现实进展 完成度 登录/注册 登录时,从服务器拉取的数据并同步数据库.获取的数据有:用户名.密码.记录 ...

  3. 发布Apworks应用开发框架(Alpha版本)

    Tiny Library CQRS的介绍文章有好些日子没有更新了,因为最近一直在忙着发布Apworks应用开发框架.原本打算在2011年1月1日发布,以迎接新年的到来,后来确定了还是在2010年12月 ...

  4. (zt)OpenGL中的Alpha测试,深度测试,模板测试,裁减测试

    转自http://www.cppblog.com/flashboy/archive/2009/09/01/94974.html 大家好.现在因为参加工作的关系,又是长时间没有更新.趁着国庆的空闲,总算 ...

  5. 【论文阅读】Paraformer工业级非自回归端到端语音识别模型

    Paraformer: Fast and AccurateTransformer for Non-autoregressive End-to-End Speech Recognition 摘要 介绍 ...

  6. 移动端TB(D)R架构基础

    目录 1 各类电子设备功耗对比 2 名词解释 3 立即渲染 4 TBDR渲染流程 5 Binning过程(第一个Defer) 6 不同GPU的Early-Depth-Test(第二个Defer) 7 ...

  7. 淘宝商品详情接口(app、h5端)

    淘宝接口 前言 一.H5端请求 请求方法 返回结果 二.淘宝APP 1.引入库 2. 淘宝APP 返回结果 测试j接口 一.H5端请求 请求方法 def taobao_detail_getdetail ...

  8. 导师互选系统 Alpha版冲刺总结

    导师互选系统 Alpha版冲刺总结 一.设想和目标 我们的软件什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要是要实现导师和学生双向互选的功能.功能定义清晰明确,在软 ...

  9. [Alpha阶段]项目展示博客

    目录 Alpha阶段项目展示 1.团队成员介绍 2.工程相关信息 (1)我们的用户 (2)产品表现 (3)团队分工 (4)项目管理 (5)测试 (6)文档 (7)用户调研 3.项目信息 (1)实际进展 ...

最新文章

  1. 容器间通信_Vue组件间通信的6种方式,前端工程师人人都会,网友:太简单了...
  2. tomcat乱码怎么解决_PDF转word乱码怎么办?解决方法如此简单!
  3. 分享15款为开发人员准备的开发移动应用程序必备的新资源和工具
  4. Hadoop Yarn公平调度器的特点、缺额、DRF策略
  5. OC语言中的便利初始化函数和便利构造器
  6. 一直未运行_【直击一线】延一转三相分离器投运成功,盘活全区生产运行一盘棋...
  7. 云图说|文档数据库可视化运维 高频需求一键式便捷操作
  8. EndNote 文献管理软件安装包
  9. Google最新算法 - 人肉搜索引擎
  10. 如何识别pdf文档中的文字(图像识别)python
  11. 集合和数组区别_了解您的编码基础:集合和数组之间的主要区别
  12. BarTender制作圆形标签的方法
  13. 《matlab图像处理入门》总结
  14. MT【109】线面角最大时为二面角平面角
  15. cisco路由器交换机忘记密码后的恢复
  16. SeedLab1: Sniffing Spoofing Lab
  17. [MATLAB]S函数
  18. PO模式实现Appium脚本封装
  19. N! hdu 1042
  20. 新股、可转债、可交换债申购全攻略

热门文章

  1. 二维图形的几何变换矩阵推导与齐次方程的深入理解
  2. apiCloud小结
  3. Android多平台Push推送服务集成组件化实践
  4. [zz]《2012武汉IT求职指南》IT行业、程序员求职专用
  5. 9、如何安装 ubuntu 光盘镜像里面的安装包
  6. XDR: External Data Representation
  7. IDEA书签,备份使用,全分支共享
  8. 偏财入财库大富_进入10月底,4属相财星入命,财库大开,横财入库,生活大富大贵...
  9. 密码学--文件安全传输
  10. python 13位时间戳处理