mobile cpu上禁用alpha test的相关总结

因为,每家芯片的特性不同,根据向framebuffer写法的不同,分为tile-based的mobile cpu,如ImgTec PowerVR,ARM Mali,一部分老版本Qualcomm Adreno。还有标准的direct(immediate)的mobile cpu,如Nvida,Intel,Viante,以及一部分Qualcomm芯片(Qualcomm的Adreno.3xx系列后是可以在这两者之间进行切换的)。对tile-based的GPU来说,一旦使用打开alpha test或者其他discard功能的指令,就意味着这个fragment shader上不再只绘制一次像素了。这样会增加额外的性能消耗,所以一般都是建议用不实用alpha test,或者用alpha blend来代替。
 
  tile-based gpu又分为Tiled Deferred(PowerVR)和Tiled(Adreno,Mali),两者都是在tile里进行渲染,而区别是TBR有自己的预处理,可以只着色可见像素。

图 1 三种管线。
  TBDR,以苹果设备用的ImgTec的PowerVR系列来说,在渲染处理时,会在fragment shading 阶段提供,在每个tile使用Deferred的方法,进行Hidden Surface Removal(HSR)的处理,原理是fs阶段前,对多边形进行预处理,决定它的哪个像素会对最终结果产生贡献,后面就只对这些像素进行着色。这个功能需要对不透明几何体进行排序。也就是说,要进行这种优化,必须要确保一定有能遮挡的像素,然而使用带有discard的shader指令,例如alpha-test,sample mask,alpha-to-coverage等等,会使得一些本来被遮挡的像素对最终结果产生贡献,所以,这个特性可能只能对一部分物体产生作用,从而产生额外的状态切换消费。以及该fragment额外隐藏像素的处理。
  
图2 ImgeTec的渲染处理
除此之外,ImgeTec还有另一个depth-only pass功能,生成深度缓冲,再次进行渲染时,就可以获取每个像素的可见深度,只有可见像素才会进行处理。所以,对于苹果设备来说,在CPU阶段对不透明物体的那种从前向后预处理排序是没有必要的。而是应该根据渲染状态来排序。

图3 ImgTec的渲染提示
  TBR也上有提供类似的HSR方法,也就是early z-cull,使用粗糙,低精度和分辨率的Zbuffer进行depth-test,测试失败的fragment则不传说给rasterization。如果打开alpha test,后果跟TBDR也是类似的。
图4 TBDR的Deferred vs TBR的 Early z
图5 Qualcomm的TBR
而IMR上,还是按照传统方法,尽可能的在CPU上进行Cull,以及从前向后进行距离排序,也提高erlay-z的效率。

不透明物体,early-z的overdraw测试,只有PowerVR不需要进行预先排序处理。红色是从前向后绘制,蓝色是从后向前绘制

如图,当绘制透明和半透明混合物体时,必须使用discard命令的话,对性能的消耗还是很大的
不同芯片上的的推荐绘制顺序
OpenGL Insights Performance Tuning for Tile-Based Architectures
http://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-TileBasedArchitectures.pdf
Next-Generation AAA Mobile Rendering
https://de45xmedrsdbp.cloudfront.net/Resources/files/GDC2014_Next_Generation_Mobile_Rendering-2033767592.pdf
FastMobileShaders
http://aras-p.info/texts/files/FastMobileShaders_siggraph2011.pdf
High-End Graphics for Smartphones and Tablets: A Development Case Study" CEDEC 2013
http://research.tri-ace.com/Data/AndroidABC2014_Final.pptx

转载于:https://www.cnblogs.com/TracePlus/p/4037165.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

达梦定时迁移数据

1. 生成迁移源代码 1.1 启动DM迁移工具(bin/dts.exe) 1.2 右击迁移管理空白处 -> 新建工程 1.3 展开工程 -> 右击迁移,新建迁移 -> 输入迁移名称,确认 1.4 右击迁移名称,打开 -> 输入源数据库连接信息&…

JSP教程–最终指南

编者注: JavaServer Pages(JSP)技术使您可以轻松创建同时包含静态和动态组件的Web内容。 JSP技术提供了Java Servlet技术的所有动态功能,但提供了一种更自然的方法来创建静态内容。 JSP技术的主要功能包括用于开发JSP页面的语言&…

tongweb6数据源使用中时常报空异常处理方式

1.在tongweb控制台 -> jdbc配置中设置数据源参数 1.1 勾选空闲超时,时间默认 1.2 勾选泄露超时时间 ,时间为半天(14400) 1.3 勾选连接有效性检查、创建连接验证、获取连接验证、归还连接验证 图中设置泄露超时时间为900…

eclipse远程tomcat javaweb debug样例(windows)

1.tomcat配置可被远程debug端口参数 catalina.bat 中添加 set CATALINA_OPTS-Xdebug -agentlib:jdwptransportdt_socket,servery,suspendn,address8000 导出项目war包到tomcat/webapps/目录下 切换到tomcat/bin目录下 双击startup.bat启动运行项目 2.eclipse中启动远程debug…

ASP.NET MVC的ContentResult

ASP.NET MVC的ContentResult返回简单的纯文本内容,可通过ContentType属性指定应答文档类型,通过ContentEncoding属性指定应答文档的字符编码。一个例子来演习,自定义一个RwResult,它继承ContentResult,为视图象ASP.NET…

windows搜索指定目录下包含某个字符串的文件

