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

性能稍微降低

TA100 T3.7 TB(D)R相关推荐

  1. 图形学进阶——移动端TB(D)R架构基础

    移动端TB(D)R架构基础 百人计划学习链接:[技术美术百人计划]图形 3.7 移动端TB(D)R架构基础 一.当前移动端的设备概况 1. 移动端CPU占比 2. 移动端GPU占比 3. 各类电子设备 ...

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

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

  3. 百人计划(图形部分)移动端TB(D)R架构基础

    霜狼_may的个人空间_哔哩哔哩_Bilibilihttps://space.bilibili.com/7398208?spm_id_from=333.788.b_765f7570696e666f.1 ...

  4. TA100 T3.4

    前向/延迟渲染管线 渲染路径 渲染方式 FORWARD 流程 Unity中规则 DEFERRED 流程 几何处理Pass 光照Pass 透明物体 不同渲染路径的特性 异同 优劣 前向渲染 优点 缺点 ...

  5. 【TA-霜狼_may-《百人计划》】图形3.7 移动端TP(D)R架构

    [TA-霜狼_may-<百人计划>]图形3.7 移动端TP(D)R架构 @[TOC]([TA-霜狼_may-<百人计划>]图形3.7 移动端TP(D)R架构 3.7.1 当前移 ...

  6. android布局layout中的一些属性

    为什么80%的码农都做不了架构师?>>>    1.可以使某些资源文件或UI组件可重用 <include layout="@layout/other"/&g ...

  7. 2010 27寸 imac 升级固态_2017 款 iMac,27 寸升级换 SSD 固态硬盘拆机详解

    想要 iMac玩游戏?怎么能带动?如何解决卡顿问题?别急,给您带来2017 款 iMac,27 寸升级换 SSD 固态硬盘拆机详解,拆机并不复杂,动手能力差的同学看了这篇文章会觉得原来我也可以,那让我 ...

  8. NUAA无线传感器网络 复习重点整理

    鸣谢 授课老师:郝洁老师 个人主页 在cdsn博主:Matts Tian 基础上修改.添加 Matts Tian 体系结构 什么是无线传感器网络? 无线传感器网络(Wireless sensor ne ...

  9. MIT 18.06 +线性代数的几何意义+3Blue1Brown 笔记

    第一节 线性映射与线性变换 线性函数:初等f(x)=kxf ( x ) = k xf(x)=kx,满足可加性与比例行,几何意义为一条直线:高等线性函数:扩展初等线性函数,f(x1,x2,⋯,xn)=k ...

最新文章

  1. hibernate对象管理
  2. Crypto-Danciling line.(ascii 图像
  3. android 网络通信方式,Android中基于TCP协议的网络通信
  4. python hist 参数_关于python中plthist参数的使用详解
  5. [Css] 使用css如何拉伸字体?
  6. 从java到C++入门
  7. Linux系统管理第1天
  8. 京东面试撞上重感冒(纯粹面试之感)。。。。。。
  9. python爬虫之51job工作搜索
  10. 机器学习在饿了么竞价广告中的实践
  11. Android面试整理
  12. 2022最火的Linux性能分析工具--perf
  13. GAMES101现代计算机图形学入门——几何表示之曲线与曲面
  14. 学计算机选择什么编程语言好一些?
  15. 如何外网登录管理云通信短信网关平台?——快解析映射方案
  16. Chrom for mac下载
  17. jieba提取关键词时筛选词性时单词性选择的一点注意事项
  18. 《鸟哥的Linux私房菜》学习笔记
  19. PAT (Advanced Level) Practice 1011 World Cup Betting (20 分) 凌宸1642
  20. android 4.4 miui,刷机之家教你设置小米MIUI/Android 4.4双系统(一)

热门文章

  1. STM32芯片包下载和安装教程
  2. 谨赠20篇技术热文营造一个不一样的节日气氛!
  3. ubuntu20.04安装微信和QQ,腾讯会议,以及一些其他实用软件
  4. 数学小课堂:数学思维(从逻辑出发想问题)
  5. 详解TP-Link路由器设置(图解)
  6. ICCV2021 | TransFER:使用Transformer学习关系感知的面部表情表征
  7. 在线Base64编码加密解密还原工具
  8. python xlwt 设置表格的行高方法
  9. Ubuntu官网安装教程
  10. Vue--Vuex--使用/教程/实例