(四)移动GPU渲染简介

1  简介

1.1  像素

屏幕是由许多小的方格组成,这就是我们常说的像素,由于方格很小很小,所以看上去像一个“点”。例如屏幕的分辨率为1080p(1920x1080),则该屏幕的像素的个数为: 1920 x 1080=2,073,600(约2兆个);一张图像格式为RGBA8888的1080p图像(未压缩)占用内存为:2M x 4byte = 8Mb

1.2  Rendering pipeline(渲染流水线)

图形是按照一定的步骤渲染出来的,下图是一张简易的pipeline流程图,省略了tessellation以及geometry shading两部分,它们只有在必要场合下才会用到,关于这两个部分下次再做介绍。

Fig1.1  Rendering pipeline

其中,VAO是指vertex array object,包含vertex buffer object(VBO)和index buffer object(IBO)。color, depth, stencil三种attachment是绑在framebuffer上的,color attachment可以有多个,depth与stencil attachment最多只能各有一个。

1.3  屏幕上显示的三角形是怎么画出来的

数据buffer----位置点(vertex shading)----拼三角形图元----光栅化----着色(fragment shading)----显示

1.3  渲染模式

桌面端计算机主要考虑性能,并且芯片面积相对于移动设备可以设计得更大;而移动设备需要兼顾多种因素,功耗、性能、芯片面积,考虑到这两种平台的不同特性,GPU的渲染模式主要划分为immediate mode rendering(IMR)和tile based rendering(TBR),其中IMR主要用于桌面计算机的图形渲染,TBR主要用于移动嵌入式设备的图形渲染。下面将分别介绍这两种模式。

2  IMR

2.1  简介

IMR是指对于每一个draw call,vertex shading做完拼成图元后直接做fragment shading,pipeline不会中断执行。

2.2  IMR的优缺点

2.2.1  优点

架构简单,vertex shading输出的结果经过primitive assembly之后流入fragment shading,这样就不需要额外的内存来存储中间计算结果,并且节省写出、读入的内存带宽。

2.2.2  缺点

每一个draw call执行一次vertex shading和fragment shading,这样如果先渲染距离远的再渲染近的两个二维重叠的物体,先渲染的物体会被后渲染的物体覆盖,就会导致无用的渲染(可以想像两个完全一样的物体,沿着Z方向放在不同的两个位置)。

3  TBR

3.1  简介

TBR是指对于一个FBO, 将其拆成许多小的tile,先执行所有draw call的vertex shading,拼装成相应的图元后,接着对于每一个tile,各用一张链表(polygon list)来记录位于该tile中的图元;然后对于每一个tile中的每一个图元进行光栅化和fragment shading。

3.2  TBR的优缺点

3.2.1  优点

第一,节省带宽,将FBO拆成许多小的tile,然后对每一个tile渲染,这样gpu对于每个tile都有一块片内的memory来保存渲染的结果,片内memory的优势是访问速度快。第二,相对于IMR而言,先将一个FBO内的所有vertex shading做完,这样就可以知道每个draw call画的物体的相对位置,然后可以利用early zs test 和forward pixel kill来kill掉不必要的fragment,少做一些不必要的fragmet shading,从而大大减小GPU的workload,提高性能和降低功耗。

3.2.2  缺点

vertex shading的计算结果需要存到主存里,fragment shading的时候又需要从主存里读回,所以TBR的主要缺点就是需要额外的空间来存储中间结果,并且相对应地也增加了写入和读回的带宽,这样随着模型精细复杂度的增加,缺点会逐渐暴露出来。

4  小结

桌面设备与主要追求性能,所以主要采用IMR渲染模式,而移动设备GPU的带宽、性能、功率要远低于桌面设备,需要兼顾性能与功耗,从而主要采用TBR模式。与IMR的不同之处在于,TBR会先执行一个FBO里面所有draw call的vertex shading,从而可以知道每个draw call渲染物体的相对深度,大大降低overdraw,从而提高性能,降低功耗。



作者:backward
链接:https://www.jianshu.com/p/ef73be4e5c0b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值