1.打开cmd窗口 :winr 快捷键-> 输入cmd 回车 2.切换到被搜索的文件夹(E:\shgwy文档\日常\更新\20220808)下 如输入: cd E:\shgwy文档\日常\更新\20220808 e: 3.输入搜索命令 c:\Windows\System32\findstr.exe /s /i "wa…

IIS7日志文件位置

准备统计下页面访问量 查找IIS日志,发现在以前IIS6日志的位置,竟然木有找到日志... 查看下IIS设置,发现IIS7和6的默认日志位置不一样额... IIS 6 Log files location IIS 6中日志文件的位置 %windir%\System32\LogFiles IIS 7 Log files location IIS的日…

jwt重放攻击_4个点搞懂JWT、JWS、JWE

1.JWT是何物,有哪些常用的场景JWT(json web token)是设计一种简洁,安全,无状态的token的实现规范rfc7519,通常用于网络请求方和网络接收方之间的网络请求认证。jwt的常用场景1.1: restful api接口的无状态认证, 在传统的web应用中…

Verification Mind Games---how to think like a verifier像验证工程师一样思考

1. 有效的验证需要验证工程师使用不同于设计者的思维方式思考问题。具体来说,验证更加关心在严格遵循协议的基础上发现设计里面的bug,搜索corner cases,对设计的不一致要保持零容忍的态度。mindset:一套人们应该持有的确定的态度&…

discuz安装_手动搭建 Discuz! 论坛

一、搭建LAMP环境安装软件(Apache、MariaDB、PHP)yum install httpd php php-fpm php-mysql mariadb mariadb-server -y2.启动服务systemctl start httpdsystemctl start mariadbsystemctl start php-fpm3.安装后首次启动mariadb设置mysql_secure_installation4.登录 MariaDB&a…

蓝桥杯 1223 第 2 场 小白入门赛

蓝桥小课堂-平方和 模拟 1 2 2 2 3 2 ⋯ n 2 n ⋅ ( n 1 ) ⋅ ( 2 n 1 ) 6 1^22^23^2\cdotsn^2\dfrac{n\;\cdot\;(n 1)\;\cdot\;(2n1)}{6} 122232⋯n26n⋅(n1)⋅(2n1)​。 write(n * (n 1) * (n * 2 1) / 6);房顶漏水啦 m a x ( 最大的行 − 最小的行 , 最大的列 −…

jar包是什么意思_面试难度五颗星:JVM有Full GC,为什么还会 OutOfMemoryError?

点击上方蓝色“后端面试那些事儿”,选择“设为星标”学最好的别人,做最好的我们来源:R 大zhihu.com/question/38511221问题:R大回复平时有逛知乎的习惯,一般对JVM相关话题比较感兴趣。偶然看到这个问题,结果…

系统执行sql很慢达梦工具执行很快的简单解决方式

现象描述:系统功能查询很慢,拷贝查询sql到达梦工具中执行速度很快 1.问题分析: 达梦SQL执行耗时异常问题排查_qq_39693441的博客-CSDN博客_sql耗时分析 2.解决方式1: 在程序sql中拼接随机数如: select /*动态随机数*…

roads 构筑极致用户体验_长安马自达「悦马星空」计划上线,为用户带来极致服务体验...

日前,第十八届广州车展顺利举行。期间各大汽车品牌齐聚亮相,这其中,也包括众人熟悉的长安马自达。据悉,在本次车展上,长安马自达除携品牌全系车型次世代MAZDA3 昂克赛拉、2020款MAZDA CX-5、MAZDA CX-30和MAZDA CX-8亮相外,还正式发布「悦马星空」用户共创计划。资料显示,「悦马…

从数百万个光纤(而不是数千个线程)中查询数据库

jOOQ是在Java中执行SQL的好方法, Quasar光纤带来了大大提高的并发性 我们很高兴在平行宇宙的 Fabio Tudone的jOOQ博客上宣布另一个非常有趣的来宾帖子。 Parallel Universe开发了一个开源堆栈,使开发人员可以轻松地在JVM上对极端的并发应用程序进行编码…

Oracle11.2.0.4 RAC安装文档

1 环境配置 参考官方文档《Grid Infrastructure Installation Guide for Linux》 1.1 软件环境 操作系统: [roothowe1 ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.2 (Santiago) [roothowe1 ~]# uname -a Linux howe1 2.6.32-220.el6.i…

captcha库_将CAPTCHA添加到您的GWT应用程序

captcha库什么是验证码? 在一个充满恶意机器人的世界中,您应该怎么做才能保护您宝贵的Web应用程序? 您真正应该做的基本事情之一就是向其中添加CAPTCHA功能。 如果您不熟悉(听起来有些奇怪),则CAPTCHA是确保…

ContentProvider与ContentResolver使用

例如以下内容为从网络转载:使用ContentProvider共享数据:当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就能够向其它应用共享其数据。虽然使用其它方法也能够对外共享数据,但数据訪问方式会因…

cshtml中引用css_ASP.NET CoreMVC 中的控制器

Controller in ASP.NET Core MVC在本节中,我们将讨论 Controller 是什么以及它在 ASP.NET Core MVC 中的作用。Fiddler需要大家提前装一个工具,https://www.telerik.com/fiddlerFiddler 是一个 http 协议调试代理工具,它能够记录并检查所有你…

小学阅读方法六种_小学生掌握了这些语文答题方法,轻松应对阅读理解,不再是难事...

家长们都知道,孩子们在学习数学的时候,重要的就是数学的一些公式,只要把数学公式记牢,做很多题的时候灵活运用,就可以解答。今天我们来看看,语文方面也有一些答题公式,当孩子们完全掌握了这些公…