基于图块的光栅化方法和设备、图像渲染方法和设备与流程

文档序号:33620258发布日期:2023-03-25 11:18阅读:63来源:国知局
基于图块的光栅化方法和设备、图像渲染方法和设备与流程

1.本技术涉及图像处理的技术领域,并且尤其涉及基于图块的光栅化方法和设备,以及图像渲染方法和设备。


背景技术:

2.图像渲染需要耗费大量内存带宽。相比于桌面级图形处理器(graphics processing unit,gpu),移动级gpu不仅可用内存带宽有限,并且普遍使用的是低功耗、窄带宽的内存,因此移动级gpu的带宽会对图像渲染构成限制。怎样在尽可能小的带宽需求下提升gpu性能及画质是本领域中亟待解决的问题。


技术实现要素:

3.根据本技术的一方面,提供了一种基于图块的光栅化方法。所述方法包括:将图块划分为多个第一子图块,其中所述图块通过划分用于显示待渲染场景的图像的屏幕空间而得到;确定每个第一子图块是否被图元覆盖,其中所述图元通过对待渲染场景进行顶点处理而得到;响应于所述第一子图块被图元覆盖,以被图元覆盖的第一子图块中的像素作为映射对象,对所述图元进行光栅化,以确定所述被图元覆盖的第一子图块的每个像素的每个采样点的第一遮罩值;组合像素的采样点的第一遮罩值已确定的第一子图块,以形成光栅化图块;基于所述光栅化图块,确定像素四元组数据,其中所述像素四元组数据包含所述第一遮罩值。
4.在一些实施例中,基于所述光栅化图块,确定像素四元组数据包括:确定像素存储的颜色数据的数量和像素的采样点的数量;响应于像素存储的颜色数据的数量小于像素的采样点的数量,基于图形处理器的片上颜色缓存的容量,将所述光栅化图块划分为多个第二子图块;从所述第二子图块的数据信息中提取像素四元组数据。
5.在一些实施例中,基于所述光栅化图块,确定像素四元组数据还包括:响应于像素存储的颜色数据的数量等于像素的采样点的数量,从所述第一子图块的数据信息中提取像素四元组数据。
6.在一些实施例中,基于图形处理器的片上颜色缓存的容量,将所述光栅化图块划分为多个第二子图块包括:基于图形处理器的片上颜色缓存的容量,确定第二子图块的预设尺寸;按照所述第二子图块的预设尺寸在所述光栅化图块上沿行和列方向获取第二子图块。
7.在一些实施例中,所述片上颜色缓存包括多个存储块,基于图形处理器的片上颜色缓存的容量,将所述光栅化图块划分为多个第二子图块还包括:确定所述行和/或所述列的边缘第二子图块的实际尺寸是否小于或等于所述预设尺寸的二分之一;响应于所述边缘第二子图块的实际尺寸小于或等于所述预设尺寸的二分之一,在单个存储块中存储至少两个边缘第二子图块。
8.在一些实施例中,确定每个第一子图块是否被图元覆盖包括:确定包围所述图元
的最小外围矩形框的纵坐标范围;逐行确定各行第一子图块的纵坐标范围与所述最小外围矩形框的纵坐标范围是否至少部分地重合;响应于一行第一子图块的纵坐标范围与所述最小外围矩形框的纵坐标范围没有至少部分地重合,确定该行第一子图块中的第一子图块未被图元覆盖。
9.在一些实施例中,确定每个第一子图块是否被图元覆盖还包括:确定包围所述图元的最小外围矩形框的横坐标范围;响应于一行第一子图块的纵坐标范围与所述最小外围矩形框的纵坐标范围至少部分地重合,逐个确定该行第一子图块中的各第一子图块的横坐标范围与所述最小外围矩形框的横坐标范围是否至少部分地重合;响应于该行第一子图块中的第一子图块的横坐标范围与所述最小外围矩形框的横坐标范围没有至少部分地重合,确定该第一子图块未被图元覆盖。
10.在一些实施例中,确定每个第一子图块是否被图元覆盖包括:确定由图元的顶点坐标界定的区域与由第一子图块的横坐标范围和纵坐标范围界定的区域是否至少部分地重合;响应于由所述图元的顶点坐标界定的区域与由所述第一子图块的横坐标范围和纵坐标范围界定的区域至少部分地重合,确定所述第一子图块被所述图元覆盖。
11.在一些实施例中,确定每个第一子图块是否被图元覆盖包括:对第一子图块的子图块采样点进行采样,以确定所述第一子图块的第二遮罩值;基于所述第一子图块的第二遮罩值,确定所述第一子图块是否被图元覆盖。
12.在一些实施例中,所述方法还包括,响应于所述第一子图块未被图元覆盖,为所述第一子图块的像素的采样点赋予预设的第一遮罩值。
13.根据本技术的另一方面,提供了一种图像渲染方法。所述图像渲染方法包括:对待渲染场景进行顶点处理,以获得待渲染场景的图元数据;划分用于显示所述待渲染场景的图像的屏幕空间,以得到图块数据;基于所述图元数据和所述图块数据,确定每个图块的图元列表;基于所述图元列表对每个图块执行根据本技术任一实施例所述的基于图块的光栅化方法,以得到所述像素四元组数据;基于所述像素四元组数据,确定像素的采样点覆盖率;基于所述采样点覆盖率,对像素存储第一数量的颜色数据,其中,像素的采样点的数量为第二数量,所述第一数量与所述第二数量是彼此独立设置的;将每个图块的像素的颜色数据存储到系统内存;将所述系统内存中的每个图块的颜色数据合并,以得到经渲染的图像。
14.在一些实施例中,对待渲染场景进行顶点处理,以获得待渲染场景的图元数据包括:确定待渲染场景中的对象的顶点坐标;将所述顶点坐标从基于对象的坐标系变换到基于世界空间或规格化设备坐标空间的坐标系,以得到顶点转换坐标;基于所述顶点转换坐标确定所述图元数据。
15.根据本技术的又一方面,提供了一种基于图块的光栅化设备。所述光栅化设备包括:图块解析器,其配置成将图块划分为多个第一子图块,其中所述图块通过划分用于显示待渲染场景的图像的屏幕空间而得到;子图块光栅化器,其配置成确定每个第一子图块是否被图元覆盖,其中所述图元通过对待渲染场景进行顶点处理而得到;采样点光栅化器,其配置成响应于所述第一子图块被图元覆盖,以被图元覆盖的第一子图块中的像素作为映射对象,对所述图元进行光栅化,以确定所述被图元覆盖的第一子图块的每个像素的每个采样点的第一遮罩值;图块重组器,其配置成组合像素的采样点的第一遮罩值已确定的第一
子图块,以形成光栅化图块;像素四元组生成器,其配置成基于所述光栅化图块,确定像素四元组数据,其中所述像素四元组数据包含所述第一遮罩值。
16.在一些实施例中,所述像素四元组生成器包括图块再分解器以及像素四元组打包器,其中,所述图块再分解器配置成,确定像素存储的颜色数据的数量和像素的采样点的数量,并且响应于像素存储的颜色数据的数量小于像素的采样点的数量,基于图形处理器的片上颜色缓存的容量,将所述光栅化图块划分为多个第二子图块;所述像素四元组打包器配置成,从所述第二子图块的数据信息中提取像素四元组数据。
17.在一些实施例中,所述图块再分解器还配置成,响应于像素存储的颜色数据的数量等于像素的采样点的数量,从所述第一子图块的数据信息中提取像素四元组数据。
18.在一些实施例中,被配置为基于图形处理器的片上颜色缓存的容量,将所述光栅化图块划分为多个第二子图块的所述图块再分解器进一步配置成:基于图形处理器的片上颜色缓存的容量,确定第二子图块的预设尺寸;按照所述第二子图块的预设尺寸在所述光栅化图块上沿行和列方向获取第二子图块。
19.在一些实施例中,所述片上颜色缓存包括多个存储块,并且被配置为基于图形处理器的片上颜色缓存的容量,将所述光栅化图块划分为多个第二子图块的所述图块再分解器进一步配置成:确定所述行和/或所述列的边缘第二子图块的实际尺寸是否小于或等于所述预设尺寸的二分之一;响应于所述边缘第二子图块的实际尺寸小于或等于所述预设尺寸的二分之一,在单个存储块中存储至少两个边缘第二子图块。
20.在一些实施例中,被配置为确定每个第一子图块是否被图元覆盖的子图块光栅化器被进一步配置成:确定包围所述图元的最小外围矩形框的纵坐标范围;逐行确定各行第一子图块的纵坐标范围与所述最小外围矩形框的纵坐标范围是否至少部分地重合;响应于一行第一子图块的纵坐标范围与所述最小外围矩形框的纵坐标范围没有至少部分地重合,确定该行第一子图块中的第一子图块未被图元覆盖。
21.在一些实施例中,被配置为确定每个第一子图块是否被图元覆盖的子图块光栅化器还被进一步配置成:确定包围所述图元的最小外围矩形框的横坐标范围;响应于一行第一子图块的纵坐标范围与所述最小外围矩形框的纵坐标范围至少部分地重合,逐个确定该行第一子图块中的各第一子图块的横坐标范围与所述最小外围矩形框的横坐标范围是否至少部分地重合;响应于该行第一子图块中的第一子图块的横坐标范围与所述最小外围矩形框的横坐标范围没有至少部分地重合,确定该第一子图块未被图元覆盖。
22.在一些实施例中,被配置为确定每个第一子图块是否被图元覆盖的子图块光栅化器被进一步配置成:确定由图元的顶点坐标界定的区域与由第一子图块的横坐标范围和纵坐标范围界定的区域是否至少部分地重合;响应于由所述图元的顶点坐标界定的区域与由所述第一子图块的横坐标范围和纵坐标范围界定的区域至少部分地重合,确定所述第一子图块被所述图元覆盖。
23.在一些实施例中,被配置为确定每个第一子图块是否被图元覆盖的子图块光栅化器被进一步配置成:对第一子图块的子图块采样点进行采样,以确定所述第一子图块的第二遮罩值;基于所述第一子图块的第二遮罩值,确定所述第一子图块是否被图元覆盖。
24.在一些实施例中,所述子图块光栅化器还配置成,响应于所述第一子图块未被图元覆盖,为所述第一子图块的像素的采样点赋予预设的第一遮罩值。
25.根据本技术的又一方面,提供了一种图像渲染设备。所述图像渲染设备包括:顶点处理器,其配置成对待渲染场景进行顶点处理,以获得待渲染场景的图元数据;图块划分器,其配置成划分用于显示所述待渲染场景的图像的屏幕空间,以得到图块数据;以及,基于所述图元数据和所述图块数据,确定每个图块的图元列表;根据本技术任一实施例所述的基于图块的光栅化设备,所述光栅化设备基于所述图元列表确定像素四元组数据;像素处理器,其配置成,基于所述像素四元组数据,确定像素的采样点覆盖率;基于采样点覆盖率,对像素存储第一数量的颜色数据,并将每个图块的颜色数据存储到系统内存,其中,像素的采样点的数量为第二数量,所述第一数量与所述第二数量是彼此独立设置的;输出合并器,其配置成将所述系统内存中的每个图块的颜色数据合并,以得到经渲染的图像。
26.在一些实施例中,所述顶点处理器进一步配置成:确定待渲染场景中的对象的顶点坐标;将所述顶点坐标从基于对象的坐标系变换到基于世界空间或规格化设备坐标空间的坐标系,以得到顶点转换坐标;基于所述顶点转换坐标,确定所述图元数据。
27.根据本技术实施例的基于图块的光栅化方法和设备以及图像渲染方法和设备,使得图块的尺寸和像素光栅化采样率不受片上存储器的容量的限制而可以灵活设置,减小图块的数量,从而减小图块划分操作的负载,并缓解了管线的阻塞,同时以简单高效的方式实现了优异的抗锯齿效果。
附图说明
28.根据参考附图详细示出本技术的构思的示例性实施例,本技术构思的上述及其他方面、目的和特征将变得清楚。在附图中,图1示意性地示出了相关的基于图块的渲染管线的框图;图2示意性地示出了经过图块划分后的屏幕空间;图3示意性地示出了逐块渲染的结果组成显示画面的过程;图4示出了本技术实施例的方法可在其中实现的片上系统的架构;图5示意性地示出了根据本技术实施例的基于图块的光栅化方法的流程图;图6示意性地示出了根据本技术实施例的基于图块的光栅化方法的管线框图;图7示意性地示出了根据本技术实施例的图块到像素四元组的过程;图8示意性地示出了根据本技术实施例的基于图块的光栅化方法的流程图;图9示意性地示出了根据本技术实施例的图块到像素四元组的过程;图10示意性地示出了将光栅化图块划分为第二子图块并存储到片上缓存的过程;图11示意性地示出了根据本技术实施例的图像渲染方法的流程图;图12示意性地示出了根据本技术实施例的基于图块的光栅化设备的框图;图13示意性地示出了根据本技术实施例的图像渲染设备的框图。
具体实施方式
29.提供以下具体实施方式以帮助理解在此描述的方法和设备。然而,在理解本技术之后,在此描述的方法和设备的各种改变、修改和替换对本领域普通技术人员来说将是显而易见的。本技术描述的操作的顺序仅为示例,除了必须按照特定次序发生的操作以外,其它操作的顺序不限于在此阐述的顺序。本领域普通技术人员将清楚对这些顺序进行合理改
变。另外,在此描述的特征可以以不同的形式被实施,而不应被解释为受到在此描述的示例的限制。此外,为了更加清楚和简明,对于本领域普通技术人员来说公知的功能和结构的描述可被省略。
30.附图和具体实施方式中,仅示出所描述的实施例中的部分。然而,应该理解,本技术的实施例不应被解释为仅限于示出的形式。并且,本技术的范围还包括所描述实施例的所有改变、等同物或替代物。
31.如在前文提到的,移动级gpu追求在小带宽的情况下提升gpu性能及画质。一种可行的实现方式是对渲染方式进行改进。在相关的技术中,可以采用基于图块的渲染(tile based rendering,tbr)架构,其主要特点是,将要渲染的屏幕空间划分成一个个的图块(tile),每个图块的坐标通过中间缓存以列表形式保存在系统内存中,渲染时,逐块将各图块调入gpu的片上存储器中,渲染所需要的数据能够从片上存储器取得,从而避免与系统内存进行缓慢的交互处理。每个图块渲染完成后,会将其结果输出到系统内存的帧缓存(frame buffer)中对应的区域。待所有图块都渲染完成后,帧缓存上的数据就是需要显示的整个画面的数据。这样的渲染方式的优点是,以更小尺寸的图块为单位进行处理,以利用容量小但读写速度更快的片上存储器,减少了gpu与系统内存频繁交互,降低了功耗和带宽。但是,这种渲染方式需要用到片上存储器作为中间缓存。
32.图1示意性地示出了相关的基于图块的渲染管线的框图。基于图块的渲染管线包括前端和后端。如图1所示,前端主要包括,在顶点处理中,执行顶点(vertex)和图元(primitive)的变换。术语“图元”表示由点、线或顶点形成的多边形。例如,图元可以是通过使顶点连接而形成的三角形。然而,图元不限于被形成为三角形。然后,进行图形处理,包括剪裁(clip)和剔除(cull)等。接下来,在图块划分过程中,完成屏幕空间的划分并记录各个图元属于哪个图块,以形成图元列表(primitive list)。图2示意性地示出了经过图块划分后的屏幕空间。屏幕空间中应显示图元p0、p2、p3。应理解,虽然图2示出了屏幕空间被划分成4行4列共16个图块(t0-t15),但这种划分形式和数量仅是示例性的。此外,图块的形状也不限于所示的矩形。然后,上述图元列表被写入到系统内存中。
33.后端主要包括,以图块为单位,对图元进行光栅化(rasterizing)。光栅化是一种基于图元数据,为图像中的各像素分配颜色的过程。光栅化过程可以为每像素进行多次采样,以改进分配给各像素的颜色的准确性。在多次采样中,一个像素包括多个采样点,每个采样点都会分配颜色,然后后续步骤会使用分配给每个采样点的颜色来计算该像素的单个整体颜色。多次采样能够使显示画面中的非竖直和非水平线更加平滑。此平滑过程也可称作抗锯齿(antialiasing)。不过,这种多次采样的方法可能需要额外的处理时间和资源,增加渲染成本。此外,在相关技术中,光栅化的采样精度和像素的着色精度严格绑定。例如,在光栅化时单个像素内的采样点的个数与为着色阶段为单个像素着色的次数相同。这使得输出颜色的数据量随光栅化采样率的提高而增大,因此增大了输出合并(output merge)阶段的压力。在对抗钜齿效果要求不高的2d图像上,这样的设计对gpu渲染管线的整体性能将造成不利的影响。
34.在光栅化之后,后端还包括,调用片上深度缓存(例如gpu的静态随机存取存储器(static random access memory,sram)中的深度数据,进行深度测试。接下来,进行纹理化和像素着色的操作,以完成图块的渲染,其中像素着色需要调用片上颜色缓存中的颜色数
据。每个图元的渲染结果都保存在深度缓存和颜色缓存上。在图块内所有图元都渲染完成之后,就会将其结果输出到位于系统内存的帧缓存中,以供所有图块渲染完成时,显示整个画面。图3示意性地示出了逐块渲染的结果组成显示画面的过程。通过基于图块的渲染管线,可以避免对系统内存(例如动态随机存取存储器(dynamic random access memory,dram)里的深度数据和颜色数据的频繁读写。
35.在上面描述的管线的各个过程中,在图块划分过程生成图元列表后,图元列表将从gpu传输到系统内存中,并在光栅化时,需要从系统内存传输到gpu。gpu对于系统内存的访问具有较大的带宽消耗。这种带宽消耗与图块划分过程中生成的图块的数量正相关,而且图块的数量对gpu管线绑定的资源、硬件的执行能力有着很大的影响。
36.图块的数量由屏幕空间的尺寸和图块的尺寸共同决定,而图块的尺寸又受到片上存储器(如,深度缓存和颜色缓存)的存储空间的限制。片上存储器的存储空间的大小一般是固定的。如果图块的尺寸越大,并且/或者,图块的光栅化采样率越高,则可能导致单个图块的数据无法装入缓存中。在一些相关的图像渲染方法中,为了适应片上存储器的要求,将图块的尺寸缩小。但是,这会带来一些缺点。例如,对于同一张图像的渲染,图块的尺寸越小,则拆分出的图块的数量越多,这会增大图块划分等模块的负载,并且可能引起渲染管线的阻塞。而且,图块的数量越多,则图元列表的数据量越大,由于图元列表需要存储在系统内存中,以供前后端交互,这使得内存的写和读的带宽受到影响。
37.为了至少解决上述问题,本技术提出了一种基于图块的光栅化方法,该方法至少可以减少片上缓存对图块尺寸和光栅化采样率的影响。图4示出了本技术实施例的方法可在其中实现的片上系统100(system on chip,soc)的架构。
38.如图4所示,片上系统100至少包括图形处理器(gpu)110、系统内存130和总线140。除了图4中示出的组件,本领域技术人员应理解,片上系统100可包括其他通用组件。
39.gpu 110可执行基于图块的图形渲染。在此使用的术语“基于图块”的意思是,显示待渲染场景的图像的屏幕空间(例如视频的每帧)被划分为多个图块,并以每个图块为基础执行渲染。基于图块的渲染架构与以像素为基础的渲染相比,可降低计算量。因此,基于图块的架渲染构适合于在具有相对低处理性能的装置上实施图形渲染方法,例如移动级gpu。
40.如图4所示,gpu 110可执行渲染管线115。渲染管线115包括前端管线116和后端管线117。在示例中,前端管线116以图块为单位,产生含有待渲染场景中对象的顶点数据、图元数据的图元列表。后端管线117基于前端管线116产生的图元列表,以每个图块为基础来进行渲染处理。当后端管线117完成渲染时,可确定像素在屏幕上对待渲染场景的表达。
41.系统内存130可以是存储由片上系统100处理的各种数据的硬件元件。例如,系统内存130可存储由gpu 110处理的数据。此外,系统内存130可存储将被gpu 110驱动的应用、驱动器等。在一些实施例中,系统内存130可包括只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性存储器、以及其它本领域普通技术人员认为适用的、能够以非暂时性方式存储并向处理器提供指令或软件以及任何关联数据、数据文件和数据结构的装置。
42.总线140可以是例如连接片上系统100中的硬件元件,以使得在硬件元件之间发送和接收数据的硬件元件。总线140可包括各种适当类型的总线,除非特别说明,否则不予以限制。
43.通过上述渲染管线115,尤其是后端管线117,可以实现本技术实施例的基于图块的光栅化方法。下面对该方法进行介绍。图5示意性地示出了根据本技术实施例的基于图块的光栅化方法的流程图。图6示意性地示出了根据本技术实施例的基于图块的光栅化方法的管线框图。如图5所示,该方法包括以下步骤:在步骤s505,将图块划分为多个第一子图块,其中所述图块通过划分用于显示待渲染场景的图像的屏幕空间而得到;在步骤s510,确定每个第一子图块是否被图元覆盖,其中所述图元通过对待渲染场景进行顶点处理而获得;在步骤s515,响应于所述第一子图块被图元覆盖,以被图元覆盖的第一子图块中的像素作为映射对象,对所述图元进行光栅化,以确定所述被图元覆盖的第一子图块的每个像素的每个采样点的第一遮罩值;在步骤s519,组合像素的采样点的第一遮罩值已确定的第一子图块,以形成光栅化图块;在步骤s520,基于所述光栅化图块,确定像素四元组数据,其中所述像素四元组数据包含所述第一遮罩值。
44.在执行根据本技术实施例的基于图块的光栅化方法前,已经例如通过前端管线116完成了图形管线的前端操作,例如包括完成了顶点和图元的变换、图形处理、以及图块划分。如前文提到的,图块划分是对用于显示待渲染场景的图像的屏幕空间进行划分以得到图块的过程。在得到图块后,根据本技术实施例的基于图块的光栅化方法将图块划分为多个第一子图块(步骤s505)。每个第一子图块的顶点坐标可以在此过程中一并得到。如图6所示,在此步骤中,图块数据(例如图块的坐标、尺寸、图像信息)被输入到图块解析器(tile parser)605中,图块解析器605接收到图块数据后,输出第一子图块的数据,例如各第一子图块的顶点坐标。所得到的第一子图块的尺寸可以根据gpu 110的性能,例如数据吞吐量,来确定。
45.然后,确定每个第一子图块是否被图元覆盖(步骤s510)。在前端操作中,图元已通过对待渲染场景进行顶点处理而得到。在此步骤中,图块解析器输出的第一子图块的数据被输入到子图块光栅化器610中。子图块光栅化器610对子图块是否被图元覆盖进行判断,这种判断可以被理解为以子图块作为映射对象,对图元进行光栅化。每个第一子图块会逐个进行此光栅化,并输出光栅化的第一子图块,即,含有子图块遮罩值的第一子图块,直到所有第一子图块完成光栅化后,将进入下一步骤。
46.确定每个第一子图块是否被图元覆盖可以通过以下方式来实现。例如,在一些实施例中,可以基于第一子图块所占据区域的范围与图元所占据区域的范围是否重合来判断确定第一子图块是否被图元覆盖。例如,首先基于第一子图块的横坐标范围和纵坐标范围界定出第一子图块所占据的区域,并且基于图元的顶点坐标界定图元所占据的区域。然后,判断这两个区域是否至少部分地重合。响应于由所述图元的顶点坐标界定的区域与由该第一子图块的横坐标范围和纵坐标范围界定的区域至少部分地重合,确定所述第一子图块被所述图元覆盖。另外,响应于由所述图元的顶点坐标界定的区域与由该第一子图块的横坐标范围和纵坐标范围界定的区域没有至少部分地重合,确定所述第一子图块未被所述图元覆盖。其中,图元的顶点坐标在前端管线的顶点处理操作中确定,第一子图块的横坐标范围
和纵坐标范围可以在前述步骤中由图块解析器605确定。
47.在另一些实施例中,可以采用采样的方式确定第一子图块是否被图元覆盖。例如,对子图块的采样点进行采样,以确定所述第一子图块的遮罩值(mask),然后基于所述第一子图块的遮罩值,确定所述第一子图块是否被图元覆盖。在本技术中,对像素的采样点进行采样,得到的遮罩值可以被称作第一遮罩值;对第一子图块的采样点进行采样,得到的遮罩值可以被称作第二遮罩值。在一些实施例中,子图块的采样点可以是子图块所包含的像素的采样点之一,此时虽然用像素的采样点进行采样,得到的是子图块的第二遮罩值,而非像素的采样点的第一遮罩值。在其它实施例中,子图块的采样点也可以是与像素采样点无关的独立采样点。
48.在另一些实施例中,可以通过比较第一子图块的横纵坐标范围与图元的最小外围矩形框的横纵坐标范围来确定每个第一子图块是否被图元覆盖。首先,确定包围所述图元的最小外围矩形框的纵坐标范围。然后,逐行确定每一行第一子图块的纵坐标范围与所述图元的纵坐标范围是否至少部分地重叠。例如,逐行确定各行第一子图块的纵坐标的最大值是否小于所述最小外围矩形框的纵坐标的最小值以及最小值是否大于所述最小外围矩形框的纵坐标的最大值。如果某一行第一子图块的纵坐标的最大值小于图元的最小外围矩形框的纵坐标的最小值,或者如果某一行第一子图块的纵坐标的最小值大于图元的最小外围矩形框的纵坐标的最大值,则说明该行第一子图块与图元并不存在重叠部分。此时,可以直接判定该行第一子图块中的每个第一子图块都没有被图元覆盖,无需对该行内的第一子图块逐一比较纵坐标范围。因此,响应于一行第一子图块的纵坐标范围与所述最小外围矩形框的纵坐标范围没有至少部分地重合,确定该行第一子图块中的第一子图块未被图元覆盖。如果一行第一子图块的纵坐标范围与所述最小外围矩形框的纵坐标范围至少部分地重合,则说明该行第一子图块中的第一子图块可能与图元存在重叠部分,在此情况下,可以继续在横向上比较该行第一子图块中的各个第一子图块与图元的最小外围矩形框的位置关系,以继续检测该行第一子图块中的各个第一子图块是否被图元覆盖。例如,确定包围所述图元的最小外围矩形框的横坐标范围,并且如果一行第一子图块的纵坐标的最大值大于或等于所述最小外围矩形框的纵坐标的最小值且最小值小于或等于所述最小外围矩形框的纵坐标的最大值,则逐个确定该行第一子图块中的各第一子图块的横坐标范围与所述最小外围矩形框的横坐标范围是否至少部分地重合,例如确定该行中各第一子图块的横坐标的最大值是否小于所述最小外围矩形框的横坐标的最小值以及最小值是否大于所述最小外围矩形框的横坐标的最大值。如果该行第一子图块中的某一第一子图块的横坐标的最大值小于图元的最小外围矩形框的横坐标的最小值,或者某一第一子图块的横坐标的最小值大于图元的最小外围矩形框的横坐标的最大值,则说明在横向上,该第一子图块位于图元的最小外围矩形框之外。此时可以直接判定该第一子图块都没有被图元覆盖。如果某一第一子图块的横坐标的最大值大于或等于图元的最小外围矩形框的横坐标的最小值且该第一子图块的横坐标的最小值小于或等于图元的最小外围矩形框的横坐标的最大值,则在一些实施例中,可以直接判定该第一子图块被图元覆盖。通过这种方法,可以非常快速地将明显没有被图元覆盖的第一子图块排除掉。
49.在另一些实施例中,也可以在横纵坐标范围与图元的最小外围矩形框的横纵坐标范围至少部分重合的第一子图块中,更精细地继续检测第一子图块是否被图元覆盖。继续
检测第一子图块是否被图元覆盖的方法可以利用判断第一子图块所占据区域的范围与图元所占据区域的范围是否重合的方法来实现,或者通过对第一子图块采样的方式来实现。这两种方式的具体操作已在前文提到,此处不再赘述。
50.在本技术的语境下,术语“行”和“列”以及“横”和“纵”仅用于表示图块或子图块的相对排列方向,例如“行”和“列”是成角度的两个方向,“横”和“纵”也是成角度的方向。但是,这些术语并不用于对限定图块或子图块的具体排列方向或绝对排列方向。“行”和“列”是一对可以转置的相对排列方式,“横”和“纵”是一对可以转置的相对方向。
51.被图元覆盖的第一子图块是有效的第一子图块,有效的第一子图块的数据可以被输入至采样点光栅化器615,以进行像素级的光栅化操作。例如,以所述第一子图块中的像素作为映射对象,对所述图元进行光栅化,以确定所述被图元覆盖的第一子图块中的每个像素中的每个采样点的第一遮罩值(步骤s515)。在该步骤中,采样点光栅化器615对有效的第一子图块中的每个图元依次进行光栅化处理,确定第一子图块内每个像素的每个采样点的第一遮罩值,然后将像素的采样点的第一遮罩值已确定的第一子图块传输至像素四元组生成器,以进行后续操作。对于未被图元覆盖的第一子图块,在一些实施例中,可以为这样的第一子图块的每个像素的采样点赋予预设的遮罩值。通过这样的配置,实质上仅对有效的第一子图块进行像素级光栅化操作,而不对未被图元覆盖的第一子图块进行像素级光栅化操作,这样可以节省大量的计算资源,避免无效的处理。
52.在图块重组器中,组合像素的采样点的第一遮罩值已确定的第一子图块,以形成光栅化图块(步骤s519)。然后在像素四元组生成器中,基于所述光栅化图块,确定像素四元组数据(步骤s520)。通过上述步骤生成的像素四元组数据含有像素的采样点的第一遮罩值。含有第一遮罩值的像素四元组可以在后续管线中被传输到着色器中,以完成图块的渲染。像素四元组(pixel quad)是指2x2的像素,其是像素着色的最小单位,即,即使一个像素四元组中仅有一个像素被图元覆盖,像素四元组中的全部四个像素都需要执行像素着色。
53.在本技术实施例的光栅化方法中,图块被进一步划分为第一子图块,尺寸得到减小,因此片上缓存将能够容纳第一子图块在后端管线中所用到和生成的数据。这样,图块的尺寸和采样率将不受片上缓存的容量大小的限制。相比于常规的基于图块的图像渲染方法,本技术实施例允许图块的尺寸实际应用需求灵活调整,例如可以显著更大,使得从屏幕空间划分出的图块的数量更小,减少了图块划分操作的负担,并且减少了图元列表的数据量,从而缓解了内存的读写带宽压力。
54.在相关技术中,光栅化采样率和着色时的目标采样率是绑定的,即,像素光栅化时像素中采样点的数量和像素着色时像素的着色次数相同。在本技术中,本技术实施例允许像素光栅化时具有更高的采样率,且在后面的像素着色中以较低的目标采样率完成,因此本技术的光栅化采样率和着色时的目标采样率可以单独设置。尤其是,光栅化采样率可以设置的较高,以提高抗锯齿效果,对于尺寸不变的图块,即使采样点数量增多,也不会影响在片上缓存内的存储。而且,目标采样率可以设置的较低,以降低着色阶段的计算量和数据阻塞率。
55.在一些实施例中,提取像素四元组的过程可以是,直接从完成像素光栅化的第一子图块提取像素四元组。图7示意性地示出了根据本技术实施例的图块到像素四元组的过程。如图7所示,图块705经过图块解析器的处理后,被划分成多个第一子图块710。然后,第
一子图块710先经过子图块光栅化器和采样点光栅化器的操作,完成针对其像素的光栅化,然后可以直接输入到像素四元组打包器630,以从完成像素光栅化的第一子图块提取像素四元组715。
56.在另一些实施例中,提取像素四元组的过程可以包括,基于片上颜色缓存的容量,对第一子图块的重组和再分解。例如,首先,确定像素存储的颜色数据的数量和像素的采样点的数量。然后,响应于像素存储的颜色数据的数量小于像素的采样点的数量,基于图形处理器的片上颜色缓存的容量,将所述光栅化图块划分为多个第二子图块。例如,如果设置像素着色器在msaa1x条件下执行,即像素存储一个颜色(着色一次),而像素的采样率在msaa2x或更高的标准下执行(即,像素的采样点的数量为2个或更多),则将所述光栅化图块划分为多个第二子图块。接下来,利用像素四元组打包器630从所述第二子图块提取像素四元组。图8示意性地示出了根据本技术实施例的基于图块的光栅化方法的流程图。图9示意性地示出了根据本技术实施例的图块到像素四元组的过程。如图8和图9所示,首先图块705被划分为第一子图块710,然后确定每个第一子图块710是否被图元覆盖,并检测是否每个第一子图块都完成此过程。如果并未达到每个第一子图块都完成确定其是否被图元覆盖,则继续此过程;如果每个第一子图块都完成确定其是否被图元覆盖,则对被图元覆盖的第一子图块确定其中的每个像素的每个采样点的遮罩值,即对像素采样点进行光栅化,并检测是否每个被图元覆盖的第一子图块都完成此过程。如果并未达到每个被图元覆盖的第一子图块都完成此过程,则继续此过程;如果每个被图元覆盖的第一子图块都完成此过程,则在针对像素采样点进行光栅化之后,第一子图块通过图块重组器620被重新组合,所得到的重新组合的光栅化图块720的尺寸和初始的未进行光栅化的图块的尺寸一致,但还含有了通过采样点光栅化而得到的像素的采样点的第一遮罩值。然后,光栅化图块720通过图块再分解器625被划分成第二子图块725。将光栅化图块720划分成第二子图块725的过程可以以片上颜色缓存730的容量为基准,例如,使片上颜色缓存730的单个存储块(bank)735能够至少容纳一个第二子图块。图10示意性地示出了将光栅化图块720划分为第二子图块725并存储到片上颜色缓存730的存储块735的过程。如图10所示,光栅化图块720按照片上缓存的容量被划分为多个第二子图块725,第二子图块725的尺寸与片上颜色缓存730的存储块735的容量相适应。例如,虽然光栅化图块720的尺寸可能超过片上颜色缓存730的存储块735的容量的限制,但第二子图块725不会。因此,图块705的尺寸和像素采样点数量可以不受片上颜色缓存的容量限制,而具有较大的尺寸(例如大于颜色缓存的容量),从而满足光栅化数据吞吐量要求。这样可以使光栅化阶段吃入高采样率的图块又不至于影响输出合并阶段的颜色数据的存储。在另一些实施例中,如果像素存储的颜色数据的数量等于像素的采样点的数量,例如像素着色器在msaa1x的条件下执行,并且像素的采样率也在msaa1x的条件下执行,则可以不将光栅化图块划分为第二子图块,而是直接从第一子图块的数据信息中提取像素四元组715数据。
57.在光栅化图块划分为第二子图块的过程中,可能出现非对齐的情况,例如光栅化图块的尺寸(包括长度和宽度)不一定是第二子图块的预设尺寸(包括预设长度和预设宽度)的整倍数。那么,在划分时,行和/或列的末端的第二子图块的实际尺寸小于其他尺寸为预设尺寸的第二子图块。在一些实施例中,如果第二子图块小于或等于预设尺寸的二分之一,那么一个存储块可以存储两个或更多个这样的第二子图块。通过这种方式,能够提高存
储块的利用率。在具体的示例中,为了将光栅化图块划分为多个第二子图块,首先基于图形处理器的片上颜色缓存的容量,确定第二子图块的预设尺寸。所述预设尺寸使得所述片上颜色缓存的单个存储块至少可以存储一个第二子图块的数据。在将光栅化图块划分为多个第二子图块时,首先按照第二子图块的所述预设尺寸,沿着行和列的方向获取第二子图块。然后判断位于行和/或列的边缘的第二子图块的实际尺寸是否小于或等于第二子图块的预设尺寸的二分之一。如果位于所述行和/或所述列的边缘的第二子图块的实际尺寸小于或等于第二子图块的预设尺寸的二分之一,则将至少两个边缘第二子图块存储到同一个存储块中。
58.根据本技术的另一方面,还提供了一种图像渲染方法。图11示意性地示出了根据本技术实施例的图像渲染方法的流程图。该方法包括前端和后端。在前端中,首先,在获取待渲染场景的几何数据后,利用顶点着色器,对待渲染场景进行顶点处理,以获得待渲染场景的图元数据。其中,顶点根据待渲染场景中的对象而生成,图元数据是由顶点着色器对顶点进行转换而得到的。顶点着色器可被编程以将顶点数据从基于对象的坐标系(对象空间)变换到基于世界空间或规格化(归一化)设备坐标空间的坐标系,以得到顶点转换坐标。通过坐标系的转换,可以把场景被拆分为对象时用于标示对象顶点位置的对象空间坐标系转换为显示经渲染对象在真实世界的位置或在显示设备屏幕中的位置。然后可以基于所述顶点转换坐标确定所述图元数据。然后,图块划分器划分用于划分显示所述待渲染场景的图像的屏幕空间,以得到图块数据,其中图块数据包括各图块的顶点坐标。接下来,图块划分器基于所述图元数据和所述图块数据,确定图块的图元数据列表,并且将所述图元数据列表存储到系统内存。
59.在该方法的后端中,首先从所述系统内存提取所述图元数据列表,然后基于所述图元数据列表对每个图块执行根据本技术任一实施例所述的基于图块的光栅化方法,以得到像素四元组数据。然后,基于像素四元组,对像素进行着色,以得到每个图块的颜色数据。其中,首先,基于像素四元组,确定像素的采样点覆盖率。所述采样点覆盖率是指,像素中,被图元覆盖的采样点占全部采样点的数量的比例。然后,基于采样点覆盖率对像素存储颜色数据。例如,像素的颜色数据基于所述图元的颜色与采样点覆盖率,将图元颜色按等级输出来确定。这减少了像素着色的运算次数。其中,在像素的采样点的数量为第一数量,且渲染时,像素存储的颜色数据的数量为第二数量的情况下,所述第一数量与所述第二数量可以是彼此独立设置的。尤其是,在一些实施例中,第一数量可以大于第二数量,即像素光栅化采样率高而着色时目标采样率低,因此能实现提高抗锯齿效果和降低着色阶段的计算量和数据阻塞率并提高渲染速度的效果。基于每个像素的颜色数据,可确定图块的颜色数据。然后,将每个图块的颜色数据存储到所述系统内存。然后,将所述系统内存中的各个图块的颜色数据合并,以得到经渲染的图像。
60.本技术实施例的图像渲染方法包含了本技术实施例的基于图块的光栅化方法。在基于图块的光栅化方法中,由于将图块划分成第一子图块,以及在一些实施例中将光栅化后的第一子图块重组成光栅化图块并再划分成第二子图块,片上缓存的大小不再是图块尺寸和采样率的设定的决定因素。而且,如图11所示,本技术实施例的图像渲染方法不包含深度缓存,这是因为,通过本技术的基于图块的光栅化方法,允许高精度的光栅化,这可以在一定程度上,能够解决深度处理的问题。由于不再利用深度缓存,因此图块划分阶段不会受
到片上深度缓存的限制,即使采样点数量增多也不会导致图块存储困难。从另一个角度说,本技术尤其适用于2d场景,在2d场景中既能实现优异的抗锯齿效果,有具有较低的运算量。本技术实施例的图像渲染方法在图块划分器对屏幕空间进行划分时,可以根据实际应用需求来灵活调整图块尺寸和图块数量,减少的图元列表的大小,降低了需要的读写内存带宽,提升了管线利用率,缓解因多采样引起的管线负载过重的问题。该图像渲染方法能够实现高光栅化采样率和低着色采样率,因此能够实现简单高效的抗锯齿。
61.根据本技术的另一方面,还提供了一种基于图块的光栅化设备。图12示意性地示出了根据本技术实施例的基于图块的光栅化设备的框图。如图12所示,该光栅化设备1200包括:图块解析器1205、子图块光栅化器1210、采样点光栅化器1215、像素四元组生成器1220。图块解析器1205配置成将图块划分为多个第一子图块,其中所述图块通过划分用于显示待渲染场景的图像的屏幕空间而得到。子图块光栅化器1210配置成确定每个第一子图块是否被图元覆盖,其中所述图元通过对待渲染场景进行顶点处理而得到。采样点光栅化器1215配置成响应于所述第一子图块被图元覆盖,以被图元覆盖的第一子图块中的像素作为映射对象,对所述图元进行光栅化,以确定所述被图元覆盖的第一子图块的每个像素的每个采样点的第一遮罩值。像素四元组生成器1220配置成从像素采样点遮罩值已确定的第一子图块提取像素四元组数据,其中所述像素四元组数据包含所述第一遮罩值。在一些实施例中,所述子图块光栅化器还配置成,响应于所述第一子图块未被图元覆盖,为所述第一子图块的每个像素的采样点赋予预设的第一遮罩值。
62.在一些实施例中,所述像素四元组生成器包括图块重组器、图块再分解器以及像素四元组打包器。所述图块重组器配置成,组合像素采样点第一遮罩值已确定的第一子图块,以形成光栅化图块。所述图块再分解器配置成,基于图形处理器的片上颜色缓存的容量,将所述光栅化图块划分为多个第二子图块。所述像素四元组打包器配置成,从所述第二子图块提取像素四元组数据。
63.在一些实施例中,被配置为确定每个第一子图块是否被图元覆盖的子图块光栅化器被进一步配置成:基于所述第一子图块的顶点坐标以及所述图元的顶点坐标,确定所述图元是否存在至少一条顶点连线经过由所述第一子图块的顶点坐标界定的区域;响应于所述图元的至少一条顶点连线经过由所述第一子图块的顶点坐标界定的区域,确定所述第一子图块被所述图元覆盖。在另一些实施例中,被配置为确定每个第一子图块是否被图元覆盖的子图块光栅化器被进一步配置成对该第一子图块的子图块采样点进行采样,以确定所述第一子图块的第二遮罩值;基于所述第一子图块的第二遮罩值,确定所述第一子图块是否被图元覆盖。
64.根据本技术的另一方面,还提供了一种图像渲染设备。图13示意性地示出了根据本技术实施例的图像渲染设备1300的框图。所述图像渲染设备1300包括顶点处理器1305、图块划分器1310、根据本技术任一实施例的基于图块的光栅化设备1200、像素处理器1320、输出合并器1325。顶点处理器1305配置成对待渲染场景进行顶点处理,以获得待渲染场景的图元数据。图块划分器1310配置成划分用于显示所述待渲染场景的图像的屏幕空间,以得到图块数据;基于所述图元数据和所述图块数据,确定每个图块的图元列表。所述光栅化设备1200根据图元列表,生成像素四元组。像素处理器1320配置成,基于所述像素四元组,确定像素的采样点覆盖率;基于采样点覆盖率,对像素存储第一数量的颜色数据,并将每个
图块的颜色数据存储到系统内存,其中,像素的采样点的数量为第二数量,所述第一数量与所述第二数量是彼此独立设置的。输出合并器1325配置成将所述系统内存中的每个图块的颜色数据合并,以得到经渲染的图像。
65.根据本技术实施例的基于图块的光栅化设备和图像渲染设备能够实现根据本技术的基于图块的光栅化方法和图像渲染方法,并获得前文描述的该方法所能实现的效果,在此不再赘述。
66.本技术所涉及的各种设备、装置和其他组件可由硬件组件来实现。硬件组件的示例包括控制器、存储器、驱动器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器和本领域普通技术人员公知的任何其他电子组件。在一个示例中,硬件组件由一个或更多个处理装置或处理器实现。处理装置、处理器可包括一个或多个处理元件,例如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器,或本领域普通技术人员公知的任何其他装置或装置的组合。这些装置或装置的组合能够以限定的方式响应并执行指令以得到期望的结果。处理装置或处理器包括或连接到一个或多个存储器,存储器用于存储被处理装置、处理器执行的代码、指令或软件在此示出和描述的特定实施方式是说明性的示例,并且不以任何方式限制本技术的范围。此外,在给出的各个附图中示出的连接线或连接件意在表示各种元件之间的示例性功能关系和/或物理或逻辑连接。应该注意,许多可选的或附加的功能关系、物理连接或逻辑连接可以存在于实际的装置中。
67.在此使用的术语仅用于解释具体实施例,因此不意味着限制。除了两个表达在语境上彼此不同之外,单数表达包括复数表达。例如,如在此使用,除非上下文明确地另有指示,否则单数形式意图也包括复数形式。术语“包括”或“包含”应该被理解为不预先排除一个或更多个其他的特性、形状、操作、组件、元件或它们的组合的存在或另外的可能性。此外,包括诸如“第一”、“第二”等的序数的术语被用于描述各种元件或在各种元件之间区分的描述方便,但是这些元件不应被这些术语所限制,并且除非在语境上具有不同的含义否则不意图表示需求的顺序或次序。除非另有指示,否则可以按照任何合适的顺序执行在此描述的所有方法的步骤。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1