CN105335994B - 执行基于图块的路径渲染的方法和设备 - Google Patents

执行基于图块的路径渲染的方法和设备 Download PDF

Info

Publication number
CN105335994B
CN105335994B CN201510489741.5A CN201510489741A CN105335994B CN 105335994 B CN105335994 B CN 105335994B CN 201510489741 A CN201510489741 A CN 201510489741A CN 105335994 B CN105335994 B CN 105335994B
Authority
CN
China
Prior art keywords
path
tile
frame
tiles
wraps
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510489741.5A
Other languages
English (en)
Other versions
CN105335994A (zh
Inventor
俞正埈
克里什纳达桑·孙迪普
柳秀晶
郑锡润
布拉泽斯·乔恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020150099232A external-priority patent/KR102423767B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN105335994A publication Critical patent/CN105335994A/zh
Application granted granted Critical
Publication of CN105335994B publication Critical patent/CN105335994B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Details Of Television Scanning (AREA)

Abstract

提供一种执行基于图块的路径渲染的方法和设备。一种渲染形成对象的至少一条路径的方法包括:基于至少一条路径的位置和前进方向为包括在帧中的每个图块设置初始值;基于设置的初始值计算包括帧中的图块之中的所述至少一条路径穿过的每个图块的卷绕数;基于设置的初始值和计算的卷绕数确定是否执行着色。

Description

执行基于图块的路径渲染的方法和设备
本申请要求于2014年8月11日提交到韩国知识产权局的第10-2014-0103626号韩国专利申请以及2015年7月13日提交到韩国知识产权局的第10-2015-0099232号韩国专利申请的优先权,所述申请的公开通过引用全部包含于此。
技术领域
本公开涉及执行基于图块的路径渲染的方法和设备。
背景技术
近来已对在执行矢量图形或路径渲染时提高图形处理单元(GPU)的加速性能的方法进行了研究。设计GPU的硬件结构基于这样的假设:所有的输入数据被配置为三角形以便加速三维图形。然而,对于路径渲染,输入数据不被配置为三角形,而是被配置为命令和顶点的组合。因此,当执行路径渲染时难以提高GPU的加速性能。
例如,为了通过使用GPU来绘制曲线,控制处理单元(CPU)首先通过使用曲线的开始点作为中心来将曲线划分为多个三角形,并指导GPU将划分的三角形重新配置为曲线。因此,当将曲线划分为多个三角形时,CPU消耗大量的时间。此外,每当CPU调用多个OpenGLAPI时都与GPU通信,并且GPU的状态发生很多变化。
关于这一点,已提出了在GPU中使用模板缓冲器的基于模板的路径渲染方法。然而,根据基于模板的路径渲染方法,在渲染期间过多地产生了输入到存储器的数据/从存储器输出的数据,从而模板缓冲器不能够进行并行处理。因此,GPU的加速性能的提高受到限制。
发明内容
提供一种执行路径渲染的方法和设备。此外,提供一种存储有程序的非暂时性计算机可读存储介质,当所述程序被计算机运行时执行上述方法。
将在接下来的描述中部分阐述另外的方面,部分通过描述将是清楚的,或者可以通过本实施例的实施而得知。
根据本发明构思的一方面,一种渲染包括路径的对象的方法包括:获取路径数据,其中,路径数据包括关于包括在所述路径中的顶点的信息和与所述路径相应的命令;基于路径数据计算包括在帧中的每个图块的卷绕数;基于图块的卷绕数来确定是否执行着色。
根据本发明构思的另一方面,一种计算像素的卷绕数的方法包括:从图形处理单元接收关于至少一条路径的信息和关于为包括在帧中的每个图块设置的第一卷绕数的信息;基于接收的信息计算与包括在帧中的每个像素相应的卷绕数;将计算的卷绕数输出到图形处理单元。
根据本发明构思的另一方面,一种渲染对象的方法包括:将包括路径的图像划分为多个图块,每个图块包括多个像素;经由不同的方法为所述多个图块之中的没有路径存在的图块所包括的像素和所述多个图块之中的路径存在的图块所包括的像素分配卷绕数。
根据本发明构思的另一方面,提供一种存储有程序的非暂时性计算机可读存储介质,当所述程序被计算机运行时执行上述方法。
根据本发明构思的另一方面,一种渲染包括路径的对象的设备包括:运算单元,被配置为获取路径数据,其中,路径数据包括关于包括在所述路径中的顶点的信息和与所述路径相应的命令;确定单元,被配置为基于图块的卷绕数来确定是否执行着色。
根据本发明构思的另一方面,一种产生包括在帧中的每个像素的卷绕数的设备,所述设备连接到被配置为渲染形成对象的至少一条路径的图形处理单元,所述设备被配置为:从图形处理单元接收关于至少一条路径的信息和关于为包括在帧中的每个图块设置的第一卷绕数的信息;基于接收的信息计算与包括在帧中的每个像素相应的卷绕数;将计算的卷绕数输出到图形处理单元。
附图说明
结合附图,根据下面的实施例的描述,这些和/或其他方面将变得清楚并更易于理解,其中:
图1是示出根据实施例的渲染设备的示例的框图;
图2是根据实施例的执行路径渲染的方法的示例的流程图;
图3示出根据实施例的卷绕数;
图4示出根据实施例的运算单元计算图块的卷绕数的示例;
图5示出根据实施例的运算单元使用路径来设置第一卷绕数的示例;
图6A和图6B是根据实施例的用于解释运算单元从包括在帧中的图块选择第一路径穿过的图块的示例的示图;
图7A至图7E示出根据实施例的运算单元从包括在帧中的图块之中选择路径穿过的图块的示例;
图8是根据实施例的用于解释运算单元获取每个图块的第一初始值的示例的示图;
图9A至图9C示出根据实施例的运算单元针对一条路径分配第一初始值的规则的示例;
图10A和图10B是根据实施例的用于解释运算单元从包括在帧中的图块之中选择第二路径穿过的图块并且获取每个图块的第二初始值的示例的示图;
图11A至图11C示出根据实施例的由运算单元执行的考虑两条或更多条路径的前进方向来分配初始值的规则的示例;
图12是根据实施例的用于解释当存在三条路径时运算单元设置图块的初始值的示例的示图;
图13A和图13B是根据实施例的用于解释运算单元从包括在帧中的图块之中选择第三路径穿过的图块并且获取每个图块的第三初始值的示例的示图;
图14示出根据实施例的运算单元使用路径来设置第一卷绕数的示例;
图15示出根据实施例的运算单元设置第一卷绕数的示例;
图16A至图16C是根据实施例的用于解释运算单元计算路径穿过的每个图块的第二卷绕数的示例的示图;
图17A至图17C是根据实施例的用于解释确定单元基于包括在帧中的每个像素的卷绕数来确定是否执行着色的示例的示图;
图18是示出根据另一实施例的渲染设备的结构的框图;
图19A至图19B是根据实施例的用于解释划分单元进行操作的示例的示图;
图20是根据实施例的包括在路径数据中的非单调曲线的示例的曲线图;
图21A和图21B是根据实施例的用于解释运算单元通过使用图20的第一单调曲线将每个预定图块的初始卷绕值更新为第一初始值的示例的示图;
图22A和图22B是根据实施例的用于解释运算单元通过使用图20的第二单调曲线将每个预定图块的第一初始值更新为第二初始值的示例的示图;
图23A和图23B是根据实施例的用于解释运算单元通过使用图20所示的从顶点P2到顶点P0的路径将每个预定图块的第二初始值更新为第三初始值的示例的示图;
图24A和图24B是根据实施例的用于解释划分单元将圆形路径转换为三次曲线的示例的示图;
图25是根据另一实施例的渲染设备的结构的框图;
图26是根据实施例的用于解释卷绕数产生器的示例的框图;
图27A和图27B是用于解释在图像处理单元(GPU)中实施的路径渲染方法的示例的示图;
图28是根据实施例的用于解释顶点着色器的操作的示例的流程图;
图29是根据实施例的用于解释顶点着色器执行图块合并(binning)的示例的流程图;
图30是根据实施例的用于解释顶点着色器计算每个像素的卷绕数并确定是否执行像素的着色的示例的流程图;
图31是根据实施例的用于解释计算像素的卷绕数的方法的示例的流程图。
具体实施方式
现在,将详细参照实施例,实施例的示例在附图中示出。
图1是示出根据实施例的渲染设备100的示例的框图。
参照图1,渲染设备100可包括运算单元110和确定单元120。在图1中,仅示出了与根据本实施例的执行路径渲染的渲染设备100相关的构成元件。因此,除图1中示出的构成元件之外,其他普通构成元件也可包括在执行路径渲染的渲染设备100中。
另外,图1中示出的渲染设备100的运算单元110和确定单元120可与一个处理器或多个处理器相应。可通过多个逻辑门的阵列来实现处理器,或者可通过普通微处理器和存储可由微处理器运行的程序的存储器的组合来实现处理器。另外,本领域中的普通技术人员将理解,可按照不同的硬件形式来实现处理器。
运算单元110获取路径数据,其中,路径数据包括关于包括在路径中的顶点的信息和与所述路径相应的命令。运算单元110基于路径数据来确定包括在帧中的每个图块的卷绕数。
例如,运算单元110可从渲染设备100的外部设备接收路径数据,并基于包括在路径数据中的关于路径的位置和前进方向的信息来为每个图块设置第一卷绕数。外部设备可以是在渲染设备100之外的存储器或中央处理单元(CPU)。运算单元110可基于第一卷绕数确定包括在帧中的图块之中的所述路径穿过的每个图块的第二卷绕数。
确定单元120基于图块的卷绕数来确定是否执行着色。
渲染设备100以图块为单位来确定卷绕数,并基于确定的卷绕数来确定是否执行着色。具体地说,运算单元110将第一卷绕数确定为包括在帧中的图块之中的所述路径没有穿过的图块的卷绕数,并第二卷绕数确定为所述路径穿过的图块的卷绕数。因此,由于仅针对包括在帧中的图块之中的所述路径穿过的图块来精确地计算卷绕数,因此渲染设备100的性能可被提高。
下面将参照图2来详细描述渲染设备100的操作的示例。
图2是根据实施例的执行路径渲染的方法的示例的流程图。
参照图2,执行路径渲染的方法包括由图1的渲染设备100按时间连续地处理的操作。
在操作210,运算单元110获取路径数据,其中,路径数据包括关于包括在路径中的顶点的信息和与所述路径相应的命令。
路径可以是构成将被渲染设备100渲染的目标(例如,对象)的元素。例如,路径可以是从一个点连接至另一点的直线或曲线。对象可包括通过连接至少一条路径形成的闭合多边形或闭合路径。渲染设备100可通过将图像或图像的部分划分为连续的小图块来执行渲染。例如,渲染设备100可将显示运动图像或静止图像的帧的整个屏幕或屏幕的部分划分为连续的小图块来执行渲染。例如,一个图块可包括32×32的像素,但是本实施例不限于此。
路径数据包括关于包括在路径中的多个顶点的每个顶点的坐标的信息以及用于通过组合顶点来形成路径的命令。顶点包括与路径的起始位置对应的顶点和与路径的结束位置对应的顶点。
例如,假设包括在帧(未示出)中的像素之中的第一像素至第二像素的直线被定义为路径,则顶点表示与第一像素和第二像素对应的点。因此,路径数据包括与第一像素对应的第一顶点的坐标、与第二像素对应的第二顶点的坐标、以及用于形成从第一顶点至第二顶点的直线的命令。因此,除了关于形成路径的顶点的每个的坐标的信息,还通过参照路径数据来获取关于路径的位置和前进方向的信息。此外,路径数据可包括关于为每个像素设置的颜色值的信息。
在操作220,运算单元110基于路径数据确定包括在帧中的每个图块的卷绕数。
运算单元110基于包括在路径数据中的关于路径的位置和前进方向的信息,针对每个图块设置第一卷绕数。运算单元110基于第一卷绕数,确定包括在帧中的图块之中的所述路径穿过的每个图块的第二卷绕数。
图块的卷绕数是包括在图块中的每个像素的卷绕数。根据路径对图块的穿过情况,图块的所有像素可具有相同的卷绕数或不同的卷绕数。
卷绕数可以是指示针对特定像素的一侧在路径的渲染期间进行的旋转的数量的预定值。
可通过在路径顺时针方向地形成完整的圆时增大预定值并在路径逆时针方向地形成完整的圆时减小所述预定值,确定卷绕数。在另一实施例中,可以按与上面相反的方式(即,通过在路径顺时针方向地形成完整的圆时减小预定值并在路径逆时针方向地形成完整的圆时增大所述预定值),确定卷绕数。
在一个示例中,当路径顺时针方向地形成完整的圆时,像素的卷绕数可以是+1。另外,当路径逆时针方向地形成完整的圆时,像素的卷绕数可以是-1。
在另一示例中,当路径顺时针方向地形成完整的圆时,像素的卷绕数可以是-1。另外,当路径逆时针方向地形成完整的圆时,像素的卷绕数可以是+1。
另外,预定值可以是整数,但本示例不限于此。换言之,当从特定像素的位置观看一侧时,卷绕数可(不进行限制地)相应于映射到在路径的渲染期间被渲染的旋转的数量的任何数。
在下面的描述中,为了方便解释,假设当路径顺时针方向地形成完整的圆时卷绕数是+1,当路径逆时针方向地形成完整的圆时卷绕数是-1。参照图3详细描述卷绕数。
图3是根据实施例的用于解释卷绕数的示图。
图3示出用于解释与包括在帧510中的像素的像素P相应的卷绕数的示图。在图3中,为了方便解释,像素P被示为人的形状。为了方便解释,图3示出沿一个方向观看像素P的人的形状。
参照图3,路径330被示出为在像素P的周围,并且路径330被示出为闭合的路径。
当虚构的射线320从像素P开始并朝向像素P的右侧在水平方向上被渲染时,虚构的射线320与路径330在总共四个顶点331、332、333和334处相交。因此,基于路径230在四个顶点331、332、333和334中的每个顶点处被渲染的方向来确定像素P的卷绕数。
详细地讲,路径330在第一顶点331处被渲染的方向是逆时针方向。因此,像素P的卷绕数首先被计算为-1。路径330在第二顶点332处被渲染的方向是顺时针方向(即,从顶部向底部),因此像素P的卷绕数第二次被计算为0(-1+1)。路径330在第三顶点333处被渲染的方向是逆时针方向,因此像素P的卷绕数第三次被计算为-1(-1+1-1)。路径330在第四顶点334处被渲染的方向是逆时针方向,因此像素P的卷绕数被最终计算为-2(-1+1-1-1)。
根据上面参照图3的描述,尽管像素P的卷绕数被描述为考虑位于像素P的右侧的路径进行计算,但是本实施例不限于此。换言之,运算单元110可考虑位于相对于像素P的位置的左侧、右侧、上侧和下侧中的至少一个的路径来计算像素P的卷绕数。
运算单元110可在不使用模板缓冲器的情况下计算包括在图块中的每个像素的卷绕数。换言之,运算单元110在不在模板缓冲器中对包括对象的三角形进行渲染的情况下,并行计算每个图块的卷绕数。因此,可防止在基于模板缓冲器的渲染过程中发生的输入/输出的数据量的增加和渲染时间的增加。
另外,运算单元110可通过使用多个线程来计算卷绕数。单个线程可被用于计算单个像素的卷绕数。由于可对多个线程进行并行处理,因此运算单元110可通过使用多个线程来同时运算多个像素的卷绕数。因此,渲染设备100可高速执行路径渲染。
返回参照图2,运算单元110仅针对路径穿过的图块详细地计算卷绕数。换言之,运算单元110针对包括在帧中的所有图块设置第一卷绕数,并仅针对包括在帧中的图块之中的路径穿过的图块,基于第一卷绕数来计算第二卷绕数。由于包括在路径不穿过的图块中的像素的卷绕数被确定为第一卷绕数,因此,包括在路径不穿过的图块中的所有像素具有相同的卷绕数。因此,渲染设备100可高速执行路径渲染。
下面参照图4描述运算单元110仅针对路径穿过的图块计算第二卷绕数的示例。
图4示出根据实施例的运算单元110计算图块的卷绕数的示例。
图4示出由多个图块形成的帧410以及形成具有星形的对象420的多条路径e0、e1、e2、e3和e4。参照图4,形成对象420的路径e0、e1、e2、e3和e4不穿过图块A。然而,形成对象420的路径e0、e1、e2、e3和e4中的路径e0和e2穿过图块B。
在卷绕数的一般计算中,计算包括在帧410中的每个像素的卷绕数。例如,可考虑存在于像素P1的一侧的所有路径e0和e1的位置和前进方向来计算像素P1的卷绕数。此外,可考虑存在于像素P2的一侧的所有路径e0、e2、e4和e1的位置和前进方向来计算包括的像素P2的卷绕数。
假设基于位于像素P1和P2的右侧的路径计算卷绕数,尽管没有路径穿过图块A,但是基于不穿过像素A的路径e0和e1来计算像素P1的卷绕数。此外,不但考虑穿过图块B的路径e0和e2而且考虑没有穿过图块B的路径e4和e1来计算像素P2的卷绕数。因此,在一般的渲染设备中,大量的计算被执行以计算P1和P2的卷绕数,这是因为即使没有穿过图块A和B的路径也被考虑。
然而,渲染设备100可在不考虑没有穿过图块的路径的情况下计算像素的卷绕数。具体地说,运算单元110基于路径的位置和前进方向为包括在帧410中的每个图块设置第一卷绕数,并且运算单元110仅针对包括在帧410中的图块之中的路径穿过的每个图块计算第二卷绕数。因此,渲染设备100可在不独立针对路径没有穿过的图块计算像素的卷绕数的情况下,确定所有像素的卷绕数。因此,渲染设备100可高速执行渲染。
返回参照图2,在操作230,确定单元120可基于图块的卷绕数确定是否执行着色。着色可由片元着色器2731执行。因此,确定单元120可确定是否命令片元着色器2731执行像素的着色。着色可以是为每个像素设置颜色的处理,但是本实施例不限于此。例如,着色可以是为每个像素设置亮度的处理或表现每个像素的纹理的处理。此外,片元着色器2731可基于纹理执行像素的着色。
例如,确定单元120可针对包括在路径没有穿过的图块中的像素,基于运算单元110设置的第一卷绕数来确定是否执行着色。此外,对于包括在路径穿过的图块中的像素,确定单元120可基于运算单元110计算的第二卷绕数来确定是否执行着色。这样,确定单元120可基于预设规则来确定是否执行着色。
以下,在下面参照图5至图15描述运算单元110为每个图块设置第一卷绕数的示例。
图5示出根据实施例的运算单元110使用路径来设置第一卷绕数的示例。
参照图5,帧510包括6×6的图块以及包括三条路径e0、e1、e2的具有三角形的对象520。路径e0是从顶点P0至顶点P1的直线路径。路径e1是从顶点P1至顶点P2的直线路径。路径e2是从顶点P2至顶点P0的直线路径。
假设基于图5的路径e0、e1、e2执行将参照图6至图13描述的运算单元110的操作。换言之,假设运算单元110接收的路径数据包括路径e0、e1、e2中的每条路径的位置和前进方向的信息。
具体地说,假设路径数据包括关于顶点P0、P1、P2的每个顶点的坐标的信息以及用于通过组合所述顶点来形成路径e0、e1、e2的命令,例如,用于渲染从顶点P0至顶点P1的直线路径的命令、用于渲染从顶点P1至顶点P2的直线路径的命令、用于渲染从顶点P2至顶点P0的直线路径的命令。
运算单元110为包括在帧中的每个图块设置第一卷绕数。具体地说,运算单元110将初始卷绕数分配给包括在帧中的每个图块。例如,初始卷绕数为0。换言之,可将0作为默认值分配给包括在帧中的每个图块。
运算单元110从包括在帧中的图块之中选择所述路径中的至少一条路径穿过的图块。运算单元110根据在每个选择的图块中穿过的路径的形状,更新位于选择的图块的一侧的每个图块的初始卷绕数。图块的所述一侧表示图块的左侧、右侧、上侧和下侧中的任意一个。具体地说,在下面详细描述运算单元110从包括在帧中的图块之中选择所述路径中的至少一条路径穿过的图块并更新位于选择的图块的一侧的每个图块的初始卷绕数的示例。
首先,运算单元110从外部设备接收路径数据。路径数据包括关于在图5所示的对象的全部三条路径e0、e1、e2的信息。运算单元110将作为初始卷绕数的0分配给包括在帧中的所有图块,并通过顺序地考虑多条路径e0、e1、e2来更新所有图块的分配的值,从而设置第一卷绕数。
具体地说,运算单元110通过基于第一路径e0的位置和前进方向,将分配给图块的初始卷绕数(例如,0)加上预定值或减去预定值,获取第一初始值WNinit_1。这样,包括在帧中的一些图块的初始卷绕数可被确定为第一初始值WNinit_1而没有改变。
随后,运算单元110通过基于第二路径e1的位置和前进方向,将第一初始值WNinit_1加上预定值或减去预定值,获取第二初始值WNinit_2。这样,包括在帧中的一些图块的第一初始值WNinit_1可被确定为第二初始值WNinit_2而没有改变。
随后,运算单元110通过基于第三路径e2的位置和前进方向,将第二初始值WNinit_2加上预定值或减去预定值,获取第三初始值WNinit_3。这样,包括在帧中的一些图块的第二始值WNinit_2可被确定为第三初始值WNinit_3而没有改变。
最终,运算单元110将第三初始值WNinit_3确定为第一卷绕数WNinit
在下面的描述中,参照图6A至图9C描述运算单元110基于第一路径e0的位置和前进方向获取第一初始值WNinit_1的示例,参照图10A至图11C描述运算单元110基于第二路径e1的位置和前进方向获取第二初始值WNinit_2的示例。此外,参照图12至图13B描述运算单元110基于第二路径e2的位置和前进方向获取第三初始值WNinit_3的示例,并最后描述将第三初始值WNinit_3确定为第一卷绕数WNinit的示例。
图6A和图6B示出根据本实施例的运算单元110从包括在帧中的图块之中选择第一路径e0穿过的图块的示例。
图6A示出第一路径e0。第一路径e0是从顶点P0至顶点P1的直线路径。假设从其左侧观看第一路径e0,可以看到,第一路径e0是逆时针方向地旋转的路径。
图6B示出包括在帧中的图块之中的第一路径e0穿过的图块620。运算单元110选择包括在帧的图块之中的第一路径e0穿过的图块620。运算单元110针对选择的图块620的每个图块产生指示第一路径e0穿过图块的信息“Edge_List”,并将该信息存储在图25的本地存储器150中。例如,信息Edge_List可按照每个图块被以比特流的形式存在本地存储器150中。图6B的每个图块620中的“e0”表示包括在每个图块620的信息Edge_List中的信息。
下面参照图7A至图7E描述运算单元110从包括在帧中的图块之中选择第一路径e0穿过的图块620的示例。
图7A至图7E示出根据本实施例的运算单元110从包括在帧中的图块之中选择路径穿过的图块的示例。
运算单元110确定路径与包括在帧中的每个图块的一侧的轮廓线相交的点。每个图块的一侧的轮廓线可以是每个图块的左侧、右侧、上侧和下侧中的任意一个的轮廓线。参照图7A,第一路径e0从顶点P0连接至顶点P1,运算单元110确定第一路径e0与每个图块的右侧轮廓线710相交的点721。
运算单元110针对确定的点721对路径进行虚拟地划分。运算单元110的对路径的虚拟划分不意味着对路径进行实际划分,而是可表示运算单元110的计算路径的中间点以准确地从包括在帧中的图块之中选择路径穿过的图块的处理。
参照图7B,运算单元110将第一路径e0虚拟地划分为从第一路径e0开始的顶点P1至确定的点721的第一子路径e01、从确定的点721至第一路径e0结束的顶点P1的第二子路径e02
运算单元110形成以划分的路径作为对角线的矩形。运算单元110选择包括形成的矩形的图块。参照图7B,运算单元110形成以第一子路径e01作为对角线的矩形。运算单元110选择包括形成的矩形的图块731。
如果路径e0与包括在帧中的图块的一侧在多个点相交,则运算单元110重复地执行上述参照图7A和图7B描述的处理。参照图7C,运算单元110确定路径e0与右侧轮廓线710相交的点722。
运算单元110针对确定的点722对路径进行虚拟地划分。参照图7D,运算单元110将第二子路径e02虚拟地划分为点721至确定的点722的第三子路径e03、从确定的点722至第二子路径e02结束的顶点P1的第四子路径e04
运算单元110形成以划分的路径作为对角线的矩形。运算单元110选择包括形成的矩形的图块。参照图7D,运算单元110形成以第三子路径e03作为对角线的矩形。运算单元110选择包括形成的矩形的图块732。
当不存在包括在帧中的图块的一侧与路径相交的更多的点时,运算单元110形成以剩余的从第一路径e0划分的子路径作为对角线的矩形,并选择包括形成的矩形的图块。
最后,运算单元110可通过组合选择的图块731、732和733确定包括在帧中的图块之中的第一路径e0穿过的图块731、732和733。
如参照图7A至图7E所描述的,运算单元110可通过将路径划分为至少一条子路径并选择包括以子路径作为对角线的矩形的图块,从包括在帧中的图块之中准确地选择出第一路径e0穿过的图块731、732和733。
当选择出第一路径e0穿过的图块731、732和733时,运算单元110通过根据穿过选择的图块731、732和733的第一路径e0的形状更新位于选择的图块731、732和733中的每个的一侧的每个图块的初始卷绕数,获取第一初始值WNinit_1。所述一侧表示图块的左侧、右侧、上侧和下侧中的任意一个。下面参照图8至图9C描述运算单元110获取每个图块的第一初始值WNinit_1的示例。
图8根据本实施例的运算单元110获取每个预定图块的第一初始值的示例。
为了便于解释,图8示出位于选择的图块810的一侧的图块为位于选择的图块810的左侧的图块821、822和823。然而,本实施例不限于此。换言之,可获取位于第一路径e0穿过的图块810的右侧、上侧和下侧中的任意一侧的图块的第一初始值WNinit_1。选择的图块810是上面参照图7A至图7E描述的第一路径e0穿过的图块731、732和733。
此外,尽管在图8中未示出,初始卷绕数被分配给包括在帧中的所有图块。例如,0可以作为默认值被分配给包括在帧中的所有图块。
参照图8,运算单元110获取位于选择的图块810的左侧的图块821、822和823之中的图块921的第一初始值WNinit_1。换言之,运算单元110延迟针对图块823和图块822的第一初始值WNinit_1的计算,其中,图块823位于包括第一路径e0开始的顶点P0的图块的左侧,图块823位于包括第一路径e0结束的顶点P1的图块的左侧。
如上参照图5所述,顶点P0是第一路径e0与第三路径e2相交的点,顶点P1是第一路径e0与第二路径e1相交的点。换言之,运算单元110延迟针对位于具有两条或更多条路径相交的顶点P0和顶点P1的图块的左侧的图块822和823的第一初始值WNinit_1的计算。运算单元110考虑穿过图块的两条或更多条路径的形状,针对图块822和823获取第二初始值WNinit_2,稍后参照图11进行描述。
运算单元110可通过根据预设规则将分配给图块821的初始卷绕数加上预定值或减去预定值来获取第一初始值WNinit_1。在一个示例中,运算单元110可通过以下方式来获取图块821的第一初始值WNinit_1:当第一路径e0顺时针方向地穿过图块810的两个相对的边界时将初始卷绕数加上预定值,而当第一路径e0逆时针方向地穿过图块810的两个相对的边界时将初始卷绕数减去预定值。在另一个示例中,运算单元110可通过以下的方式来获取图块821的第一初始值WNinit_1:当第一路径e0顺时针方向地穿过图块810的两个相对的边界时将初始卷绕数减去预定值,而当第一路径e0逆时针方向地穿过图块810的两个相对的边界时将初始卷绕数加上预定值。预定值可以是1,但是本实施例不限于此。换言之,预定值可以(不进行限制地)对应于根据路径的前进方向预先确定的任意值。
参照图9A至图9C描述通过使用运算单元110获取第一初始值WNinit_1的规则的示例。
图9A至图9C示出通过运算单元110分配第一初始值WNinit_1的规则的示例。
图9A示出路径911顺时针方向(即,从顶部到底部)地穿过图块921的两个相对的边界的情况。图9B示出路径912逆时针方向(即,从底部到顶部)地穿过图块922的两个相对的边界的情况。图9C示出路径913通过图块923的一个边界进入和离开的情况。
图9A至图9C示出的图块921、922和923可以是通过组合两个或更多个图块获取的图块。例如,当路径穿过的两个或更多个图块沿水平方向被连续地提供时,所述两个或更多个图块可被认为是分别在图9A至图9C中示出的图块921、922和923之一。参照图8,第一路径e0穿过在帧的第二行的两个相邻的图块811和第五行的两个相邻的图块812。在此情况下,第一路径e0穿过的两个相邻的图块811和812可被认为是分别在图9A至图9C中示出的图块921、922和923之一。
参照图9A,当路径911顺时针方向(即,从顶部到底部)地穿过图块921的两个相对的边界时,运算单元110通过将位于图块921的左侧的所有图块931的初始卷绕数加上1来获取第一初始值WNinit_1
参照图9B,当路径912逆时针方向(即,从底部到顶部)地穿过图块922的两个相对的边界时,运算单元110通过将位于图块922的左侧的所有图块932的初始卷绕数减去1来获取第一初始值WNinit_1
参照图9C,当路径913通过穿过图块923的一个边界而进入和离开图块923时,运算单元110通过将位于图块923的左侧的所有图块933的初始卷绕数加上0或者通过认为初始卷绕数保持原样来获取第一初始值WNinit_1
尽管在图9A至图9C中,运算单元110在路径顺时针方向地穿过图块时将初始卷绕数加上1,并且在路径逆时针方向地穿过图块时将初始卷绕数减去1,但是本实施例不限于此。在一个示例中,当路径顺时针方向地穿过图块时,运算单元110可将初始卷绕数减去1,当路径逆时针方向地穿过图块时,运算单元110可将初始卷绕数加上1。
返回参照图8,由于第一路径e0是从顶点P0连接至顶点P1的直线路径,因此第一路径e0逆时针方向地穿过图块810的两个相对的边界。因此,运算单元110通过将每个图块821的初始卷绕数减去1来获取第一初始值WNinit_1。在包括在帧中的图块之中,除了图块821之外的图块的每个的初始卷绕数可被没有改变地确定为第一初始值WNinit_1。运算单元110可按照每个图块将第一初始值WNinit_1存储在本地存储器150中。
如参照图5所描述的,当路径数据包括关于多条路径的信息时,运算单元110通过顺序地考虑所述路径来设置图块的初始值。如上参照图8至图9C所描述的,由于运算单元110基于第一路径e0的位置和前进方向获取第一初始值WNinit_1,因此,运算单元110通过基于第二路径e1的位置和前进方向更新第一初始值WNinit_1,获取第二初始值WNinit_2
下面参照图10A至图11C描述运算单元110从包括在帧910中的图块之中选择第二路径e1穿过的图块并获取每个图块的第二初始值WNinit_2的示例。
图10A和图10B示出根据本实施例的运算单元100从包括在帧中的图块之中选择第二路径e1穿过的图块并且获取图块的第二初始值WNinit_2的示例。
图10A示出第二路径e1。第二路径e1是从顶点P1至顶点P2的直线路径。因此,可以看到,第二路径e1是顺时针方向的路径。
运算单元110从包括在帧中的图块之中选择第二路径e1穿过的图块1020。运算单元110选择图块1020所使用的方法与上面参照图7A至图7E描述的方法相同。运算单元110针对选择的图块1020的每个图块产生指示第二路径e1穿过图块的信息“Edge_List”,并将该信息存储在本地存储器150中。对于已经如上面参照图6描述的那样被产生了信息Edge_List的图块,第二路径e1穿过图块的信息被附加地存储在先前产生的信息Edge_List中。在图10B的图块1020上标记的“e0、e1”或“e1”表示包括在每个图块1020的信息Edge_List中的信息。换言之,标记有“e0”和“e1”的图块是第一路径e0和第二路径e1这二者都穿过的图块。此外,标记有“e1”的图块是第二路径e1穿过的图块。
运算单元110将第二初始值WNinit_2分配给位于选择的图块1020的一侧的每个图块1031。运算单元110获取每个图块1031的第二初始值WNinit_2所使用的方法与上面参照图8至图9C描述的方法相同。换言之,由于第二路径e1顺时针方向地穿过图块1020,运算单元110通过将每个图块1031的第一初始值WNinit_1加上1来获取第二初始值WNinit_2。对于位于包括第二路径e1起始的顶点P1的图块的左侧的图块1033,运算单元110考虑穿过图块的第一路径e0和第二路径e1的形状来获取第二初始值WNinit_2。下面参照图11A至图12描述运算单元110获取每个图块1033的第二初始值WNinit_2的示例。在包括在帧中的图块之中,除了图块1031之外的图块的每个的第一初始值WNinit_1被没有改变地确定为第二初始值WNinit_2。运算单元110可按照每个图块将第二初始值WNinit_2存储在本地存储器150中。
此外,如上面参照图8所描述的,运算单元110延迟针对位于包括第二路径e1结束的顶点P2的图块的左侧的图块1032的第二初始值WNinit_2的计算。运算单元110考虑穿过图块的第二路径e1和第三路径e2的形状来获取每个图块1032的第三初始值WNinit_3
图11A至图11C示出根据实施例的由运算单元110考虑两条或更多条路径的前进方向分配初始值的规则的示例。
图11A示出两条或更多条路径1111顺时针方向(即,从顶部到底部)地穿过图块1121的彼此面对的两个边界的情况。图11B示出两条或更多条路径1112逆时针方向(即,从底部到顶部)地穿过图块1122的彼此面对的两个边界的情况。图11C示出两条或更多条路径1113经由图块1123的一个边界进入并离开的情况。
例如,参照图8至图10,第一路径e0结束的顶点和第二路径e1开始的顶点这二者都是顶点P1的情况对应于图11C。
图11A至图11C示出的图块1121、1122和1123可以是通过组合两个或更多个图块获取的图块。例如,当路径穿过的两个或更多个图块沿水平方向被连续地提供时,所述两个或更多个图块可被认为是在图11A至图11C中分别示出的图块1121、1122和1123之一。
下面参照图12描述三条路径穿过的图块的示例。
图12示出根据实施例的运算单元110设置三条路径穿过的图块的初始值的示例。
参照图12,示出8×8的图块形成的帧1210以及具有星形的对象1220。对象1220包括五条路径e0、e1、e2、e3、e4。路径e2和路径e3进入包括在帧中的一些图块1230,并沿水平方向穿过。由于路径e2和路径e3没有穿过图块1230的彼此面对的边界或者经由一个边界进入并离开,因此上述路径没有落入图11A至图11C的规则之下。因此,位于图块1230的一侧(例如,左侧)的每个图块1240的初始值WNinit没有被设置为被延迟。
当包括在对象1220中的一条路径进入图块1230时,运算单元110延迟对位于图块1230的一侧的每个图块的初始值WNinit的设置,直到包括在对象1220中的另一条路径从图块1230离开。例如,当路径e2进入图块1230时,即使下一路径e3沿水平方向穿过包括在帧中的图块1230中的一些图块,运算单元110也延迟对位于图块1230的一侧的每个图块的初始值WNinit的设置。随后,当路径e4从图块1230离开时,运算单元110设置位于图块1230的一侧的每个图块的初始值WNinit
换言之,运算单元110根据穿过图块1230的三条路径e2、e3、e4的形状,设置位于图块1230的一侧的每个图块的初始值WNinit。运算单元110可根据图11A至图11C所示的规则来设置每个图块的初始值WNinit
参照图11A,当两条或更多条路径1111顺时针方向(从顶部到底部)地穿过图块1121的彼此面对的两个边界时,运算单元1110将位于图块1121的左侧的所有图块1131的初始值或初始卷绕数加1。
参照图11B,当两条或更多条路径1112逆时针方向(从底部到顶部)地穿过图块1122的彼此面对的边界时,运算单元1110将位于图块1122的左侧的所有图块1132的初始值或初始卷绕数减去1。
参照图11C,当两条或更多条路径1113顺时针方向地进入并离开图块1123的一个边界时,运算单元1110将位于图块1123的左侧的所有图块1133的初始值或初始卷绕数加0,或者没有改变地保持初始值或初始卷绕数。
尽管在图11A至图11C中,运算单元110在路径顺时针方向地穿过图块时将初始值或初始卷绕数加上1,并且在路径逆时针方向地穿过图块时将初始值或初始卷绕数减去1,但是本实施例不限于此。在一个示例中,当路径顺时针方向地穿过图块时,运算单元110可将初始值或初始卷绕数减去1,当路径逆时针方向地穿过图块时,运算单元110可将初始值或初始卷绕数加上1。
返回参照图8和图10A,由于通过连接第一路径e0和第二路径e1获取的路径从包括顶点P1的图块的下侧进入,并经由下侧离开。因此,运算单元110将每个图块1033的第二初始值WNinit_2保持为与第一初始值WNinit_1相同的0。
图10B示出基于第一路径e0和第二路径e1获取的第二初始值WNinit_2。在图10B的图块1041、1042和1043指示的值“0”、“-1”或“1”表示图块1041、1042和1043的第二初始值WNinit_2。此外,尽管在图10B中没有示出,但是包括在帧中的图块之中除了图块1041、1042和1043之外的图块的每个图块的第二初始值WNinit_2为与初始卷绕数相同的0。
如上参照图10A至图11C所描述的,由于运算单元110基于第二路径e1的位置和前进方向获取第二初始值WNinit_2,因此运算单元110通过基于第三路径e2的位置和前进方向更新第二初始值WNinit_2来设置第三初始值WNinit_3
下面参照图13A和图13B描述运算单元110从包括在帧1110中的图块之中选择第三路径e2穿过的图块并且获取位于选择的图块的一侧的图块的第三初始值WNinit_3的示例。
图13A和图13B示出根据本实施例的运算单元110在包括在帧中的图块中选择第三路径e2穿过的图块并获取每个图块的第三初始值WNinit_3的示例。
图13A示出第三路径e2。第三路径e2是从顶点P2连接到顶点P0的直线路径。因此,可以看出第三路径e2是顺时针方向旋转的路径。
运算单元110从包括在帧中的图块中选择第二路径e1穿过的图块1320。运算单元110选择图块1320的方法与以上参照图7描述的方法相同。运算单元110针对图块1320中的每个选择的图块产生指示第三路径e2穿过该图块的信息“Edge_List”并将所述信息存储在本地存储器150中。对于信息Edge_List已经如以上参照图6A和图6B描述那样产生的图块,第三路径e2穿过的图块信息被另外存储在先前产生的信息Edge_List中。在图13B的图块上标记的“e0,e2”、“e1,e2”或“e2”表示包括在每个图块的信息Edge_List中的信息。换句话说,使用“e0”和“e2”标记的图块是第一路径e0和第三路径e2二者穿过的图块。此外,使用“e1”和“e2”标记的图块是第二路径e1和第三路径e2二者穿过的图块。此外,使用“e2”标记的图块是第三路径e2二者穿过的图块。
运算单元110通过更新位于选择的图块1320一侧的每个图块1331第二初始值WNinit_2获取第三初始值WNinit_3。例如,运算单元110可获取选择的图块1320左侧的每个图块1331的第三初始值WNinit_3。运算单元110获取每个图块1331的第三初始值WNinit_3的方法与以上参照图8、图9A和图9B描述的方法相同。详细地,因为第三路径e2顺时针方向地穿过图块1320,所以运算单元110根据图9A的规则通过将位于左侧的每个图快1331的第二初始值WNinit_2加上1来获取第三初始值WNinit_3
对于位于包括第三路径e2开始的顶点P2的图块左侧的图块1332,运算单元110考虑穿过所述图块的第二路径e1和第三路径e2的形状来确定第三初始值WNinit_3。运算单元110确定每个图块1332的第三初始值WNinit_3的示例与以上参照图11A至图11C描述的方法相同。详细地,因为第二路径e1和第三路径e2顺时针方向(从上到下)地穿过图块1321的彼此面对的两个边界,所以第二路径e1和第三路径e2对应于图11A的情况。因此,运算单元110通过将1加到每个图块1332的第二初始值WNinit_2加上1来获取第三初始值WNinit_3
此外,对于位于包括第三路径e2结束的顶点P0的图块左侧的图块1333,运算单元110考虑穿过所述图块的第三路径e2和第一路径e0的形状来确定第三初始值WNinit_3。详细地,因为第三路径e2和第一路径e0沿穿过图块1322的一侧(上侧)(即,图块1322的上表面)的同一方向进入和离开图块1322,所以第三路径e2和第一路径e0对应于图11C的情况。因此,运算单元110没有改变地将图块1333的第二初始值WNinit_2确定为第三初始值WNinit_3
对于包括在帧中的图块之中除了图块1331、1332和1333之外的图块,没有改变地将第二初始值WNinit_2确定为第三初始值WNinit_3。运算单元110可针对每个图块将第三初始值WNinit_3存储在本地存储器150中。
图13B示出基于第一路径e0、第二路径e1和第三路径e2获取的第三初始值WNinit_3。在图13B中示出的图块1341、1342、1343和1344指示的值“0”或“1”表示图块1341、1342、1343和1344中的每个图块的第三初始值WNinit_3。此外,虽然在图13B中没有示出,但是包括在帧中的图块之中除了图块1341、1342、1343和1344之外的图块的第三初始值WNinit_3是与初始卷绕数相同的0。
运算单元110将第三初始值WNinit_3确定为第一卷绕数WNinit。如以上参照图6A至图13B所述,运算单元110将通过更新初始卷绕数(例如0)获取的第三初始值WNinit_3确定为第一卷绕数WNinit
根据参照图5至图13B的描述,运算单元110考虑同一侧来针对包括在帧中的所有图块设置第一卷绕数WNinit。例如,运算单元110可根据路径穿过图块的方向,通过将预定值加到存在于该图块的左侧的每个图块的初始卷绕数或从所述初始卷绕数减去预定值来设置第一卷绕数WNinit
当对象偏向帧的一侧时,运算单元110可考虑包括在帧中的各个图块的不同侧来设置第一卷绕数WNinit。换句话说,运算单元110可考虑包括在帧中的每个图块的位置和帧中的路径的位置来设置第一卷绕数WNinit,以下参照图14和图15对此进行描述。
图14示出根据实施例的运算单元110用来设置第一卷绕数的路径的示例。
参照图14,帧1410包括6×6的图块,并且具有三角形的对象1420包括三条路径e0、e1和e2。对象1420偏向帧1410的右侧。
图15示出根据实施例的运算单元110设置第一卷绕数的示例。
图15示出运算单元110处理图14的路径的示例。参照图15,路径e0、e1和e2在帧中被依次绘制。就这一点而言,由路径e0、e1和e2形成的对象偏向帧的右侧。
运算单元110可考虑到包括在帧中的每个图块的位置和帧中的路径的位置来设置第一卷绕数WNinit。详细地,通过使用关于包括在路径数据中的路径e0、e1和e2的信息来检查对象是否偏向帧的一侧。当对象偏向帧的一侧时,运算单元110将帧划分为不包括对象的第一区域1511和包括对象的第二区域1512。运算单元110通过改变用于检查区域1511和1512中的每个区域的路径的方向来设置第一卷绕数WNinit。虽然图15示出运算单元110将帧划分为两个区域1511和1512,但是运算单元110将帧划分成的区域的数量不限于两个。
首先,运算单元110将初始卷绕数分配给包括在帧中的所有图块。例如,运算单元110可将包括在帧1510中的所有图块中的每个图块的初始卷绕数分配为0。接下来,运算单元110可使用不同侧来获取第一区域1511和第二区域1512中的每个图块的第一卷绕数WNinit。在实施例中,可按照与关于图3至图13的描述相反的方式获取面向左侧的第一区域1511的图块的第一卷绕数WNinit。在这种情况下,因为没有路径存在于第一区域1511中,所以运算单元110针对包括在第一区域1511中的任何图块,不将预定数(例如1)加到初始卷绕数或从初始卷绕数减去预定数(例如1)。换句话说,运算单元110将包括在第一区域1511中的每个图块的第一卷绕数WNinit设置为初始卷绕数(例如0)。
对于第二区域1512的图块,与第一区域1511的图块相反,可获取面向右侧的第一卷绕数WNinit。因此,参照图3至图13给出的描述可同样应用于本示例。详细地,因为没有图块存在于路径e0穿过的图块1520的左侧,所以第一卷绕数WNinit与初始卷绕数相同。
对于包括在路径e1存在的第二区域1512中的位于图块1530左侧的图块1550,获取第二初始数WNinit_2被延迟直到路径e2作为顶点被考虑。因此,第二区域1512的每个图块的第二初始数WNinit_2与第一卷绕数WNinit相同。
图块1550是包括在第二区域1512中并且存在于路径e2穿过的图块1540左侧的仅有的一个图块。在这种情况下,根据图11A的原则获取第三初始数WNinit_3。换句话说,运算单元110通过将+1加到第二初始数WNinit_2来获取图块1550的第三初始数WNinit_3
最后,运算单元110将第三初始数WNinit_3确定为第二区域1512中的每个图块的第一卷绕数WNinit
总结以上描述,整个图像或部分图像被划分为多个图块,并且包括在每个图块中的所有像素中的每个像素的第一卷绕数被确定。对于没有路径穿过的图块,如此确定的第一卷绕数被用作每个像素的最终卷绕数。对于路径穿过的图块,通过以下描述的方法来确定每个像素的最终卷绕数。详细地,对于路径穿过的图块的像素,基于第一卷绕数WNinit来计算第二初始卷绕数WNinit_2,并且第二卷绕数WN被确定为最终卷绕数。在计算第二卷绕数WN时,考虑存在于每个图块中的路径的位置和前进方向以及像素的位置。
参照图16A至图16C描述运算单元110计算路径穿过的每个图块的第二卷绕数WN的示例。
图16A至图16C示出根据实施例的运算单元110计算路径穿过的每个图快的第二卷绕数的示例。
图16A示出由6×6的图块形成的帧以及与图5中示出的对象520相同的具有三角形的对象1620。因此,如以上参照图6A至图13B所述,图16A至图16C示出运算单元110选择路径e0、e1和e2穿过的图块1630并且将第一卷绕数WNinit设置到包括在帧中的每个图块的结果。
单个图块包括多个像素。因此,由运算单元110设置的像素的卷绕数在单个图块中可以彼此不同。具体地讲,对于路径e0、e1和e2穿过的图块1630,包括在图块1630中的像素的卷绕数可以彼此不同。因此,对于包括路径的每个图块1630的像素,运算单元110基于第一卷绕数WNinit计算第二卷绕数WN。除了图块1630之外,在不包括路径的图块中包括的所有像素中的每个像素的卷绕数被确定为图块的第一卷绕数WNinit。以下参照图16B和图16C详细描述计算第二卷绕数WN的示例。
图16B示出路径e0、e1和e2穿过的图16A的图块1630中的一个图块1631。图块1631的内部区域可由第一路径e0和第二路径e1划分为两个区域。在以下的描述中,由第一路径e0和第二路径e1围绕的区域可被称为第一区域1641,除了第一区域1641之外的区域可被称为第二区域1642。
运算单元110基于图块1631的第一卷绕数WNinit计算第二卷绕数WN。详细地,运算单元110可通过使用存储在本地存储器150中的图块1631的Edge_List来计算图块1631的第二卷绕数WN。图块1631的Edge_List包括关于穿过图块1631的路径e0和e1的信息。因此,运算单元110可基于穿过图块1631的路径e0和e1的位置和前进方向来计算第二卷绕数WN。
例如,运算单元110可根据等式1来计算图块1631的第二卷绕数WN,即,包括在图块1631中的像素的卷绕数WN。
WN=WNinit+(NCW-NCCW) 【等式1】
在等式1中,“WN”表示像素的第二卷绕数,“WNinit”表示包括像素的图块的初始值。“NCW”表示基于位于像素的一侧且沿顺时针方向(即,从顶部到底部)前进的路径确定的值。“NCCW”表示基于位于像素一侧且逆时针方向(即,从底部到顶部)前进的路径确定的值。像素的一侧表示相对于像素的位置的左侧、右侧、上侧和下侧中方向与用于计算第一卷绕数的方向相同的任意一侧。例如,如果通过使用图6至图13B中的右侧方向计算第一卷绕数,则相同的右侧方向被用于计算像素的卷绕数WN。
运算单元110可将包括在第一区域1641中的像素的卷绕数WN计算为+1。详细地,因为位于像素1651的右侧的第二路径e1顺时针方向前进,所以图块1631的第一卷绕数WNinit为0,并且NCW为1。此外,因为没有逆时针方向前进的路径存在于像素1651的右侧,所以像素1651的NCCW为0。因此,运算单元110可根据等式1将像素1651的卷绕数WN计算为+1。
此外,运算单元110可将包括在第二区域1642中的像素1652的卷绕数WN计算为0。详细地,因为图块1631的第一卷绕数WNinit为0并且位于像素1652的右侧的第一路径e0逆时针方向地前进,所以像素1652的NCCW为1。因此,运算单元110可根据等式1将像素1652的卷绕数WN计算为0。
此外,运算单元110可将包括在第二区域1642中的像素1653的卷绕数WN计算为0。详细地,因为图块1631的第一卷绕数WNinit为0并且没有路径位于像素1653的右侧,所以NCW和NCCW为0。因此,运算单元110可根据等式1将像素1653的卷绕数WN计算为0。
简言之,包括在图16B的第一区域1641中的每个像素的卷绕数WN可均被计算为1,而包括在第二区域1642中的每个像素的卷绕数WN可均被计算为0。因此,虽然像素被包括在同一图块1631中,但是像素的卷绕数WN可根据由路径划分的区域而彼此不同。
图16C示出路径e0、e1和e2穿过的图16A的图块1630的另一图块1632。图块1632的内部区域可由第一路径e0划分为两个区域。在以下的描述中,当有第一路径e0以及图块1632的下边缘线和右边缘线围绕的区域是第三区域1643时,第三区域1643的像素1654的卷绕数为0。详细地,图块1632的第一卷绕数为1并且没有路径存在于像素1654的右侧,因此,NCW和NCCW为0。因此,运算单元110可根据等式1将像素1654的卷绕数WN计算为1。
此外,当图块1632中除了第三区域1643之外的区域为第四区域1644时,第四区域1644的像素1655和1656中的每个像素的卷绕数为1。详细地,因为第一路径e0位于像素1655的右侧,所以NCW为0,NCCW为1。因此,运算单元110可根据等式1将像素1655的卷绕数WN计算为0。对于像素1656的情况,与像素1655类似,NCW为0,NCCW为1。图块1632的Edge_List包括关于穿过图块1632的路径e0的位置和前进方向的信息。虽然图16C示出在图块1632中没有路径存在于像素1656的右侧,但是运算单元110通过使用Edge_List计算像素的卷绕数,因此,运算单元110将第一路径e0看作存在于像素1656的右侧。因此,因为像素1656的NCW和NCCW分别为0和1,所以运算单元110可根据等式1将像素1656的卷绕数WN计算为0。
总之,包括在图16C的第三区域1643中的每个像素的卷绕数WN可均被计算为1,而包括在第四区域1644中的每个像素的卷绕数WN可均被计算为0。
如上所述,与不包括路径的图块不同,在包括路径的每个图块中包括的每个像素的卷绕数基于图块中的像素的位置以及路径穿过图块的位置和前进方向被确定。
如以上参照图1和图2所述,确定单元120可基于图块的卷绕数确定是否执行着色。换句话说,确定单元120可基于第一卷绕数WNinit和第二卷绕数WN确定是否将用于执行像素的着色的命令发给片元着色器2371。
如以上参照图5至图16C所述,运算单元110将第一卷绕数设置到包括在帧中的每个图块,并且基于第一卷绕数计算至少一条路径穿过的每个图块的第二卷绕数。其结果是,获取与运算单元110针对包括在帧中的所有像素计算卷绕数相同的结果。因此,确定单元120可基于包括在帧中的每个像素的卷绕数确定是否执行着色。着色可表示将颜色设置到每个像素,但是本实施例不限于此。
例如,确定单元120通过使用包括在帧中的每个像素的卷绕数来确定是否将颜色设置到每个像素。例如,确定单元120可根据预设的规则来确定是否将颜色设置到每个像素。所述预设的规则可以是颜色值被分配给卷绕数不为0的像素的第一规则和颜色值被分配给卷绕数为奇数的像素的第二规则中的任何一个。参照图17A至图17C描述确定单元120确定是否执行着色的示例。
图17A至图17C示出根据实施例的确定单元120基于包括在帧中的每个像素的卷绕数确定是否执行着色的示例。
图17A示出包括在帧1710中的每个像素的卷绕数。图17B示出根据第一规则将颜色值分配给像素的结果。图17C示出根据第二规则将颜色值分配给像素的结果。
参照图17A,包括在区域1711中的像素的卷绕数被计算为0,包括在区域1712中的像素的卷绕数倍计算为+1,包括在区域1713中的像素的卷绕数倍计算为+2。
在示例中,确定单元120可根据第一规则确定是否将颜色设置到每个像素。第一规则规定颜色值被分配给卷绕数不为0的像素。参照图17B根据第一规则,确定单元120确定颜色被设置到包括在区域1712和区域1713中的像素,并且颜色不被设置到包括在区域1711中的像素。
在另一示例中,确定单元可根据第二规则确定是否将颜色设置到每个像素。第二规则规定颜色值被分配给卷绕数为奇数的像素。在本示例中,奇数表示像素的卷绕数的绝对值为奇数。例如,当卷绕数为+3时,卷绕数被确定为奇数。此外,当卷绕数为-3时,卷绕数被确定为奇数。当卷绕数为0时,卷绕数被确定为偶数。参照图17C,根据第二规则,确定单元120确定颜色被设置到包括在图17A的区域1712中的像素,并且颜色不被设置到包括在区域1711和区域1713中的像素。
确定单元120将关于被确定设置颜色的像素的信息发送到片元着色器2731。片元着色器2731将颜色值分配给由确定单元120确定的像素,以设置颜色。
根据以上描述,因为设备100仅针对包括在帧中的像素之中的路径穿过的图块计算第二卷绕数,所以可提高渲染设备100的计算速度。
此外,渲染设备100可不使用模板缓冲器来运算每个像素的卷绕数。因此,可解决由于使用模板缓冲器导致的过多产生存储器的数据输入/输出以及由于使用模板缓冲器导致的产生存储器的冗余数据输入/输出的问题。
此外,因为渲染设备100针对包括在帧中的每个像素并行地产生卷绕数,所以可以高速地执行路径渲染,并且由此可在短的时间段内实现高分辨率渲染。
图18是示出根据另一实施例的渲染设备100的结构的框图。
参照图18,除了运算单元110和确定单元120之外,渲染设备100还包括划分单元130。
运算单元110和确定单元120的操作的示例如以上参照图1至图17所描述。因此,在以下描述中将省略其详细描述。
当路径是非单调曲线时,划分单元130将非单调曲线划分为多条单调曲线。例如,划分单元130可基于德卡斯特里奥(de Casteljau's)算法将非单调曲线划分为多条单调曲线。当路径数据包括关于非单调曲线的信息时,划分单元130将关于非单调曲线的信息改变为关于多条单调曲线的信息。划分单元130将关于多条单调曲线的信息发送到运算单元110。运算单元110在包括在帧中的图块之中选择单调曲线穿过的图块,并设置包括在帧中的每个图块的第一卷绕数WNinit
以下参照图19A和图19B描述划分单元130将非单调曲线划分为多条单调曲线的示例。
图19A和图19B示出根据实施例的划分单元130进行操作的示例。
图19A示出非单调曲线1910。以上参照图4至图17C描述的路径具有正的倾斜值或负的倾斜值。如果假设参照图4至图17C描述的路径存在于二维坐标平面上,则随着路径的x坐标分量增大,路径的y坐标分量总是增大或总是减小。然而,在图19A的非单调曲线1910中,当非单调曲线1910的x坐标分量增大时,非单调曲线1910的y坐标分量不会总是增大或者不会总是减小。因此,当路径数据包括关于非单调曲线1910的信息时,运算单元110不能精确地计算包括在帧中的每个图块的第一卷绕数WNinit和第二卷绕数WN。
图19B示出两条单调曲线1911和1912。通过划分图19A中示出的非单调曲线1910获取图19B中示出的单调曲线1911和1912。假设单调曲线1911和1912存在于二维坐标平面上,当单调曲线1911的x坐标分量增大时,单调曲线1911的y坐标分量总是增大。此外,当单调曲线1912的x坐标分量增大时,单调曲线1912的y坐标分量总是减小。换句话说,在单调曲线1911或1912中,当x坐标分量增大时,y坐标分量总是增大或总是减小。因此,当路径数据包括关于单调曲线1911或1912的信息时,运算单元110可精确地计算包括在帧中的每个图块的第一卷绕数WNinit和第二卷绕数WN。
当路径数据包括关于非单调曲线1910的信息时,划分单元130将非单调曲线1910划分为两条或更多条单调曲线1911和1912。换句话说,划分单元130将关于包括在路径数据中的非单调曲线1910的信息转换为关于两条或更多条单调曲线1911和1912的信息。因此,即使当路径数据包括关于非单调曲线1910的信息时,运算单元110和确定单元120也可执行参照图4至图17C描述的以上操作。
例如,划分单元130可基于德卡斯特里奥(de Casteljau's)算法将非单调曲线1910划分为单调曲线1911和1912。德卡斯特里奥算法表示用于将一条贝塞尔(Bezier)曲线划分为两条或更多条贝塞尔曲线的算法。因为德卡斯特里奥算法为本领域技术人员所公知,因此省略其详细描述。
以下参照图20至图23B描述当路径数据包括关于非单调曲线的信息时渲染设备100进行操作的示例。
图20示出根据实施例的包括在路径数据中的非单调曲线的示例。
参照图20,帧2010包括6×6的图块,并且非单调曲线2020包括三个顶点P0、Pex和P2。假设非单调曲线2020是从作为开始顶点的顶点P0通过顶点Pex到达作为结束顶点的顶点P2的曲线。划分单元130将非单调曲线2020划分为多条单调曲线。例如,划分单元130可将非单调曲线2020划分为从顶点P0到顶点Pex的第一单调曲线2031和从顶点Pex到顶点P2的第二单调曲线2032。顶点Pex表示非单调曲线2020的倾角从正(+)改变为负(-)的点。
划分单元130可在包括在非单调曲线中的顶点之中选择非单调曲线的倾角从正(+)改变为负(-)或从负(-)改变为正(+)的顶点,并针对选择的顶点划分非单调曲线。因此,非单调曲线可被划分为两条或更多条单调曲线。
另一方面,路径数据可包括关于作为非单调曲线2020的开始点的顶点P0和作为非单调曲线2020的结束点的顶点P2的信息以及用于渲染从顶点P0到顶点P2的曲线的命令。然而,即使在路径数据不是明确地包括用于渲染从顶点P2到顶点P0的路径2040(例如,直线)的命令的情况下,也可自动地添加从顶点P2到顶点P0的路径2040。因此,当路径数据包括指示非单调曲线2020的信息时,包括非单调曲线2020和从顶点P2到顶点P0的路径2040的对象可在帧2010中被渲染。
因此,运算单元110可根据以上参照图6A至图13描述的方法将第一卷绕数WNinit设置到包括在帧2010中的每个图块。运算单元110可根据以上参照图16A至图16C描述的方法计算第一单调曲线2031和第二单调曲线2032中的至少一条曲线穿过的且路径2040也穿过的每个图块的第二卷绕数WN。确定单元120可根据以上参照图17A至图17C描述的方法确定是否针对包括在帧中的每个像素执行着色。
以下参照图21A至图23B描述运算单元110通过使用图20中示出的路径(即第一单调曲线2031、第一单调曲线2031和从顶点P2到顶点P0的路径2040)将第一卷绕数WNinit设置到包括在帧中的每个图块的示例。详细地,在图21A和图21B中,运算单元110通过使用第一单调曲线2031将每个预定图块的初始卷绕数更新为第一初始值WNinit_1。在图22A和图22B中,运算单元110通过使用第二单调曲线2032将每个预定图块的第一初始值WNinit_1更新为第二初始值WNinit_2。在图23A和图23B中,通过使用从顶点P2到顶点P0的路径2040将每个预定图块的第二初始值WNinit_2更新为第三初始值WNinit_3
运算单元110将包括在帧2010中图块的第三初始值WNinit_3设置为包括在帧2010中的所有图块的第一卷绕数WNinit。如以上参照图5所述,初始卷绕数(例如,0)被分配给包括在帧2010中的所有图块。
图21A和图21B示出根据实施例的运算单元110通过使用图20中示出的第一单调曲线2031将每个预定图块的初始值更新为第一初始值的示例。
图21A示出第一单调曲线2031。第一单调曲线2031是从顶点P0连接到顶点Pex的曲线路径。因此,第一单调曲线2031可以是逆时针方向行进的路径。
运算单元110在包括在帧中的图块之中选择第一单调曲线2031穿过的图块2130。运算单元110选择图块2130的方法与以上参照图7A至图7E描述的方法相同。运算单元110针对图块2130中的每个被选择的图块产生指示第一单调曲线2031穿过该图块的信息“Edge_List”,并将所述信息存储在本地存储器150中。在图21B的图块2130上标记的“C0”表示包括在图块2130中的每个图块的信息Edge_List中的信息。换句话说,使用C0标记的图块是第一单调曲线2031穿过的图块。
运算单元110将位于选择的图块2130的一侧的每个图块2141的初始卷绕数更新为第一初始值WNinit_1。例如,运算单元110可将位于选择的图块2130左侧的每个图块2141的初始卷绕数更新为第一初始值WNinit_1。运算单元110将每个图块2141的初始卷绕数更新为第一初始值WNinit_1的方法与以上参照图9A至图9C描述的方法相同。换句话说,因为第一单调曲线2031沿逆时针方向穿过图块2130,所以运算单元110通过从每个图块2141的初始卷绕数减去1获取第一初始值WNinit_1。如上所述,位于顶点P0和顶点P2左侧的图块2142和2143中的每个图块的第一初始值WNinit_1的更新被延迟。因此,除了图块2141之外,包括在帧中的每个图块的初始卷绕数被确定为第一初始值WNinit_1。运算单元110可根据每个图块将第一初始值WNinit_1存储在本地存储器150中。
图22A和图22B示出根据实施例的运算单元110通过使用图20的第二单调曲线2032将每个预定图块的第一初始值更新为第二初始值的示例。
图22A示出第二单调曲线2032。第二单调曲线2032是从顶点Pex连接到顶点P2的曲线路径。因此,第二单调曲线2032可以是沿顺时针方向前进的路径。
运算单元110在包括在帧中的图块之中选择第二单调曲线2032穿过的图块2230。运算单元110使用的选择图块2230的方法与以上参照图7A至图7E描述的方法相同。运算单元110针对图块2230中的每个选择的图块产生指示第二单调曲线2032穿过该图块的信息“Edge_List”,并将所述信息存储在本地存储器150中。如以上参照图21A所述,对于已经产生信息Edge_List的图块,指示第二单调曲线2032穿过的信息被另外存储在先前产生的信息“Edge_List”中。在图22B中使用“C0”和“C1”标记的图块是第一单调曲线2031和第二单调曲线2032二者均穿过的图块。使用C1标记的图块是第二单调曲线2032穿过的图块。
运算单元110将位于选择的图块2230一侧的每个图块2241的第一初始值WNinit_1更新为第二初始值WNinit_2。然而,第二单调曲线2032水平地穿过图块2230。因此,如以上参照图12所述,运算单元110延迟将第二初始值WNinit_2设置到图块2240,并且根据通过将第二单调曲线2032与穿过图块2230的从顶点P0到顶点P2的路径相连而获取的单一路径的形状将第三初始值WNinit_3分配给每个图块2240。
图23A和图23B示出根据实施例的运算单元110通过使用图20中示出的从顶点P0到顶点P2的路径2040将每个预定图块的第二初始值更新为第三初始值的示例。
图23A示出从顶点P0到顶点P2的路径2040。从顶点P0到顶点P2的路径2040是顺时针方向前进的路径。
运算单元110在包括在帧中的图块之中选择路径2040穿过的图块2330。运算单元110使用的选择图块2330的方法与以上参照图7A至图7E描述的方法相同。运算单元110针对图块2330中的每个选择的图块产生指示路径2040穿过该图块的信息“Edge_List”,并将所述信息存储在本地存储器150中。如以上参照图22A所述,对于已经产生信息Edge_List的图块,指示路径2040穿过的信息被附加地存储在先前产生的信息“Edge_List”中。在图23B中使用“C0”和“e2”标记的图块是第一单调曲线2031和路径2040二者均穿过的图块。此外,使用C0标记的图块是第一单调曲线2031穿过的图块。使用“C1”和“e2”标记的图块是第二单调曲线2032和路径2040二者均穿过的图块。使用“C0”、“C1”和“e2”标记的图块是第一单调曲线2031、第二单调曲线2032和路径2040均穿过的图块。
运算单元110将位于选择的图块2330一侧的每个图块2341的第二初始值WNinit_2更新为第三初始值WNinit_3。例如,运算单元110可将位于选择的图块2330左侧的每个图块2341的第二初始值WNinit_2更新为第三初始值WNinit_3。运算单元110将第三初始值WNinit_3更新到每个图块2341的方法与以上参照图13A和图13B描述的方法相同。换句话说,因为路径2040顺时针方向地穿过图块2330,所以运算单元110通过将每个图块2341的第二初始值WNinit_2加1来获取第三初始值WNinit_3
另一方面,对于位于包括路径2040开始的顶点P2的图块左侧的图块2342,运算单元110考虑到第二单调曲线2032的形状和穿过该图块的路径2040来分配第三初始值WNinit_3。运算单元110使用的将第三初始值WNinit_3更新到每个图块2342的方法与以上参照图11A至图11C描述的方法相同。详细地,参照图21A、图22A和图23A,因为第一单调曲线2031、第二单调曲线2032和路径2040进入并离开通过组合图块2331和图块2333获取的图块的一个边界,所以运算单元110通过保持每个图块2342的初始卷绕数来确定第三初始值WNinit_3。运算单元110可根据每个图块将第三初始值WNinit_3存储在本地存储器150中。
此外,对于位于包括路径2040结束的顶点P0的图块左侧的图块2343,运算单元110考虑到路径2040的形状和穿过该图块的第一单调曲线2031来更新第三初始值WNinit_3。运算单元110将第三初始值WNinit_3分配给图块2343的方法是以上参照图11A至图11C描述的方法。详细地,因为通过组合路径2040和第一单调曲线2031获取的单一路径通过图块2343的一个边界进入并离开图块2343,所以运算单元110将0作为第三初始值WNinit_3分配给每个图块2343。运算单元110可将图块2343的第三初始值WNinit_3存储在本地存储器150中。
除了图块2341、2342和2343,包括在帧中的每个图块的第二初始值WNinit_2被确定为第三初始值WNinit_3。运算单元110可将每个图块的第三初始值WNinit_3存储在本地存储器150中。
图23B示出第三初始值WNinit_3
在图23B中示出的图块2351和2352中的每个图块上标记的“0”或“1”表示图块2351和2352中的每个图块的第三初始值WNinit_3。此外,虽然图22B中没有示出,但是包括在帧中的除了图块2351和2352之外的图块的第三初始值WNinit_3是与初始卷绕数相同的0。
运算单元110将初始卷绕数确定为第一卷绕数WNinit。如以上参照图21A和图23B所述,运算单元110将通过更新初始卷绕数(例如,0)获取的第三初始值WNinit_3确定为第一卷绕数WNinit
如以上参照图19A至图23B所述,即使当路径数据包括关于非单调曲线的信息时,运算单元110也可设置所有图块的第一卷绕数。此外,如以上参照图16A至图16C所述,与路径穿过的图块的每个像素相应的卷绕数可通过使用第一卷绕数来计算。确定单元120可通过使用计算的像素的卷绕数来确定是否针对包括在帧中的每个像素执行着色。因此,即使在非单调曲线的情况下,渲染设备100也可精确地执行路径渲染。
图24A和图24B示出根据实施例的划分单元130将环形路径转换为三次曲线的示例。
图24A示出椭圆形路径2410。图24B示出三次曲线或三次贝塞尔曲线2420。当渲染设备100接收的路径数据包括关于椭圆形路径2410的信息时,划分单元130可将椭圆形路径2410转换为三次贝塞尔曲线2420。划分单元130可将三次贝塞尔曲线2420划分为多条单调曲线。因此,即使在椭圆形路径2410的情况下,渲染设备100也可精确地执行路径渲染。
虽然为了便于解释,以上描述将椭圆形路径2410作为示例进行描述,但是划分单元130可将环形路径转换为三次曲线。
图25是示出根据另一实施例的渲染设备100的结构的框图。
参照图25,除了运算单元110和确定单元120之外,渲染设备100还包括产生单元140和本地存储器150。
以上参照图1至图17描述了运算单元110和确定单元120的操作的示例。因此,在以下描述中将省略其详细描述。此外,与以上参照图18至图24B描述的相同,在图25的渲染设备100中还包括划分单元130。
如以上参照图1至图24B所述,由运算单元110计算像素的卷绕数。然而,根据图25的渲染设备100,由产生单元140计算像素的卷绕数,计算的卷绕数被发送到确定单元120。详细地,当确定单元120请求产生单元140计算第一像素的卷绕数时,产生单元140从本地存储器150读出关于包括第一像素的第一图块的第一卷绕数WNinit和穿过第一图块的至少一条路径的信息,即,关于路径的位置和行进方向的信息。产生单元140通过使用读取的信息来计算第一像素的卷绕数WN。产生单元140使用的计算第一像素的卷绕数WN的方法与以上参照图16A至图16C描述的方法相同。
产生单元140将第一像素的卷绕数WN发送到确定单元120。确定单元120基于从产生单元140发送的像素的卷绕数WN和从运算单元110发送的图块的第一卷绕数WNinit来确定是否执行着色。
图26示出根据实施例设备的卷绕数产生的示例。
参照图26,渲染设备100包括运算单元110、本地存储器150和确定单元120。卷绕数产生器2600位于渲染设备100的外部。
包括在渲染设备100中的运算单元110、本地存储器150和确定单元120的操作的示例与以上参照图1至图25描述的操作的示例相同。因此,在以下的描述中省略其详细描述。此外,与以上参照图18至图25描述的相同,在图26的渲染设备100中还包括划分单元130。
卷绕数产生器2600是与渲染设备100分离的独立设备。卷绕数产生器2600的操作的示例与图25的产生单元140的操作的示例相同。
图27A和图27B示出根据实施例的在GPU 2700中实施的路径渲染方法的示例。
参照图27A,在GPU 2700中执行的路径渲染方法包括在图1、图18和图25的渲染设备100中按时间顺序处理的操作。因此,可以看出,虽然在以下描述中省略了关于图1、图18和图25的渲染设备100的描述,但是关于图1、图18和图25的渲染设备100的描述适用于以下参照图27A进行的描述。
参照图27A,GPU 2700包括全局存储器2710、顶点着色器2720、像素着色器2730和帧缓冲器2740。顶点渲染器2720执行与图1、图18和图25中示出的渲染设备100相同的功能。
参照图27B,卷绕数产生器2750被示出为与GPU 2701分离的独立设备。换句话说,卷绕数产生器2750可包括在GPU 2700的内部或者可独立地位于GPU 2701的外部。
图27A和图27B中示出的像素着色器2730对包括在帧中的每个像素执行着色。首先,像素着色器2730或包括在像素着色器2730中的片元着色器2731将颜色值设置到每个像素。片元着色器2731可通过使用先前存储的纹理2732将颜色值设置到每个像素。其后,像素着色器2730对每个像素执行后处理作业。后处理作业包括混合作业或抗锯齿作业。然后,像素着色器2730将像素处理的结果发送到帧缓冲器2740,帧缓冲器2740存储从像素着色器2730发送的信息。
参照图28至图31描述顶点着色器2720的操作的示例。
图28示出根据实施例的顶点着色器2720进行操作的示例。
顶点着色器2720从全局存储器2710接收路径数据2810。顶点着色器2720针对包括在路径数据2810中的每个命令执行图块合并(tile binning)(2820)。图块合并表示将第一卷绕数设置到包括在帧中的每个图块的处理。换句话说,如以上参照图6A至图13B所述,顶点着色器2720从包括在帧中的图块之中选择路径穿过的图块,并针对包括在帧中的每个图块设置第一卷绕数。在顶点着色器2720执行图块合并的同时,指示产生的信息(例如,第一卷绕数和路径穿过的图块的位置和方向)的图块箱(tile bin)2840被存储在本地存储器2723中。
参照图29描述顶点着色器2720执行图块合并的示例。
图29示出根据实施例的顶点着色器2720执行图块合并的示例。
顶点着色器2720从路径数据2810获取命令(2910)。顶点着色器2720在包括在帧中的图块之中搜索命令将被传递到的图块(2920)。换句话说,顶点着色器2720在包括在帧中的图块之中选择路径穿过的图块(以下称为灰色图块(2930))。顶点着色器2720更新每个灰色图块2930的信息“Edge_List”(2940)。每个灰色图块2930的信息“Edge_List”可被存储在本地存储器2723中(2960)。
顶点着色器2720将第一卷绕数WNinit设置到包括在帧中的图块之中的位于灰色图块2930一侧的每个图块(以下称为白色图块)(2950)。
然后,顶点着色器2720确定在路径数据中是否存在不是用于图块合并的命令(2970)。如果存在不是用于图块合并的命令,则执行操作2910,否则,执行图28的操作2830。
返回参照图28,顶点着色器2720获取包括在帧中的任意一个图块(2830),并计算包括在获取的图块中的每个像素的卷绕数(2850)。顶点着色器2720可通过使用存储在本地存储器2723中的图块箱来计算像素的卷绕数。
然后,顶点着色器2720基于卷绕数的计算结果确定是否执行像素的着色。例如,顶点着色器2720可基于卷绕数的计算结果确定是否执行像素的着色(2860)。
参照图30详细描述图28中示出的操作2830至2860。
图30示出根据实施例的顶点着色器2720计算像素的卷绕数并确定是否执行像素的着色的示例。
顶点着色器2720获取包括在帧中的任意一个图块(3010),并确定获取的图块是否为白色图块(3020)。如果获取的图块是白色图块,则执行操作3030。否则,执行操作3040。
如果获取的图块是白色图块,则顶点着色器2720将设置的第一卷绕数WNinit确定为包括在白色图块中的每个像素的卷绕数WN(3030)。
如果获取的图块是灰色图块,则顶点着色器2720计算包括在灰色图块中的每个像素的卷绕数。顶点着色器2720可请求卷绕数产生器2750计算像素的卷绕数。卷绕数产生器2750可通过使用存储在本地存储器2723中的信息“Edge_List”来计算包括在灰色图块中的每个像素的卷绕数。卷绕数产生器2750计算像素的卷绕数的示例与以上参照图16A至图16C描述的示例相同。
顶点着色器2720基于第一规则确定是否针对每个像素执行着色(3060)。第一规则表示将颜色值分配给卷绕数值不是0的每个像素的规则(非0规则)。当顶点着色器2720基于第一规则确定是否将颜色设置到像素时,执行操作3080。否则,执行操作3070。
顶点着色器2720确定每个像素的卷绕数是否不为0(3080)。对于卷绕数不为0的像素,顶点着色器2720向像素着色器2730发出命令,以对像素执行着色(3095)。
顶点着色器2720基于第二规则确定是否执行每个像素的着色(3070)。第二规则表示将颜色值分配给卷绕数值是奇数的每个像素的规则(奇偶规则)。当顶点着色器2720基于第二规则确定是否将颜色设置到像素时执行操作3090。否则,处理终止。
如上所述,参照操作3060和3070,顶点着色器2720可基于第一规则和第二规则将颜色值分配给每个像素,但是本实施例不限于此。例如,顶点着色器2720可基于第一规则的逆非零规则或第二规则的逆奇偶规则将颜色值分配给每个像素。
顶点着色器2720确定每个像素的卷绕数是奇数还是偶数(3090)。奇数表示像素的卷绕数的绝对值是奇数。例如,当卷绕数为+3时,卷绕数被确定为奇数。当卷绕数为-3时,卷绕数也被确定为奇数。对于卷绕数是奇数的像素,顶点着色器2720指示像素着色器2730执行像素的着色(3095)。
返回参照图28,在指示像素着色器2730执行像素的着色之前,顶点着色器2720确定在包括在帧中的图块中是否存在具有卷绕数未被计算的像素的图块(2870)。如果存在具有卷绕数未被计算的像素的图块,则执行操作2830。否则,顶点着色器2720指示像素着色器2730执行像素的着色。
图31是用于解释根据实施例的计算像素的卷绕数的方法的示例的流程图。
参照图31,计算像素的卷绕数的方法包括在图26和图27B中示出的卷绕数产生器2600和2750中按时间顺序处理的操作。因此,可以看出,虽然在以下描述中省略了对图26和图27B中示出的卷绕数产生器2600和2750的描述,但是对图26和图27B中示出的卷绕数产生器2600和2750的描述适用于参照图31描述的计算像素的卷绕数的方法。
在操作3110,卷绕数产生器2600和2750从GPU 2700和2701接收关于至少一条路径的信息和关于设置到包括在帧中的每个图块的第一卷绕数的信息。
在操作3120,卷绕数产生器2600和2750通过使用接收的信息计算与包括在帧中的每个像素相应的卷绕数。
在操作3130,卷绕数产生器2600和2750将计算的卷绕数发送到GPU2700和2701。
另一方面,上述方法还可通过介质(例如,计算机可读介质)中/上的计算机可读代码/指令来执行,以控制至少一个处理元件实现上述的任何实施例。所述介质可对应于允许存储和/或传输计算机可读代码的任何介质/媒体。计算机可读代码可以以各种方式在介质上记录/传送,介质的示例包括诸如磁存储介质(例如,ROM、软盘、硬盘等)和光学记录介质(例如,CD-ROM或DVD)的记录介质。
根据以上参照图1至图31的描述,渲染设备将相同的卷绕数分配给包括在路径未穿过的每个图块中的所有像素,并且仅针对包括在帧中的像素之中包括在路径穿过的图块中的每个像素计算卷绕数。因此,可提高渲染设备的性能。
此外,可不使用模板缓冲器来执行路径渲染。因此,可解决由于使用模板缓冲器导致的存储器输入/输出的过多产生和冗余存储器输入/输出的产生的问题。
此外,因为并行地产生关于包括在帧中的每个像素的卷绕数,所以可以高速地执行路径渲染,并且可在短的时间段内实现高分辨率渲染。
应该理解,这里描述的示例性实施例应该被考虑为描述性意义,而不是限制的目的。对每个示例中的特征或方面的描述通常应被认为可应用于其他实施例中的其他类似特征或方面。
尽管已经参照附图描述了本发明构思的一个或更多个实施例,但是本领域普通技术人员将理解,可在不脱离由权利要求限定的本发明构思的精神和范围的情况下,进行形式和细节上的各种改变。

Claims (34)

1.一种渲染包括路径的对象的方法,所述方法包括:
获取路径数据,其中,路径数据包括关于包括在所述路径中的顶点的信息和与所述路径相应的命令;
基于路径数据计算包括在帧中的每个图块的卷绕数;
基于图块的卷绕数来确定是否执行着色,
其中,计算卷绕数的步骤包括:
基于路径数据设置包括在所述帧中的每个图块的第一卷绕数;
基于第一卷绕数,计算包括在所述帧中的图块之中的所述路径穿过的每个图块的第二卷绕数。
2.根据权利要求1所述的方法,其中,包括在所述帧中的图块之中的所述路径没有穿过的每个图块的卷绕数对应于第一卷绕数,包括在所述帧中的图块之中的所述路径穿过的每个图块的卷绕数对应于第二卷绕数。
3.根据权利要求1所述的方法,其中,设置第一卷绕数的步骤包括:
向包括在所述帧中的每个图块分配初始卷绕数;
从包括在所述帧中的图块之中选择所述路径穿过的图块;
根据穿过选择的图块的所述路径的形状,更新位于选择的图块的一侧的每个图块的初始卷绕数。
4.根据权利要求3所述的方法,其中,所述一侧根据所述路径在所述帧中的位置和每个图块的位置而被确定。
5.根据权利要求3所述的方法,其中,选择图块的步骤包括:
确定所述路径上的与包括在所述帧中的图块的一侧相交的至少一个点;
基于确定的至少一个点划分所述路径;
从包括在所述帧中的图块之中选择包括以划分的路径作为对角线的矩形的图块。
6.根据权利要求3所述的方法,其中,在更新初始卷绕数的步骤中,当所述路径顺时针方向地穿过选择的图块的彼此面对的两个边界时,将初始卷绕数加上预定值;当所述路径逆时针方向地穿过选择的图块的彼此面对的两个边界时,将初始卷绕数减去所述预定值。
7.根据权利要求3所述的方法,其中,在更新初始卷绕数的步骤中,当所述路径顺时针方向地穿过选择的图块的彼此面对的两个边界时,将初始卷绕数减去预定值;当所述路径逆时针方向地穿过选择的图块的彼此面对的两个边界时,将初始卷绕数加上所述预定值。
8.根据权利要求1所述的方法,其中,包括在所述路径穿过的图块中的每个像素的第二卷绕数是根据所述路径的前进方向而被计算的。
9.根据权利要求4所述的方法,其中,所述一侧根据每个像素的位置和所述路径的位置而被确定。
10.根据权利要求8所述的方法,其中,计算第二卷绕数的步骤包括:
检查所述路径是否位于包括在所述路径穿过的图块中的每个像素的一侧;
当所述路径的前进方向是顺时针方向时,通过将第一卷绕数加上预定值来计算第二卷绕数;当确定的路径的前进方向是逆时针方向时,通过将第一卷绕数减去所述预定值来计算第二卷绕数。
11.根据权利要求8所述的方法,其中,计算第二卷绕数的步骤包括:
检查所述路径是否位于包括在所述路径穿过的图块中的每个像素的第三侧;
当所述路径的前进方向是顺时针方向时,通过将第一卷绕数减去预定值来计算第二卷绕数;当确定的路径的前进方向是逆时针方向时,通过将第一卷绕数加上所述预定值来计算第二卷绕数。
12.根据权利要求1所述的方法,其中,基于预设规则来确定是否执行着色。
13.根据权利要求1所述的方法,其中,当路径数据包括与非单调曲线相应的信息时,所述方法还包括:将所述非单调曲线划分为多个单调曲线,
其中,基于每个划分的单调曲线的位置和前进方向来计算卷绕数。
14.根据权利要求13所述的方法,其中,基于德卡斯特里奧算法来将所述非单调曲线划分为多个单调曲线。
15.一种计算像素的卷绕数的方法,所述方法包括:
从图形处理单元接收关于至少一条路径的信息和关于为包括在帧中的每个图块设置的第一卷绕数的信息;
基于接收的信息计算与包括在所述帧中的每个像素相应的卷绕数;
将计算的卷绕数输出到图形处理单元,
其中,计算卷绕数的步骤包括:
基于第一卷绕数,计算包括在所述帧中的图块之中的所述至少一条路径穿过的每个图块的第二卷绕数。
16.一种渲染包括路径的对象的设备,所述设备包括:
运算单元,被配置为获取路径数据,其中,路径数据包括关于包括在所述路径中的顶点的信息和与所述路径相应的命令;
确定单元,被配置为基于图块的卷绕数来确定是否执行着色,
其中,运算单元还被配置为基于路径数据确定包括在帧中的每个图块的第一卷绕数,并基于第一卷绕数,计算包括在所述帧中的图块之中的所述路径穿过的每个图块的第二卷绕数。
17.根据权利要求16所述的设备,其中,包括在所述帧中的图块之中的所述路径没有穿过的每个图块的卷绕数对应于第一卷绕数,包括在所述帧中的图块之中的所述路径穿过的每个图块的卷绕数对应于第二卷绕数。
18.根据权利要求16所述的设备,其中,运算单元还被配置为:
向包括在所述帧中的每个图块分配初始卷绕数;
从包括在所述帧中的图块之中选择所述路径穿过的图块;
根据穿过选择的图块的所述路径的形状,更新位于选择的图块的一侧的每个图块的初始卷绕数。
19.根据权利要求18所述的设备,其中,所述一侧根据在所述帧中所述路径的位置和每个图块的位置被确定。
20.根据权利要求18所述的设备,其中,运算单元还被构造为:
确定所述路径上的与包括在所述帧中的图块的一侧相交的至少一个点;
基于确定的至少一个点划分所述路径;
从包括在所述帧中的图块之中选择包括以划分的路径作为对角线的矩形的图块。
21.根据权利要求18所述的设备,其中,运算单元还被配置为:当所述路径顺时针方向地穿过选择的图块的彼此面对的两个边界时,将初始卷绕数加上预定值;当所述路径逆时针方向地穿过选择的图块的彼此面对的两个边界时,将初始卷绕数减去所述预定值。
22.根据权利要求18所述的设备,其中,运算单元还被配置为:当所述路径顺时针方向地穿过选择的图块的彼此面对的两个边界时,将初始卷绕数减去预定值;当所述路径逆时针方向地穿过选择的图块的彼此面对的两个边界时,将初始卷绕数加上所述预定值。
23.根据权利要求16所述的设备,其中,运算单元还被配置为:根据所述路径的前进方向,计算包括在所述路径穿过的图块中的每个像素的第二卷绕数。
24.根据权利要求18所述的设备,其中,所述一侧根据每个像素的位置和所述路径的位置而被确定。
25.根据权利要求23所述的设备,其中,运算单元还被配置为:
检查所述路径是否位于包括在所述路径穿过的每个像素的一侧;
当所述路径的前进方向是顺时针方向时,通过将第一卷绕数加上预定值来计算第二卷绕数;当确定的路径的前进方向是逆时针方向时,通过将第一卷绕数减去所述预定值来计算第二卷绕数。
26.根据权利要求23所述的设备,其中,运算单元还被配置为:
检查所述路径是否位于所述路径穿过的每个像素的一侧;
当所述路径的前进方向是顺时针方向时,通过将第一卷绕数减去预定值来计算第二卷绕数;当确定的路径的前进方向是逆时针方向时,通过将第一卷绕数加上所述预定值来计算第二卷绕数。
27.根据权利要求16所述的设备,其中,确定单元还被配置为基于预设规则来确定是否执行着色。
28.根据权利要求16所述的设备,还包括:划分单元,被配置为当路径数据包括与非单调曲线相应的信息时,将所述非单调曲线划分为多个单调曲线,
其中,运算单元还被配置为基于每个划分的单调曲线的位置和前进方向来计算卷绕数。
29.根据权利要求28所述的设备,其中,划分单元还被配置为基于德卡斯特里奧算法来将所述非单调曲线划分为多个单调曲线。
30.一种产生包括在帧中的每个像素的卷绕数的设备,所述设备连接到被配置为渲染形成对象的至少一条路径的图形处理单元,所述设备被配置为:
从图形处理单元接收关于至少一条路径的信息和关于为包括在帧中的每个图块设置的第一卷绕数的信息;
基于接收的信息计算与包括在所述帧中的每个像素相应的卷绕数;
将计算的卷绕数输出到图形处理单元,
其中,计算卷绕数的步骤包括:
基于第一卷绕数,计算包括在所述帧中的图块之中的所述至少一条路径穿过的每个图块的第二卷绕数。
31.一种渲染对象的方法,所述方法包括:
将包括路径的图像划分为多个图块,其中,每个图块包括多个像素;
基于所述路径确定包括至少一条路径的对象是否偏向图像的帧的一侧;
响应于确定对象偏向图像的帧的所述一侧,经由不同的方法为所述多个图块之中的没有路径存在的图块所包括的像素和所述多个图块之中的路径存在的图块所包括的像素分配卷绕数;
基于分配的卷绕数来确定是否执行着色。
32.根据权利要求31所述的方法,其中,相同的卷绕数被分配给包括在没有路径存在的每个图块中的所有像素。
33.根据权利要求31所述的方法,其中,根据每个像素的位置和存在于每个图块中的路径的位置和前进方向,为包括在路径存在的每个图块中的像素分配卷绕数。
34.根据权利要求31所述的方法,还包括:当路径是非单调曲线时,将所述非单调曲线划分为多个单调曲线,
其中,经由不同的方法为包括在没有单调曲线存在的图块中的像素和包括在单调曲线存在的图块中的像素分配卷绕数。
CN201510489741.5A 2014-08-11 2015-08-11 执行基于图块的路径渲染的方法和设备 Active CN105335994B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2014-0103626 2014-08-11
KR20140103626 2014-08-11
KR1020150099232A KR102423767B1 (ko) 2014-08-11 2015-07-13 타일 기반 경로 렌더링을 수행하는 방법 및 장치.
KR10-2015-0099232 2015-07-13

Publications (2)

Publication Number Publication Date
CN105335994A CN105335994A (zh) 2016-02-17
CN105335994B true CN105335994B (zh) 2020-09-29

Family

ID=53836439

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510489741.5A Active CN105335994B (zh) 2014-08-11 2015-08-11 执行基于图块的路径渲染的方法和设备

Country Status (3)

Country Link
US (4) US9984497B2 (zh)
EP (1) EP2985735B1 (zh)
CN (1) CN105335994B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102354989B1 (ko) 2015-04-14 2022-01-24 삼성전자주식회사 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
KR102426669B1 (ko) 2015-08-03 2022-07-28 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.
KR102443697B1 (ko) 2015-09-11 2022-09-15 삼성전자주식회사 경로 스트로크를 수행하는 방법 및 장치
KR102651125B1 (ko) 2016-04-06 2024-03-26 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치
KR102618560B1 (ko) 2016-06-15 2023-12-27 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치
KR102657587B1 (ko) * 2016-11-21 2024-04-15 삼성전자주식회사 커브 렌더링을 수행하는 방법 및 장치.
KR102446865B1 (ko) * 2017-09-12 2022-09-23 삼성전자주식회사 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법
KR20200073697A (ko) 2018-12-14 2020-06-24 삼성전자주식회사 경로를 포함하는 객체를 렌더링하는 장치, 이를 포함하는 컴퓨팅 장치 및 이의 렌더링 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7408553B1 (en) * 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
GB2469525A (en) * 2009-04-17 2010-10-20 Advanced Risc Mach Ltd Graphics Filled Shape Drawing
CN101911123A (zh) * 2008-01-15 2010-12-08 三菱电机株式会社 图形描绘装置以及图形描绘方法
CN103810742A (zh) * 2012-11-05 2014-05-21 正谓有限公司 图像渲染方法和系统
CN103871019A (zh) * 2012-12-17 2014-06-18 辉达公司 优化三角形拓扑用于路径渲染

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4343344B2 (ja) 1998-09-11 2009-10-14 キヤノン株式会社 ラスタ形式のグラフィックオブジェクトを用いたイメージの高速レンダリング方法
JP4365950B2 (ja) 1998-09-11 2009-11-18 キヤノン株式会社 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
US6693719B1 (en) * 1998-09-16 2004-02-17 Texas Instruments Incorporated Path to trapezoid decomposition of polygons for printing files in a page description language
US6975318B2 (en) 2002-06-25 2005-12-13 Intel Corporation Polygon binning process for tile-based rendering
US7167171B2 (en) 2004-06-29 2007-01-23 Intel Corporation Methods and apparatuses for a polygon binning process for rendering
KR100762811B1 (ko) 2006-07-20 2007-10-02 삼성전자주식회사 하프 플레인 에지 함수를 이용한 타일 비닝 방법 및 시스템
US7872648B2 (en) * 2007-06-14 2011-01-18 Microsoft Corporation Random-access vector graphics
US20090046098A1 (en) 2007-08-14 2009-02-19 Stmicroelectronics S.R.L. Primitive binning method for tile-based rendering
US8040357B1 (en) * 2007-08-15 2011-10-18 Nvidia Corporation Quotient remainder coverage system and method
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
US8072452B1 (en) * 2008-04-18 2011-12-06 Adobe Systems Incorporated Efficient multi-resolution curve rendering
JP5172640B2 (ja) 2008-12-18 2013-03-27 三菱電機株式会社 ベクトル図形描画装置
WO2010134124A1 (ja) 2009-05-19 2010-11-25 三菱電機株式会社 ベクトル図形描画装置
KR101609266B1 (ko) 2009-10-20 2016-04-21 삼성전자주식회사 타일 기반의 랜더링 장치 및 방법
US20110285718A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Point containment for quadratic bèzier strokes
KR102018699B1 (ko) 2011-11-09 2019-09-06 삼성전자주식회사 타일 비닝 장치 및 방법
US9330495B2 (en) 2012-08-09 2016-05-03 Qualcomm Incorporated Extending DX11 GPU for programmable vector graphics

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7408553B1 (en) * 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
CN101911123A (zh) * 2008-01-15 2010-12-08 三菱电机株式会社 图形描绘装置以及图形描绘方法
GB2469525A (en) * 2009-04-17 2010-10-20 Advanced Risc Mach Ltd Graphics Filled Shape Drawing
CN103810742A (zh) * 2012-11-05 2014-05-21 正谓有限公司 图像渲染方法和系统
CN103871019A (zh) * 2012-12-17 2014-06-18 辉达公司 优化三角形拓扑用于路径渲染

Also Published As

Publication number Publication date
US11694393B2 (en) 2023-07-04
EP2985735B1 (en) 2019-12-04
EP2985735A2 (en) 2016-02-17
US11074744B2 (en) 2021-07-27
US20160042561A1 (en) 2016-02-11
US20210375030A1 (en) 2021-12-02
CN105335994A (zh) 2016-02-17
US20180300946A1 (en) 2018-10-18
US10672184B2 (en) 2020-06-02
EP2985735A3 (en) 2016-03-02
US9984497B2 (en) 2018-05-29
US20200320780A1 (en) 2020-10-08

Similar Documents

Publication Publication Date Title
CN105335994B (zh) 执行基于图块的路径渲染的方法和设备
CN105006010B (zh) 执行路径渲染的方法和设备
KR102116708B1 (ko) 그래픽스 프로세싱 유닛
KR20150039495A (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US9530241B2 (en) Clipping of graphics primitives
KR102443697B1 (ko) 경로 스트로크를 수행하는 방법 및 장치
WO2015160901A1 (en) Stochastic rasterization using enhanced stencil operations on a graphics processing unit (gpu)
KR102399686B1 (ko) 3d 렌더링 방법 및 장치
CN106056657B (zh) 执行针对路径渲染的图块合并的方法和设备
US9892534B2 (en) Method and apparatus for performing path rendering
KR102423767B1 (ko) 타일 기반 경로 렌더링을 수행하는 방법 및 장치.
KR20090059800A (ko) 폴리곤의 특징에 적응된 순서로 래스터화하는 래스터화엔진 및 3차원 그래픽스 시스템
KR102618560B1 (ko) 경로 렌더링을 수행하는 방법 및 장치
CN111325820A (zh) 渲染包括路径的对象的设备、计算装置及其渲染方法
KR20160131457A (ko) 커브 렌더링을 수행하는 방법 및 장치.
JP2010072917A (ja) 描画装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant