TA100 T3.7 TB(D)R

news/2025/1/12 0:45:32/

1.部分相关名词

System Memory

手机内存,几个G到十几个G的那种,也是常说的DDR

On Chip Memory

手机自身的SRAM缓存,容量挺小(几百K到几M),但读写巨快

在TB(D)R架构下会存储Tile的Color,Depth,Stencil。

 

Stall

一个结果已经计算完了 但等另一个结果计算完成的等待过程

Fillrate

像素填充率是指图形处理单元在每秒内所渲染的像素数量,单位是MPixel/S(每秒百万像素),或者GPixel/S(每秒十亿像素),是用来度量当前显卡的像素处理性能的最常用指标。

像素填充率 = ROP运行的时钟频率 × ROP的个数 × 每个时钟的ROP可以处理的像素个数

2.常见渲染架构

IMR

Immediate Mode Rendering,中文立即渲染

 直接且传统的渲染架构,就是直接和内存进行交互,要几何信息、贴图信息就找内存拿,要读写Buffer就找内存改

TBR

Tile-Based Rendering,会将屏幕上的区域分成一个个的Tile分开来渲染

在第一个阶段,先把顶点着色器给执行完了,然后执行分Tile操作,给每个图元指定到块元里,然后再以Tile为单位去执行后续操作如光栅化等

分Tile操作就是形成一个图元的列表存到SystemMemory里

TBR增加了与On Chip Memory的交互,对于Buffer的操作会放在On Chip Memory上方便读写,在ColorBuffer搞定后在传到手机内存的FrameBuffer里

Defer

 Defer的意思就是,等数据都传过来之后再一起处理

在刚刚TBR里,把图元集合成Tile就是一次Defer

这个Defer又叫Binning过程,即确定哪些块元渲染哪些图元

TBDR

 在TBR的基础上增加第二次Defer所以叫TBDR

这个Defer主要是优化Overdraw问题的。上节课说的EarlyZ除非严格从前往后不然无法完全优化Overdraw。

苹果:

PowerVR会在原来EarlyZ的基础上增加了HSR,HiddenSurfaceRemoval,通过硬件层面的特性解决Overdraw问题

对于每个通过EarlyZ的Fragment,先读取第一次Defer产生的图元列表,标记哪个像素由哪个图元绘制,等Tile上的图元都处理完成时,它们都被标记上了,然后再把最近的不透明和最近的透明对象标记为需要被渲染传到fragment shader里

其他GPU的第二次Defer

骁龙:

Arm Mali:

 ForwardPixelKill,发生在EarlyZ之后,如果EarlyZ传过来的数据发现有同位置且深度较小的Quad时就会移除深度较大的Quad

TBR与IMR

 

上TBR,下IMR,黄色为处理单元,蓝色为存储区域,其实也基本和上面的内容一个样(啊这张图有必要截吗?我是不是又在做那种事了)

3.TBR的特点

就是上面说到的,一块一块处理的,所以颜色也是一块一块刷出来的,而且整体有一定的顺序性

 

可见IMR在交界的地方有挺强的随机性(GPU乱序执行),不过TBR也有一定的随机性

TBR渲染速率并不比IMR快,目的是降低带宽,减少功耗

优点:

TBDR解决Overdraw

因为做成了一个个Tile,所以很多操作都是可以On-Chip Memory上做好,最终再把Color Buffer传给内存,降低带宽。不做Tile的话,每个Pass的每个DrawCall这样把Buffer传来传去,折磨带宽呢

缺点:

tile要和DDR交互

部分如Tessellation的操作不支持TBR(因为本身对几何信息做出改变)

对于同时叠加在多个tile的三角形要绘制多次

4.移动端TBR优化建议

不使用FrameBuffer的时候清除掉,清空积累在tilebuffer上的数据 ,避免将tlebuffer刷新到system memory

不要在一帧里频繁切换FrameBuffer,减少tlebuffer和system memory的stall

移动平台建议用AB而不是AT(经验性结论,最好测试一下),必须用AT的话先做PreZ

图片压缩、mipmap

尽量使用Vertex传入的UV,不在fragment动态计算UV

