Tile based rendering,分块渲染。
通过阅读本文,你将知道,
Tile based renderingTile based rendering 相较于 Immediate rendering 的优缺点有哪些在介绍分块渲染之前,先介绍一下什么是渲染。

如上图,将模型转换为图像的过程称为渲染。例如,
图. 3D模型

图. 图像

渲染的底层原理是计算机图形学。
渲染的逆过程称为计算机视觉,比如,
图. 人脸识别

图. 自动驾驶

渲染分为实时渲染(realtime)和离线渲染(offline),例如,
图. 电影或模型的制作。离线渲染对实时性要求不高,更加注重渲染效果

图. 电脑游戏。对实时性要求较高,30帧/秒以上并伴随着实时的操作

按照渲染管线,可以分为,
按照渲染架构,可以分为,
按照渲染方式,可以分为,
本文主要介绍分块渲染方式,其他请参看其他文章。
分块渲染首先出现于移动 GPU。
移动 GPU 的设计在面对 PPA(性能 Performance、功耗 Power、面积 Area)的取舍时,总是优先考虑功耗,这是与桌面 GPU 设计的最大区别。桌面 GPU 更加关注性能。
那什么是分块渲染?为何分块渲染可以减少功耗呢?
将待渲染区域划分成若干块并行渲染的渲染方式称为分块渲染。如下图,

可以看到,分块渲染方式将一帧图像划分成了若干个小块分别渲染。
前面提到,分块渲染出现的一大目标是要降低功耗。影响功耗的常见因素有:时钟频率,芯片工艺,访存带宽,功耗管理等。
分块渲染可以明显降低访存带宽,从而达到降低功耗的目的。如上图,分块渲染相较于传统的立即渲染增加了一个片上缓存(Tile buffer)。该片上缓存包含渲染这个方块所需要的颜色缓冲区、深度模板缓冲区。所以,渲染该方块的缓冲区访问都是片上操作,并且渲染完成后,只需要回写颜色缓冲区到显存(Frame buffer)即可,深度模板缓冲区不必写回。这样既提升了访存效率,又减少了访存操作。
分块渲染带来的副作用是,在渲染管线的几何阶段需要额外的访存操作。这是为什么呢?
传统的立即渲染方式的处理流程为,

而分块渲染的处理流程为,

每个方块在开始渲染之前,需要统计出该方块所覆盖的所有的图元。所以,出现了上图中的竖线所示的截断现象,也叫延迟。
并且,每个方块所覆盖的图元信息需要写回到显存,然后在后续的操作中再从显存读取出来。因此,分块渲染相较于立即渲染增加了额外的访存操作。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。