CN108416729B - Gpu中一种线段反走样的实现装置和方法 - Google Patents
Gpu中一种线段反走样的实现装置和方法 Download PDFInfo
- Publication number
- CN108416729B CN108416729B CN201810261849.2A CN201810261849A CN108416729B CN 108416729 B CN108416729 B CN 108416729B CN 201810261849 A CN201810261849 A CN 201810261849A CN 108416729 B CN108416729 B CN 108416729B
- Authority
- CN
- China
- Prior art keywords
- line
- segment
- line segment
- segments
- area ratio
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明公开了GPU中一种线段反走样的实现装置和方法,该装置包括:接收数据FIFO、线段端点重排序、扫描线范围确定、片段生成、面积比计算和融合六个模块,实现方法为:通过构造一个由四条直线围成的区域,通过生成扫描线,生成扫描线上片段,将片段划分成子片段,利用子片段与边界直线的位置关系和到原线段的距离确定子片段与线段扩展矩形的位置关系,进而得到片段面积比,最后利用面积比执行融合操作,以实现线段反走样的效果。
Description
技术领域
本发明主要涉及到GPU设计领域,特指GPU中点线段反走样实现领域。
背景技术
线段是GPU的基本图元之一,线段是连续信号,而光栅扫描显示器是由离散的点构成的,为了在光栅设备上显示线段就必须在离散位置上采样,这时就会出现走样现象,为了减小走样效果的影响,目前一般采用的反走样方法:一种超采样方法称为全屏反走样,即通过高分辨率绘制场景,然后把相邻的采样点进行加权平均得到一幅图形,这种方法由于场景需要绘制多次,对速度影响较大;另外一种方法是将像素看做一个区域而不是一个点,对每个像素区域的不同位置多次采样,将采样结果加权平均得到该像素的alpha值,与背景融合达到反走样效果,该方法无需多次绘制同一帧,特别是在线段反走样领域比较常用,这种做法需要将线段扩展成一个矩形,在计算矩形四个顶点坐标时需要用到三角函数和开方等超越函数运算,这些运算对系统的效率影响较大。
发明内容
本发明要解决的问题就在于:去掉采用超采样方法实现线段反走样的线段扩展操作,生成一个由四条直线围成的区域,通过生成扫描线,生成扫描线上片段,将片段划分成子片段,利用子片段与边界直线的位置关系和到原线段的距离确定子片段与线段扩展矩形的位置关系,进而得到片段面积比。
发明内容:
本发明公开了GPU中一种线段反走样的实现装置,其特征为:由以下模块构成:
(1)接收数据FIFO模块:用于接收经过顶点处理、裁剪、屏幕坐标变换后的线段顶点及对应的属性;
(2)预处理模块:用于将线段L端点排列成从左向右的顺序,同时分别生成经过线段两个端点并且与待绘制线段垂直的直线L0和L1;
(3)扫描线范围确定模块:用于根据线段的主要方向将线段L沿与主要方向垂直的方向,以线段L为起点分别向两个方向进行平移,得到两条线段,根据主要方向确定扫描线范围;
(4)片段生成模块:用于逐个生成扫描线上的片段;
(5)面积比计算模块:用于将片段划分成子片段,通过判断子片段与L0和L1的位置关系以及与线段L的距离确定子片段的权值,所有子片段的权值相加得到片段的权值作为面积比;
(6)融合模块:将面积比作为源融合因子,一减面积比作为目的融合因子将片段颜色与背景颜色进行融合,最后写入帧存;
本发明还公开了GPU中一种线段反走样的实现方法,其特征为:按照以下步骤执行:
步骤1:接收数据:接收经过顶点处理、裁剪、屏幕坐标变换后的线段顶点及对应的属性以及线段宽度,设读取到的线段两个端点坐标为A(xA,yA)、B(xB,yB),线段的宽度为w;
步骤2:预处理:将线段按照从左到右的方向重排列,设重排列后线段的左侧端点坐标为P0(x0,y0)右侧端点坐标为P1(x1,y1),那么线段的点向式方程为(x-x0)·(y1-y0)-(y-y0)·(x1-x0)=0,线段的方向为从P0→P1,经过P0点与L垂直的线段方程为L0:(x-x0)·(x1-x0)+(y-y0)·(y1-y0)=0,经过P1点与L垂直的线段方程为L1:(x-x1)·(x1-x0)+(y-y1)·(y1-y0)=0;
步骤3:确定扫描范围:当水平方向为主要方向即|x1-x0|≥|y1-y0|时,将直线L在垂直方向分别向下、向上平移w,分别得到两条直线方程此时扫描线范围为x=x0-w至x=x1+w之间的整数;当垂直方向为主要方向即|x1-x0|<|y1-y0|时,将直线L在水平方向向左、向右平移w,分别得到两条直线方程此时扫描线范围为y=y0-w至y=y1+w之间的整数;
步骤4:生成片段:当水平方向为主要方向时,分别计算扫描线与L3和L2的交点纵坐标PL3y和PL2y,然后生成PL3y和PL2y之间的垂直线上片段;当垂直方向为主要方向时,分别计算扫描线与L4和L5的交点横坐标PL4x和PL5x,然后生成PL4x和PL5x之间的水平线上片段;
步骤5:确定片段的面积比:将片段划分成m×m的网格,共计(m+1)2个网格点,设片段最小网格点的坐标为(a,b),那么所有网格点的坐标(xn,yn)=(a+i,b+j),其中i,j∈{0,1/m,2/m,3/m,…,(m-1)/m,1},若网格点满足:在直线L0和L1之间并且到L的距离小于w/2则该点权值为1否则为0;将所有权值相加除以总权值(m+1)2即得到当前片段的面积比Ratio;
步骤6:在片段融合阶段将面积比作为源融合因子,一减面积比作为目的融合因子将片段颜色与背景颜色进行融合,写入帧存,完成反走样线段的生成;
对于本发明实现方法的进一步限定,所述步骤5中网格点权值的确定采用如下公式:
a)满足如下不等式,则网格点在L0和L1之间:
b)满足如下不等式,则网格点到L的距离小于w/2:
其中A=(y1-y0)、B=-(x1-x0)、C=-x0·(y1-y0)+y0·(x1-x0);同时满足上述两个条件该点权值为1否则为0;
本发明的优点就在于:避免了传统做法中的线段扩展,节省硬件资源;
附图说明
图1是本发明GPU中一种线段反走样的实现装置结构;
图2是本发明GPU中一种线段反走样的实现方法流程;
图3是本发明实现的线段反走样执行效果。
具体实施方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
如图1所示为本发明GPU中一种线段反走样的实现装置结构,该装置由以下模块构成:
(1)接收数据FIFO模块:用于接收经过顶点处理、裁剪、屏幕坐标变换后的线段顶点及对应的属性;
(2)预处理模块:用于将线段L端点排列成从左向右的顺序,同时分别生成经过线段两个端点并且与待绘制线段垂直的直线L0和L1;
(3)扫描线范围确定模块:用于根据线段的主要方向将线段L沿与主要方向垂直的方向,以线段L为起点分别向两个方向进行平移,得到两条线段,根据主要方向确定扫描线范围;
(4)片段生成模块:用于逐个生成扫描线上的片段;
(5)面积比计算模块:用于将片段划分成子片段,通过判断子片段与L0和L1的位置关系以及与线段L的距离确定子片段的权值,所有子片段的权值相加得到片段的权值作为面积比;
(6)融合模块:将面积比作为源融合因子,一减面积比作为目的融合因子将片段颜色与背景颜色进行融合,最后写入帧存;
如图2所示为本发明GPU中一种线段反走样的实现方法流程,经过以下处理步骤:
步骤1:接收数据:接收经过顶点处理、裁剪、屏幕坐标变换后的线段顶点及对应的属性以及线段宽度,设读取到的线段两个端点坐标为A(xA,yA)、B(xB,yB),线段的宽度为w;
步骤2:预处理:将线段按照从左到右的方向重排列,设重排列后线段的左侧端点坐标为P0(x0,y0)右侧端点坐标为P1(x1,y1),那么线段的点向式方程为(x-x0)·(y1-y0)-(y-y0)·(x1-x0)=0,线段的方向为从y0→P1,经过P0点与L垂直的线段方程为L0:(x-x0)·(x1-x0)+(y-y0)·(y1-y0)=0,经过P1点与L垂直的线段方程为L1:(x-x1)·(x1-x0)+(y-y1)·(y1-y0)=0;
步骤3:确定扫描范围:当水平方向为主要方向即|x1-x0|≥|y1-y0|时,将直线L在垂直方向分别向下、向上平移w,分别得到两条直线方程此时扫描线范围为x=x0-w至x=x1+w之间的整数;当垂直方向为主要方向即|x1-x0|<|y1-y0|时,将直线L在水平方向向左、向右平移w,分别得到两条直线方程此时扫描线范围为y=y0-w至y=y1+w之间的整数;
步骤4:生成片段:当水平方向为主要方向时,分别计算扫描线与L3和L2的交点纵坐标PL3y和PL2y,然后生成PL3y和PL2y之间的垂直线上片段;当垂直方向为主要方向时,分别计算扫描线与L4和L5的交点横坐标PL4x和PL5x,然后生成PL4x和PL5x之间的水平线上片段;
步骤5:确定片段的面积比:以将片段划分成4×4的网格为例,共计25个网格点,设片段最小网格点的坐标为(a,b),那么所有网格点的坐标(xn,yn)=(a+i,b+j),其中i,j∈{0,1/4,2/4,3/4,1},若网格点满足:在直线L0和L1之间并且到L的距离小于w/2则该点权值为1否则为0,具体判别方法:满足不等式则网格点在L0和L1之间;满足不等式其中A=(y1-y0)、B=-(x1-x0)、C=-x0·(y1-y0)+y0·(x1-x0),则网格点到L的距离小于w/2,同时满足上述两个条件该点权值为1否则为0;将所有权值相加除以总权值25即得到当前片段的面积比Ratio;
步骤6:在片段融合阶段将面积比作为源融合因子,一减面积比作为目的融合因子将片段颜色与背景颜色进行融合,写入帧存,完成反走样线段的生成;
如图3所示为本发明实现的线段反走样执行效果,(a1)和(a2)为本发明实现方法执行线段反走样的效果,其中的(a1)为原始图形,(a2)为(a1)放大后的效果;作为对比,(b1)和(b2)是线段不作反走样的效果,其中的(b1)为原始图形,(b2)为(b1)放大后的效果;本发明的实现方法提供了较好的线段反走样效果。
Claims (3)
1.GPU中一种线段反走样实现装置,其特征为:由以下模块构成:
接收数据FIFO模块:用于接收经过顶点处理、裁剪、屏幕坐标变换后的线段顶点及对应的属性;
预处理模块:用于将线段L端点排列成从左向右的顺序,同时分别生成经过线段两个端点并且与待绘制线段垂直的直线L0和L1;
扫描线范围确定模块:用于根据线段的主要方向将线段L沿与主要方向垂直的方向,以线段L为起点分别向两个方向进行平移,得到两条线段,根据主要方向确定扫描线范围;
片段生成模块:用于逐个生成扫描线上的片段;
面积比计算模块:用于将片段划分成子片段,通过判断子片段与L0和L1的位置关系以及与线段L的距离确定子片段的权值,所有子片段的权值相加得到片段的权值作为面积比;
融合模块:将面积比作为源融合因子,一减面积比作为目的融合因子将片段颜色与背景颜色进行融合,最后写入帧存。
2.GPU中一种线段反走样实现方法,其特征为:按照以下步骤执行:
步骤1:接收数据:接收经过顶点处理、裁剪、屏幕坐标变换后的线段顶点及对应的属性以及线段宽度,设读取到的线段两个端点坐标为A(xA,yA)、B(xB,yB),线段的宽度为w;
步骤2:预处理:将线段按照从左到右的方向重排列,设重排列后线段的左侧端点坐标为P0(x0,y0)右侧端点坐标为P1(x1,y1),那么线段的点向式方程为(x-x0)·(y1-y0)-(y-y0)·(x1-x0)=0,线段的方向为从P0→P1,经过P0点与L垂直的线段方程为L0:(x-x0)·(x1-x0)+(y-y0)·(y1-y0)=0,经过P1点与L垂直的线段方程为L1:(x-x1)·(x1-x0)+(y-y1)·(y1-y0)=0;
步骤3:确定扫描范围:当水平方向为主要方向即|x1-x0|≥|y1-y0|时,将直线L在垂直方向分别向下、向上平移w,分别得到两条直线方程此时扫描线范围为x=x0-w至x=x1+w之间的整数;当垂直方向为主要方向即|x1-x0|<|y1-y0|时,将直线L在水平方向向左、向右平移w,分别得到两条直线方程此时扫描线范围为y=y0-w至y=y1+w之间的整数;
步骤4:生成片段:当水平方向为主要方向时,分别计算扫描线与L3和L2的交点纵坐标PL3y和PL2y,然后生成PL3y和PL2y之间的垂直线上片段;当垂直方向为主要方向时,分别计算扫描线与L4和L5的交点横坐标PL4x和PL5x,然后生成PL4x和PL5x之间的水平线上片段;
步骤5:确定片段的面积比:将片段划分成m×m的网格,共计(m+1)2个网格点,设片段最小网格点的坐标为(a,b),那么所有网格点的坐标(xn,yn)=(a+i,b+j),其中i,j∈{0,1/m,2/m,3/m,…,(m-1)/m,1},若网格点满足:在直线L0和L1之间并且到L的距离小于w/2则该点权值为1否则为0;将所有权值相加除以总权值(m+1)2即得到当前片段的面积比Ratio;
步骤6:在片段融合阶段将面积比作为源融合因子,一减面积比作为目的融合因子将片段颜色与背景颜色进行融合,写入帧存,完成反走样线段的生成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810261849.2A CN108416729B (zh) | 2018-03-27 | 2018-03-27 | Gpu中一种线段反走样的实现装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810261849.2A CN108416729B (zh) | 2018-03-27 | 2018-03-27 | Gpu中一种线段反走样的实现装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108416729A CN108416729A (zh) | 2018-08-17 |
CN108416729B true CN108416729B (zh) | 2022-12-06 |
Family
ID=63133740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810261849.2A Active CN108416729B (zh) | 2018-03-27 | 2018-03-27 | Gpu中一种线段反走样的实现装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108416729B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110335215B (zh) * | 2019-07-09 | 2021-07-02 | 格兰菲智能科技有限公司 | 图像反走样方法及图像反走样装置 |
CN110648386B (zh) * | 2019-07-23 | 2024-01-09 | 完美世界(北京)软件科技发展有限公司 | 一种用于图元的反走样的方法和系统 |
CN111784795B (zh) * | 2020-06-01 | 2024-11-01 | 北京像素软件科技股份有限公司 | 线段走样的处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5337404A (en) * | 1989-04-24 | 1994-08-09 | Digital Equipment International Limited | Process and system for making computer-aided drawings using a contour inclusion tree associated planar map data structure |
CN102063523A (zh) * | 2010-11-22 | 2011-05-18 | 长沙景嘉微电子有限公司 | 基于超采样算法的浮点定点相结合的线段反走样的实现 |
CN102096935A (zh) * | 2011-03-17 | 2011-06-15 | 长沙景嘉微电子有限公司 | 基于分块渲染的gpu中反走样线段的生成 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110137822A1 (en) * | 2007-12-21 | 2011-06-09 | Chapman Gerald E | Computer-implemented pattern charting |
-
2018
- 2018-03-27 CN CN201810261849.2A patent/CN108416729B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5337404A (en) * | 1989-04-24 | 1994-08-09 | Digital Equipment International Limited | Process and system for making computer-aided drawings using a contour inclusion tree associated planar map data structure |
CN102063523A (zh) * | 2010-11-22 | 2011-05-18 | 长沙景嘉微电子有限公司 | 基于超采样算法的浮点定点相结合的线段反走样的实现 |
CN102096935A (zh) * | 2011-03-17 | 2011-06-15 | 长沙景嘉微电子有限公司 | 基于分块渲染的gpu中反走样线段的生成 |
Also Published As
Publication number | Publication date |
---|---|
CN108416729A (zh) | 2018-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108416729B (zh) | Gpu中一种线段反走样的实现装置和方法 | |
US6323874B1 (en) | System and method for rendering an image | |
EP1127337B2 (en) | Shading 3-dimensional computer generated images | |
US8269788B2 (en) | Vector graphics anti-aliasing | |
CN101887592B (zh) | 一种矢量图形地图符号的绘制方法 | |
CN109978750B (zh) | 执行基于采样的渲染的图形处理器和操作其的方法 | |
US20200279415A1 (en) | Efficiently Computed Distance Fields | |
JP2018512644A (ja) | 低品質タイルを使用してメモリ帯域幅を減らすためのシステムおよび方法 | |
CN100377578C (zh) | 一种电视字幕文字的处理方法 | |
CN114693851A (zh) | 基于gpu的实时网格轮廓向量化与渲染系统 | |
CN111145286A (zh) | 一种基于gpu的用于边缘计算场景的点九图片贴图绘制方法 | |
CN108537718B (zh) | Gpu中一种实现点图元反走样的装置和方法 | |
US8537173B2 (en) | Graphics rendering apparatus, graphics rendering method, Recording medium having recorded therein graphics rendering program, and integrated circuit for rendering a high-quality image using a scaling coefficient | |
US8134557B2 (en) | Image processing apparatus and image processing method | |
CN109741433B (zh) | 一种基于Tile的三角形多向并行扫描方法及结构 | |
CN101901590B (zh) | 用于抗锯齿的多边形栅格化的方法和系统 | |
JP2010515131A (ja) | ベクトルグラフィックをラスター化するプロセスにおいて境界を発生させるための方法およびシステム、ならびに、システムを製造するための方法 | |
US6445386B1 (en) | Method and apparatus for stretch blitting using a 3D pipeline | |
CN102096935B (zh) | 基于分块渲染的gpu中反走样线段的生成 | |
CN108519867B (zh) | Gpu中一种实现三角形反走样的装置和方法 | |
CN108510565A (zh) | Gpu中一种实现线段转三角形绘制的装置与方法 | |
JP2002519793A (ja) | グラフィックエレメントをレンダリング処理する方法及びシステム | |
CN103106395A (zh) | 车牌字符实时识别系统的几何归一化内核装置 | |
CN111127589B (zh) | 顾及线宽一致性的矢量地图圆形虚线符号绘制方法 | |
JP3747859B2 (ja) | 画像処理装置およびその方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |