基于图块渲染
基于图块渲染(英语:Tiled rendering或Tile-based rendering)也称基于瓦片渲染或基于小方块渲染,它是一种在光学空间中通过规则的网格细分计算机图形图像并分别渲染网格(grid)或图块(tile)各部分的过程。这种设计的优点在于,与立即绘制整个帧的立即模式渲染系统相比,它减少了对内存和带宽的消耗。这使图块渲染系统的使用特别常见于低功耗硬件设备。图块渲染有时也被称为中置排序(sort middle)架构,因为它在绘图管线中间而不是接近结束时进行几何排序。[1]
基本概念
[编辑]创建一个用于显示的3D图像包括一系列步骤。首先,将要显示的对象从各个模型加载到内存中。然后,系统应用数学函数将模型转换为公共坐标系统,即世界视图。从这个世界视图创建一系列多边形(通常为三角形),近似从特定视点(摄像机、视角)看到的近似原始模型。接下来,合成系统通过渲染三角形并将纹理应用于外缘来产生图像。纹理是绘制在三角形上以产生真实感的小图像。之后将所得到的图像与各种特殊效果组合,并移动到一个帧缓冲器,视频硬件最后扫描并输出到显示器。这种基本概念的布局称为显示管道(display pipeline)。
上述步骤的每一步都将得到图像并需保存,而增加了所需的内存容量。当它到达管道的结尾,图像会非常大,因此典型的显卡设计经常使用专用的高速显存及极快的总线以提供图像移动所需的带宽。这种支持在专用显卡上可能,但随着功耗和尺寸的预算变得更有限,提供足够的带宽在设计上愈加昂贵。
基于图块的渲染器通过将图像分解成称为图块或瓦片的部分并分别渲染各部分来解决此问题。这减少了中间步骤期间所需的内存量,以及在期间转移的数据量。为做到这点,系统将根据位置对构成几何的三角形进行排序,从而能快速找到哪些三角形与图块边界重叠。然后它只将这些三角形加载到渲染管线,在GPU中执行各种渲染操作,及发送结果到帧缓冲器。使用的图块可能非常小,例如16×16和32×32像素是常见的图块大小,这使得内部所需的内存和带宽量较小。因为每个图块都是独立的,它也很适合简单的并行化。
在典型的基于图块的渲染器中,几何必须首先转换为屏幕空间并分配给屏幕空间图块。这需要一些存储每个图块几何列表的空间。在早期的图块系统中,这由CPU提供,但所有现代的硬件都包括采用硬件加速此步骤。几何的列表也可以从前到后排序,允许GPU使用隐藏表面去除来避免处理被其他遮挡的像素,节省不必要的用于纹理查找的内存带宽。[2]
基于图块的方法有两个主要缺点。一是如果某些三角形叠加在数个图块,则需要绘制数次。这意味着总渲染时间将高于即时渲染模式。当图块需要拼接在一起以形成完整图像时还有一个问题,但这个问题已在很久前得到解决。更难解决的是,一些图像技术需要应用到整个帧,并且其模式很难在基于图块的渲染中实现。这些利弊是众所周知的,并且对于某些利用其优势的系统来说缺点是次要的,因而基于图块的渲染系统广泛存在于手持计算设备中。
基于图块的渲染不应与图块/非线性帧缓冲器寻址方案方案混淆,其是使相邻元素也在内存中相邻。[3]这些寻址方案被各种架构使用,而不只是基于图块的渲染器。
早期成果
[编辑]很多基于图块渲染的早期成果是作为Pixel Planes 5架构(1989)的一部分完成。[4][5]
Pixel Planes 5项目验证了基于图块的方法,并发明了很多现在被视为基于图块渲染器的标准的技术。这是该领域中被其他文章广泛引用的成果。
基于图块的方法在软件渲染的早期就已被了解。Reyes渲染架构的实现就将图像划分为图块桶(tile buckets)。
商业产品 - 桌面计算机和家用游戏机
[编辑]在开发桌面GPU的早期,几家公司开发了图块式架构。随着时间的推移,这主要被能快速定制外部内存系统的即时模式GPU取代。
主要的例子有:
- PowerVR渲染架构(1996):光栅化器由32×32的图块组成,其中的多边形跨越多个像素、多个图像被栅格化。在早期的PC版本中,图块叠加在运行于CPU的显示驱动程序中执行。在Dreamcast控制台的应用程序中,图块叠加用一组硬件执行。这促进了延期着色——只有可见像素被材质贴图,从而节省阴影计算和纹理bandwidth。
- Microsoft Talisman(1996)
- Dreamcast(由PowerVR芯片组支持)(1998)
- Gigapixel GP-1(1999)[6]
- Intel Larrabee GPU(2009)(已取消)
- PS Vita(由PowerVR芯片组支持)(2011)[7]
- Nvidia基于Maxwell架构及之后架构的GPU(2014)[8]
使用片上大缓冲器的非图块式架构的例子有:
- Xbox 360(2005):GPU包含一个嵌入式10 MiB eDRAM。这不足以保留一个配有4×多重采样抗锯齿(MSAA)的1280×720图像的光栅,因此运行在HD分辨率并启用4× MSAA时采用图块叠加。[9]
- Xbox One(2013):GPU包含一个嵌入式32 MiB eSRAM,这可以保存部分或整个图像。它不是一个基于图块的架构,但足够灵活,软件开发人员可以模拟基于图块的渲染。[10][与来源不符]
商业产品 - 嵌入式
[编辑]由于相对较低的外部内存带宽和片上内存容量的需求,图块渲染是常用于嵌入式GPU的技术。目前的例子有:
基于图块的即时模式渲染(TBIM):
基于图块的延迟渲染(TBDR):
- Imagination Technologies PowerVR 5/6/7系列。[14]
- 博通 VideoCore IV系列。[15]
Vivante生产具有紧密耦合的帧缓冲器内存的移动GPU(类似上面描述的Xbox 360 GPU)。虽然这可以用于渲染屏幕部分,但是所渲染的区域的大尺寸使它们通常不被描述为使用基于图块的架构。
参见
[编辑]参考资料
[编辑]- ^ Molnar, Steven. A Sorting Classification of Parallel Rendering (PDF). IEEE. 1994-04-01 [2012-08-24]. (原始内容存档 (PDF)于2014-09-12).
- ^ PowerVR: A Master Class in Graphics Technology and Optimization (PDF). Imagination Technologies. 2012-01-14 [2014-01-11]. (原始内容 (PDF)存档于2013-10-03).
- ^ Deucher, Alex. How Video Cards Work. X.Org Foundation. 2008-05-16 [2010-05-27]. (原始内容存档于2010-05-21).
- ^ Mahaney, Jim. History. Pixel-Planes. University of North Carolina at Chapel Hill. 1998-06-22 [2008-08-04]. (原始内容存档于2008-09-29).
- ^ Fuchs, Henry. Pixel-planes 5: a heterogeneous multiprocessor graphics system using processor-enhanced memories. Pixel-Planes. ACM. 1989-07-01 [2012-08-24]. (原始内容存档于2018-10-27).
- ^ Smith, Tony. GigaPixel takes on 3dfx, S3, Nvidia with... tiles. Gigapixel. The Register. 1999-10-06 [2012-08-24]. (原始内容存档于2019-06-22).
- ^ mestour, mestour. Develop 2011: PS Vita is the most developer friendly hardware Sony has ever made. PS Vita. 3dsforums. 2011-07-21 [2011-07-21].[永久失效链接]
- ^ Kanter, David. Tile-based Rasterization in Nvidia GPUs. Real World Technologies. August 1, 2016 [April 1, 2016]. (原始内容存档于2016-08-04).
- ^ 存档副本. [2017-03-16]. (原始内容存档于2015-01-07).
- ^ 存档副本. [2017-03-16]. (原始内容存档于2020-08-21).
- ^ Mali rendering strategy. ARM. [2020-10-05]. (原始内容存档于2016-03-04).
- ^ An update on the freedreno graphics driver. lwn.net. [2017-03-16]. (原始内容存档于2015-09-05).
- ^ The rise of mobile gaming on android (PDF). Qualcomm. [17 September 2015]. (原始内容 (PDF)存档于2014-11-09).
- ^ A look at the PowerVR graphics architecture: Tile-based rendering. Imagination Technologies. [2017-03-16]. (原始内容存档于2015-04-05).
- ^ VideoCoreIV-AG100 (PDF). Broadcom. 2013-09-18 [2017-03-16]. (原始内容 (PDF)存档于2015-03-01).