本文描述的是一种图形处理系统(1400),用于接收包括多个像素的输入图像,该系统用于将输入图像划分为多个图块,每个图块包括输入图像的像素的子集,该系统包括:存储器(503、1402),用于存储图块组(702、901、1105),该图块组是输入图像的多个图块的子集;以及处理器(1401),其中,处理器用于,对于图块组(702、901、1105)中的至少一个图块,执行包括以下步骤的处理通道:渲染图块;根据图块组(702、901、1105)中的至少一个其他图块对图块滤波;以及在存储器(503、1402)中存储经渲染和滤波的图块。与传统的两通道方法相比,这可能会带来更少的存储器带宽消耗,对外部存储器带宽的影响更小。更小。更小。
【技术实现步骤摘要】
【国外来华专利技术】单通道的渲染和后处理滤波
[0001]本专利技术涉及图像的渲染和后处理滤波,例如用于移动图形处理单元(graphics processing unit,GPU)中的游戏渲染。
技术介绍
[0002]用于游戏渲染的后处理滤波涉及对渲染结果应用空间滤波操作,滤波区域包括其他周围像素。例如,滤波可以应用于帧缓冲区中的图像。
[0003]游戏引擎,例如Unreal、Unity和CryEngine,通常会将3D场景渲染到帧缓冲区中,然后立即对经渲染的图像应用一些后处理滤波器,以实现一些特殊的视觉效果(例如用于辉光效果的高斯模糊滤波器,或图像锐化滤波器),或应用抗锯齿滤波器,例如快速近似抗锯齿(Fast Approximate Anti
‑
Aliasing,FXAA),详见https://en.wikipedia.org/wiki/Fast_approximate_anti
‑
aliasing。
[0004]FXAA忽略多边形和线条边缘,并通过使用针对渲染帧的每个像素运行的像素着色器程序简单地分析屏幕上的像素。但是,其还需要访问3x3周围像素的局部邻域。如果其发现那些创建人工边缘的像素,则会将它们平滑掉。FXAA可以平滑屏幕上所有像素的边缘,包括那些在阿尔法混合纹理中的边缘,以及由先前通道的像素着色器效果产生的边缘,这些边缘对多重采样抗锯齿(Multi
‑
Sample Anti
‑
Aliasing,MSAA)免疫,但现在可以通过FXAA解决.
[0005]FXAA可以在桌面GPU上以非常快的速度运行,通常只需一两毫秒。由于桌面GPU具有高带宽专用视频存储器,因此用3D渲染通道生成图像,然后再用单独的2D后处理通道以滤波经渲染的图像,这并不是问题。但是,对于没有这种专用视频存储器的移动设备的GPU,通常情况并非如此。
[0006]这些后处理滤波程序不仅需要访问当前处理的像素,还需要访问具有滤波尺寸为3x3、5x5甚至更大的局部邻域范围内的一些相邻像素。图1示出了应用于图像的3x3滤波操作,其中,从DDR读取局部邻域中的9个像素以滤波当前像素,如101所示。
[0007]这可能会导致没有专用视频存储器的移动设备的GPU出现带宽问题,因为执行3D渲染和将中间帧缓冲区输出到DDR(double data rate memory,双倍数据速率存储器)过程中涉及两个渲染通道,然后是例如FXAA的后处理通道(具有3x3像素占用空间),其中,每个像素必须从DDR多次读取到GPU中以执行滤波操作。
[0008]现代移动设备的GPU通常使用基于图块的渲染,其中,一次将一个图块的像素渲染到片上图块缓冲存储器中,这比片外系统存储器要快得多。因此,无法在单通道渲染或其(在Vulkan API的术语中的)多个子通道内访问周围像素。因此,出于后处理的目的,启动了第二个单独通道,如图2所示。
[0009]因此,现代游戏引擎通常使用两个通道来执行一个渲染,之后是一个后处理滤波通道,即,两个单独的渲染通道与DDR一起作为它们的数据连接。第一个通道将经渲染的帧缓冲区写入系统存储器,然后第二个通道将其再次读入GPU以执行滤波。这种方法虽然灵
活,但会消耗大量的系统存储器带宽(尤其是读取带宽),从延迟和功耗两方面来说,这在移动设备上是非常昂贵的。因此,这种方法对于基于图块的移动设备的GPU并不友好。
[0010]EXT_shader_pixel_local_storage的OpenGL ES扩展也无济于事,因为它只允许访问存储在当前像素位置的值,但不允许访问局部邻域中的周围像素。
[0011]此外,基于图块的移动设备的GPU的另一个困难是,要使用大于1x1的滤波范围来对当前像素滤波,所需的周围像素甚至可能位于当前正在渲染的图块之外,并且可能位于其他可能尚未渲染的图块中,如图3所示。
[0012]总之,在基于图块的移动设备的GPU上执行3D渲染通道(以生成图像),之后用单独的2D后处理通道(以滤波经渲染的图像)的问题是系统存储器中的经渲染的中间帧缓冲区需要被访问多次(对于3x3滤波器,需要写入一次并读取九次)以执行滤波。当访问片上系统的系统存储器中经渲染的中间帧缓冲区时,这可能会导致读取和写入带宽的延迟和功耗方面的高成本。特别是,对于任何实际的滤波器尺寸,例如3x3、5x5、7x7等,读取带宽都非常大。就每秒帧数而言,这也可能导致较低的渲染速度。
[0013]移动设备需要游戏的实时渲染性能,其具有高帧率和用户交互的低延迟,同时要求低功耗以延长电池寿命,同时还要求低散热以使用户握持舒适。
[0014]因此需要开发一种克服这些问题的方法。
技术实现思路
[0015]第一方面,提供了一种图形处理系统,用于接收包括多个像素的输入图像,该系统用于将输入图像划分为多个图块,每个图块包括输入图像的像素的子集,该系统包括:存储器,用于存储图块组,该图块组是输入图像的多个图块的子集;以及处理器,其中,处理器用于,对于该图块组中的至少一个图块,执行包括以下步骤的处理通道:渲染图块;根据该图块组中的至少一个其他图块对该图块滤波;以及在存储器中存储经渲染和滤波的图块。
[0016]因此,通过在存储器中保留少量固定数量的数据,即,将整个帧图像的一小个子集存储在存储器中,将渲染通道和滤波通道组合成单个处理通道。因此,中间帧缓冲区不需要进入外部系统存储器。与传统的两通道方法相比,这可能会导致更少的存储器带宽消耗,对外部存储器带宽的影响更小。
[0017]处理通道可以是包括上述渲染和滤波阶段的处理管线。从管线输出的经渲染和滤波的图块可以存储在存储器中。
[0018]存储器可以是片上存储器。存储器可以是高速缓存。该高速缓存可以是系统级缓存或静态片上存储器。存储器可以与外部系统存储器分开。将图块子集存储在高速缓存中可以减少渲染和滤波图块时的带宽消耗。
[0019]该图块组可以包括预定固定数量的图块。存储器可以为每个处理通道存储预定的固定数量的图块。
[0020]该系统可以用于实现滑动窗口算法,从而针对处理器执行的每个处理通道保持该图块组中的固定数量的图块。滑动窗口调度算法可以利用少量固定数量的像素图块作为存储在片上存储器中的工作组,因此,当对最近渲染的图块组中的这些当前活动图块应用滤波操作时,在特定时间,只有(正在或即将要滤波的一些当前图块的)非常必要的邻近图块保留在片上存储器中。
[0021]该图块组可以包括至少一个未经滤波的图块。该图块组可以包括至少一个已经经渲染和滤波的图块。因此,该图块组可以包括当前正在滤波的图块的相邻图块。
[0022]系统还可以包括调度器,用于以垂直或水平扫描线顺序对输入图像的图块的处理执行调度。这可能是调度图块的便捷方式。锯齿形顺序也可用于在较大的超级图块中调度小图块,然后使用扫描线顺序来调度大的超级图块。也可以使用这些不同调度顺序的任何其他可能组合。
[002本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种图形处理系统(1400),用于接收包括多个像素的输入图像,所述系统用于将所述输入图像划分为多个图块,每个图块包括所述输入图像的像素的子集,所述系统包括:存储器(503、1402),用于存储图块组(702、901、1105),所述图块组是所述输入图像的多个图块的子集;以及处理器(1401),其中,所述处理器用于,对于所述图块组(702、901、1105)中的至少一个图块,执行包括以下步骤的处理通道:渲染所述图块;根据所述图块组(702、901、1105)中的至少一个其他图块对所述图块滤波;以及在所述存储器(503、1402)中存储经渲染和滤波的图块。2.根据权利要求1所述的系统,其中,所述存储器是高速缓存(503),所述高速缓存是系统级缓存或静态片上存储器。3.根据权利要求1或2所述的系统,其中,所述图块组包括预定固定数量的图块。4.根据权利要求3所述的系统,其中,所述系统用于实现滑动窗口算法以针对所述处理器执行的每个处理通道保存所述图块组中固定数量的图块。5.根据前述权利要求中任一项所述的系统,其中,所述图块组包括至少一个未经滤波的图块和至少一个已经渲染和滤波的图块。6.根据前述权利要求中任一项所述的系统,其中,所述系统还包括调度器,用于以垂直或水平扫描线顺序对所述输入图像的图块的处理进行调度。7.根据前述权利要求中任一项所述的系统,其中,所述图块组包括所述输入图像的固定列数的图块。8.根据权利要求7所述的系统,其中,...
【专利技术属性】
技术研发人员:刘保权,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。