延迟渲染尽量利用TileBuffer

如果在Unity中调整ProjectSetting---Quality---Rendering---Texture Quality的不同设置,或者不同分辨率下,帧率有很大的变化,大概率是带宽出问题了

MSAA在TBDR上很快

少在Fragment里Discard,防止打断EarlyZ

细心区分浮点类型(float half uniform等)优化带宽

尽量避免曲面细分,提倡LOD(TBR友好)

作业

结合课程,将demo打包到安卓平台,对比使用课上优化点前后的性能变化

使用UPR进行测试,设备是红米K30S,场景长这样

AssetStore找的,PolytopeStudio的资源,可以搜Lowpoly Medieval。总体是个Lowpoly风格,花花草草树树叶叶啥的都是AlphaTest做的,贴图大多是一个物体用一大张

自己经过一轮的测试发现测试的时候乱摆摄像头会导致数据有较大浮动,所以将摄像头固定在开始界面进行20秒的测试

1.默认

 

2.贴图压缩格式由No Override改为ETC2

帧率变化不大,不过纹理资源峰值倒是由原来的300M变成了250M

3.贴图大小由2048改成1024

 变化也不大

4.关闭AlphaTest

 性能巨量优化,毕竟一地的草Overdraw可不是闹着玩的

5.关闭Mipmap

性能稍微降低


http://www.ppmy.cn/news/139360.html

相关文章

【航模插头总结】 ec3,ec5,t插,xt60,xt90,xt150,as150,mt60,mt30

在模型接插件行业,常用的模型插头无非就是几种,EC2插头,EC5插头,EC3插头,T 插头,XT60插头,XT90插头,XT150插头,AS150插头等几种。我们在使用这些插头的时候,常常会因为电…

车载以太网100Base-T1/BroadR-Reach 简介和使用信息,以及与100Base-Tx,-Fx,T4信息

对于汽车开发工程师来说,车内总线的历史,大家耳熟能详 对于汽车上应用以太网的历史,想必大家也知道个大概: - 2004年,BMW开始研究汽车以太网技术,或者说是把以太网作为汽车内部数据通信网络的技术&#xf…

车载以太网 > 百兆100BaseT1转TX盒子拆解(包含3类产品)

RAD-Moon拆解 产品链接 https://intrepidcs.com/products/automotive-ethernet-tools/rad-moon/ 主要特性 参考产品链接 环境 拆解图片和主IC介绍 顶视图如下: 前后视图如下: 拆机图如下: Broadcom:BCM89810(100M auto…

车载以太网100base-T1

前提条件: 双绞线定义:是综合布线工程中最常用的一种传输介质。双绞线采用了一对互相绝缘的金属导线互相绞合的方式来抵御一部分外界电磁波干扰。把两根绝缘的铜导线按一定密度互相绞在一起,可以降低信号干扰的程度,每一根导线在…

et200sp系统服务器模块,西门子ET200

展开 文档大小约为10MB 需要等待加载时间约为30秒左右,请耐心等候 本文档的用途 本文档中介绍了有关组态、安装和接线和调试 ET 200SP 分布式 I/O 系统的重要信息。 所需基本知识 必须具备自动化技术的基本知识,才能理解本文档。 本文档的适用范围 本文档适用于 ET 200SP 分布…

签名支持全球管控AI 三巨头侧漏“求生欲”

又一封“群星云集”警示AI风险的公开信来了,这封信的内容简短但措辞炸裂:减轻 AI 带来的灭绝风险,应该与管控流行病和核战争等其他社会级规模的风险一样,成为一项全球优先事项。 5月30日,这纸原文只有22个单词的声明&…

moveit——将MoveGroupInterface写进自己的C++类中

class RM65Control {public:moveit::planning_interface::MoveGroupInterface moveGroup;RM65Control():moveGroup("arm"){} }

回归测试:优先级(Coverage 的适应度函数)

回归测试:优先级 介绍 在确定优先级时,我们的目标是为测试用例找到一个好的顺序。理想情况下,我们希望尽早发生任何故障。这可以加快整体开发过程,例如: 有时,一旦发现失败,我们就会停止测试。…