CN109658324B - 一种三角形光栅化扫描方法 - Google Patents
一种三角形光栅化扫描方法 Download PDFInfo
- Publication number
- CN109658324B CN109658324B CN201811355061.4A CN201811355061A CN109658324B CN 109658324 B CN109658324 B CN 109658324B CN 201811355061 A CN201811355061 A CN 201811355061A CN 109658324 B CN109658324 B CN 109658324B
- Authority
- CN
- China
- Prior art keywords
- detection element
- scanning
- value
- triangle
- detection
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及一种三角形光栅化扫描方法,包括确定三角形光栅化的扫描范围;对所述三角形进行初始化处理,并设置第一检测元素的标记参数;根据所述第一检测元素的标记参数、与初始化后的三角形的位置关系处理所述第一检测元素,获得第二检测元素;根据所述第二检测元素与所述扫描范围的关系处理所述第二检测元素,以完成光栅化扫描。本发明提供一种三角形光栅化扫描方法,该方法通过检测元素与三角形的位置关系进行扫描和步进,能够有效降低三角形扫描算法的复杂性,改善了扫描速度,并且提升了三角形光栅化的扫描性能。
Description
技术领域
本发明涉及计算机图形扫描技术领域,具体涉及一种三角形光栅化扫描方法。
背景技术
随着图形化应用的不断增加,早期单靠CPU(中央处理器,Central ProcessingUnit)进行图形绘制的解决方案已经难以满足技术增长的图形处理需求,因而图形处理器(Graphic Processing Unit,GPU)应运而生。从1999年Nvidia发布第一款GPU产品至今,GPU技术的发展主要经历了固定功能流水线阶段、分离染色器架构阶段和统一染色器架构阶段,其图形处理能力不断提升,应用领域也从最初的图形绘制逐步扩展到通用计算领域。GPU具有流水线高速、并行的特征和灵活的可编程能力,为图形处理和通用并行计算提供了良好的运行平台。
三角形光栅化扫描方法是实现GPU研制的关键算法,能够大幅提升三角形光栅化性能,在GPU自主研制进程中具有重大意义。目前用于GPU的三角形光栅化扫描方法采用的是Zigzag算法,具体内容如下:首先确定三角形光栅化扫描范围,扫描过程采用X轴双向扫描与Y轴双边步进的方法,在已确定的扫描范围内,扫描(步进)的同时判断检测元素与三角形的位置关系,同时判断检测元素于X轴方向扫描的结束条件和Y轴方向步进的结束条件。
在Zigzag算法内,检测元素在Y轴的步进过于依赖X轴双向扫描的结束位置,导致检测元素在Y轴步进时,X轴的坐标不统一,增加了三角形光栅化的复杂度,影响三角形光栅化的扫描性能和速度。
发明内容
为了解决现有技术中存在的上述问题,本发明提供了一种三角形光栅化扫描方法。
本发明的一个实施例提供了一种三角形光栅化扫描方法,包括:
确定三角形光栅化的扫描范围;
对所述三角形进行初始化处理,并设置第一检测元素的标记参数;
根据所述第一检测元素的标记参数、与初始化后的三角形的位置关系处理所述第一检测元素,获得第二检测元素;
根据所述第二检测元素与所述扫描范围的关系处理所述第二检测元素,以完成光栅化扫描。
在本发明的一个实施例中,确定三角形光栅化的扫描范围,包括:
确定所述三角形光栅化的X轴起始坐标、第一最小坐标、第一最大坐标、第二最小坐标和第二最大坐标;
根据所述第一最小坐标和所述第一最大坐标,确定所述三角形光栅化的第一检测范围;
根据所述第二最小坐标和所述第二最大坐标,确定所述三角形光栅化的第二检测范围;
根据所述X轴起始坐标、所述第一检测范围和所述第二检测范围,确定所述三角形光栅化的扫描范围。
在本发明的一个实施例中,设置第一检测元素的标记参数,包括:
设置第一检测元素的标记参数为第一标记值。
在本发明的一个实施例中,根据所述第一检测元素的标记参数、所述第一检测元素与初始化后的三角形的位置关系处理所述第一检测元素,获得第二检测元素,包括:
判断所述第一检测元素与初始化后的三角形的位置关系,若所述位置关系为部分在内或完全在内,则将所述检测元素进行第一移位处理,以获得第二检测元素;若所述位置关系为完全在外,则检测所述第一检测元素的标记参数的标记值,并根据所述标记值处理所述第一检测元素,以获得第二检测元素。
在本发明的一个实施例中,若所述位置关系为部分在内或完全在内,则将所述检测元素进行第一移位处理,以获得第二检测元素,包括:
若所述位置关系为部分在内或完全在内,则将所述第一检测元素的标记参数设置为第二标记值,并判断所述第一检测元素的扫描坐标值,若所述第一检测元素的扫描坐标值为第一扫描值,则将所述标记参数为第二标记值的第一检测元素按照第二方向进行第一移位处理,若所述第一检测元素的扫描坐标值为第二扫描值,则将所述标记参数为第二标记值的第一检测元素按照第三方向进行第一移位处理;
根据第一移位处理后的第一检测元素与初始化后的三角形的位置关系,处理第一移位处理后的第一检测元素,以获得第二检测元素。
在本发明的一个实施例中,若所述位置关系为完全在外,则检测所述第一检测元素的标记参数的标记值,并根据所述标记值处理所述第一检测元素,以获得第二检测元素,包括:
若所述位置关系为完全在外,则检测所述第一检测元素的标记参数,若所述第一检测元素的标记参数为第一标记值,则根据所述第一检测元素与第一检测范围的关系,获得第二检测元素;若所述第一检测元素的标记参数的标记值为第二标记值,则根据所述第一检测元素的第一扫描值,获得第二检测元素。
在本发明的一个实施例中,根据所述第一检测元素的第一扫描值,获得第二检测元素,包括:
若所述第一检测元素的扫描坐标值不是第一扫描值,则确定所述第一检测元素的第二方向起始坐标,以获得第五检测元素,根据所述第五检测元素的第二方向起始坐标、所述第五检测元素与初始化后的三角形的位置关系处理所述第五检测元素,获得第二检测元素;
若所述第一检测元素的扫描坐标值是第一扫描值,则获得第二检测元素。
在本发明的一个实施例中,根据第一检测元素的扫描坐标值,获取第二检测元素,包括:
若所述第一检测元素的扫描坐标值为第一扫描值,则将所述第一检测元素按照第二方向进行第一移位处理,以获得第三检测元素,若所述第一检测元素的扫描坐标值为第二扫描值,则将所述第一检测元素按照第三方向进行第一移位处理,以获得第四检测元素,根据所述第三检测元素或所述第四检测元素与初始化后的三角形的位置关系,处理所述第三检测元素或所述第四检测元素,以获得第二检测元素。
在本发明的一个实施例中,根据所述第二检测元素与所述扫描范围的关系处理所述第二检测元素,以完成光栅化扫描,包括:
判断所述第二检测元素与所述第二检测范围的关系,若所述第二检测元素属于所述第二检测范围,则将所述第二检测元素按照第一方向进行第二移位处理,以获得第六检测元素,根据所述第六检测元素与初始化后的三角形的位置关系处理所述第六检测元素;若所述第二检测元素不属于所述第二检测范围,则完成光栅化扫描。
与现有技术相比,本发明的有益效果:
本发明提供一种三角形光栅化扫描方法,该方法通过检测元素与三角形的位置关系进行扫描和步进,能够有效降低三角形扫描算法的复杂性,改善了扫描速度,并且提升了三角形光栅化的扫描性能。
附图说明
图1为本发明实施例提供的一种三角形光栅化扫描方法的流程示意图;
图2为本发明实施例提供的另一种三角形光栅化扫描方法的流程示意图;
图3为本发明实施例提供的一种用于光栅化扫描的三角形的示意图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
实施例一
请参见图1,图1为本发明实施例提供的一种三角形光栅化扫描方法的流程示意图。本发明实施例提供的一种三角形光栅化扫描方法,该方法包括:
确定三角形光栅化的扫描范围;
对所述三角形进行初始化处理,并设置第一检测元素的标记参数;
根据所述第一检测元素的标记参数、与初始化后的三角形的位置关系处理所述第一检测元素,获得第二检测元素;
根据所述第二检测元素与所述扫描范围的关系处理所述第二检测元素,以完成光栅化扫描。
本实施例提供一种三角形光栅化扫描方法,该方法通过检测元素与三角形的位置关系进行扫描和步进,能够有效降低三角形扫描算法的复杂性,改善了扫描速度,并且提升了三角形光栅化的扫描性能。
其中,第一检测元素为像素,用于对三角形的X轴进行光栅化扫描;
同样的,第二检测元素为像素,第二检测元素为第一检测元素对X轴扫描结束后的检测元素,用于对三角形的Y轴进行光栅化扫描。
请参见图2,图2为本发明实施例提供的另一种三角形光栅化扫描方法的流程示意图。本发明实施例提供一种三角形光栅化扫描方法的具体实施方式,该方法包括:
步骤一、确定三角形光栅化的扫描范围;
步骤1.1、确定所述三角形光栅化的X轴起始坐标、第一最小坐标、第一最大坐标、第二最小坐标和第二最大坐标;
请参见图3,图3为本发明实施例提供的一种用于光栅化扫描的三角形的示意图。确定三角形三个点的坐标分别为V0(x0,y0)、V1(x1,y1)和V2(x2,y2),其中,三角形X轴的第一最小坐标为Xmin,Xmin=(x0,x1,x2),即Xmin为x0、x1和x2中的最小值,三角形X轴的第一最大坐标为Xmax,Xmax=(x0,x1,x2),即Xmax为x0、x1和x2中的最大值,三角形Y轴的第二最小坐标为Ymin,Ymin=(y0,y1,y2),即Ymin为y0、y1和y2中的最小值,三角形Y轴的第二最大坐标为Ymax,Ymax=(y0,y1,y2),即Ymax为y0、y1和y2中的最大值。
其中,X轴起始坐标(将X轴起始坐标记为X_scan_start)是用于对三角形的X轴进行扫描时的起始坐标,确定所述三角形光栅化的X轴起始坐标分为以下情况:
情况1,当y0≠y1≠y2,此时若Ymin=y0,则X_scan_start=x0,若Ymin=y1,则X_scan_start=x1,Ymin=y2,则X_scan_start=x2;
情况2,当y0=y1≠y2,此时若Ymin=y0=y1,则需要判断x0与x1的大小,若x1>x0,则X_scan_start=x0,若x1<x0,则X_scan_start=x1,若Ymin=y2,则X_scan_start=x2;
情况3,当y0≠y1=y2,此时若Ymin=y1=y2,则需要判断x1与x2的大小,若x2>x1,则X_scan_start=x1,若x2<x1,则X_scan_start=x2,若Ymin=y0,则X_scan_start=x0;
情况4,当y0=y2≠y1,此时若Ymin=y0=y2,则需要判断x0与x2的大小,若x2>x0,则X_scan_start=x0,若x2<x0,则X_scan_start=x2,若Ymin=y1,则X_scan_start=x1。
步骤1.2、根据所述第一最小坐标和所述第一最大坐标,确定所述三角形光栅化的第一检测范围;
具体地,第一检测范围为第一检测元素在X轴的检测范围,即第一检测范围为[Xmin,Xmax](包括Xmin与Xmax两个点)。
步骤1.3、根据所述第二最小坐标和所述第二最大坐标,确定所述三角形光栅化的第二检测范围;
具体地,第二检测范围为第二检测元素在Y轴的检测范围,即第二检测范围为[Ymin,Ymax](包括Ymin与Ymax两个点)。
其中,第二最小坐标作为三角形在Y轴进行扫描时的起始坐标。
步骤1.4、根据X轴起始坐标、第一检测范围和第二检测范围,确定三角形光栅化的扫描范围。
具体地,当在X轴进行扫描时,从X轴起始坐标开始,在第一检测范围内进行光栅化扫描,在Y轴进行扫描时,在第二检测范围内进行光栅化扫描。
步骤二、对所述三角形进行初始化处理,并设置第一检测元素的标记参数;
具体地,首先将将第一检测元素的扫描坐标值设置为第二扫描值,然后将第一检测元素的标记参数设置为第一标记值,之后对所述三角形进行初始化处理。
利用扫描坐标值和标记参数对检测元素进行设置,从而使检测元素与初始化后的三角形的位置关系配合判断在X轴的扫描是否结束。
例如,将标记参数记为fourd_fragment_flad,fourd_fragment_flad的第一标记值为false,第二标记值为true。
例如,将扫描坐标值记为x_san_dir,x_san_dir的第一扫描值为-1,x_san_dir的第二扫描值为+1。
步骤三、根据所述第一检测元素的标记参数、所述第一检测元素与初始化后的三角形的位置关系处理所述第一检测元素,获得第二检测元素;
请再次参见图3,位置关系包括部分在内、完全在内或完全在外三种情况,部分在内是指检测元素部分位于初始化后的三角形中,完全在内是指检测元素全部位于初始化后的三角形中,完全在外是指检测元素完全位于初始化后的三角形外。
步骤3.1、判断所述第一检测元素与初始化后的三角形的位置关系,若所述位置关系为部分在内或完全在内,则将所述检测元素进行第一移位处理,以获得第二检测元素;若所述位置关系为完全在外,则检测所述第一检测元素的标记参数的标记值,并根据所述标记值处理所述第一检测元素,以获得第二检测元素;
具体地,若所述位置关系为部分在内或完全在内,则将第一检测元素的标记参数设置为第二标记值,并判断第一检测元素的扫描坐标值,若第一检测元素的扫描坐标值为第一扫描值,则将所述标记参数为第二标记值的第一检测元素按照第二方向进行第一移位处理,若第一检测元素的扫描坐标值为第二扫描值,则将所述标记参数为第二标记值的第一检测元素按照第三方向进行第一移位处理;
根据第一移位处理后的第一检测元素与初始化后的三角形的位置关系,处理第一移位处理后的第一检测元素,以获得第二检测元素。
进一步地,根据步骤三的内容重新判断进行第一移位处理后的第一检测元素与初始化后的三角形的位置关系。并根据步骤三的内容处理第一移位处理后的第一检测元素,直至进行第一移位处理后的第一检测元素在X轴的扫描结束,将X轴扫描结束后的第一检测元素记为第二检测元素。
其中,第二方向为x轴的负向,第三方向为x轴的正向,第一移位处理是指将第一检测元素按照第一设定大小向第二方向或第三方向进行移动,例如第一设定大小为1个像素大小,第一设定大小可以根据实际应用进行修改,在此,不对其做具体限定。
例如,若所述位置关系为部分在内或完全在内,则将第一检测元素的fourd_fragment_flad设置为true,判断第一检测元素的x_san_dir,若第一检测元素的x_san_dir为-1,则将第一检测元素按照第二方向进行第一移位处理,即将第一检测元素向第二方向移动1个像素大小,若第一检测元素的x_san_dir为+1,则将第一检测元素向第三方向移动1个像素大小。
具体地,若第一检测元素与初始化后的三角形的位置关系为完全在外,则检测第一检测元素的标记参数,若所述第一检测元素的标记参数为第一标记值,则根据所述第一检测元素与第一检测范围的关系,获得第二检测元素;
进一步,若第一检测元素与初始化后的三角形的位置关系为完全在外,且所述第一检测元素的标记参数为第一标记值,则判断第一检测元素是否属于第一检测范围:
若第一检测元素与初始化后的三角形的位置关系为完全在外,且所述第一检测元素的标记参数为第一标记值,则判断第一检测元素是否属于第一检测范围,若第一检测元素属于第一检测范围,则判断第一检测元素的扫描坐标值,若第一检测元素的扫描坐标值为第一扫描值,则将第一检测元素按照第二方向进行第一移位处理,将按照第二方向进行第一移位处理的第一检测元素记为第三检测元素,若第一检测元素的扫描坐标值为第二扫描值,则将第一检测元素按照第三方向进行第一移位处理,将按照第三方向进行第一移位处理的第一检测元素记为第四检测元素,根据第三检测元素或第四检测元素与初始化后的三角形的位置关系,处理第三检测元素或第四检测元素,以获得第二检测元素,即根据步骤三的内容重新判断第三检测元素或第四检测元素与初始化后的三角形的位置关系,并根据步骤三的内容处理第三检测元素或第四检测元素,直至第三检测元素或第四检测元素在X轴的扫描结束,将X轴扫描结束后的第三检测元素或第四检测元素记为第二检测元素;
例如,若第一检测元素与初始化后的三角形的位置关系为完全在外,且所述第一检测元素的标记参数为false,则判断第一检测元素是否属于[Xmin,Xmax],若第一检测元素属于[Xmin,Xmax],则判断第一检测元素的扫描坐标值,若第一检测元素的扫描坐标值为-1,则将第一检测元素向X轴的负向移动1个像素大小,以获得第三检测元素,若第一检测元素的扫描坐标值为+1,则将第一检测元素向X轴的正向移动1个像素大小,以获得第四检测元素,根据步骤三的内容重新判断第三检测元素或第四检测元素与初始化后的三角形的位置关系,并根据步骤三的内容处理第三检测元素或第四检测元素,直至第三检测元素或第四检测元素在X轴的扫描结束,将X轴扫描结束后的第三检测元素或第四检测元素记为第二检测元素;
若第一检测元素与初始化后的三角形的位置关系为完全在外,且所述第一检测元素的标记参数为第一标记值,则判断第一检测元素是否属于第一检测范围,若第一检测元素不属于第一检测范围,则根据第一检测元素的第一扫描值,获得第二检测元素;
进一步地,若第一检测元素与初始化后的三角形的位置关系为完全在外,且所述第一检测元素的标记参数为第一标记值,则判断第一检测元素是否属于第一检测范围,若第一检测元素不属于第一检测范围,则继续判断第一检测元素的扫描坐标值是否为第一扫描值,若第一检测元素的扫描坐标值不是第一扫描值,则确定第一检测元素在第二方向的第二方向起始坐标,其中将第二方向起始坐标设置为X轴起始坐标减去1个像素大小,并将X轴坐标为第二方向起始坐标的第一检测元素记为第五检测元素,将第五检测元素的扫描坐标值设置为第二扫描值、标记参数设置为第一标记值,根据所述第五检测元素的第二方向起始坐标、所述第五检测元素与初始化后的三角形的位置关系处理所述第五检测元素,获得第二检测元素,即根据步骤三的内容重新判断第五检测元素与初始化后的三角形的位置关系,并根据步骤三的内容处理第五检测元素,直至第五检测元素在X轴的扫描结束,并将X轴扫描结束后的第五检测元素记为第二检测元素。
例如,若第一检测元素与初始化后的三角形的位置关系为完全在外,且所述第一检测元素的标记参数为false,则判断第一检测元素是否属于[Xmin,Xmax],若第一检测元素不属于[Xmin,Xmax],则继续判断第一检测元素的扫描坐标值是否为-1,若第一检测元素的扫描坐标值不是-1,则确定第一检测元素在X轴负向的第二方向起始坐标,其中第二方向起始坐标等于X轴起始坐标减去1个像素大小,以获得第五检测元素,将第五检测元素的扫描坐标值设置为+1、标记参数设置为false,根据步骤三的内容重新判断第五检测元素与初始化后的三角形的位置关系,并根据步骤三的内容处理第五检测元素,直至第五检测元素在X轴的扫描结束,并将X轴扫描结束后的第五检测元素记为第二检测元素。
具体地,若第一检测元素与初始化后的三角形的位置关系为完全在外,则检测第一检测元素的标记参数,若所述第一检测元素的标记参数为第二标记值,则根据所述第一检测元素扫描坐标值的第一扫描值,获得第二检测元素;
进一步地,若第一检测元素与初始化后的三角形的位置关系为完全在外,且第一检测元素的标记参数为第二标记值,则判断第一检测元素的扫描坐标值是否为第一扫描值,获得第二检测元素:
若第一检测元素与初始化后的三角形的位置关系为完全在外,且第一检测元素的标记参数为第二标记值,则判断第一检测元素的扫描坐标值是否为第一扫描值,若第一检测元素的扫描坐标值不是第一扫描值,则确定第一检测元素在第二方向的第二方向起始坐标,其中将第二方向起始坐标设置为X轴起始坐标减去1个像素大小,并将X轴坐标为第二方向起始坐标的第一检测元素记为第五检测元素,将第五检测元素的扫描坐标值设置为第二扫描值、标记参数设置为第一标记值,根据所述第五检测元素的第二方向起始坐标、所述第五检测元素与初始化后的三角形的位置关系处理所述第五检测元素,获得第二检测元素,即根据步骤三的内容重新判断第五检测元素与初始化后的三角形的位置关系,并根据步骤三的内容处理第五检测元素,直至第五检测元素在X轴的扫描结束,并将X轴扫描结束后的第五检测元素记为第二检测元素,若第一检测元素的扫描坐标值是第一扫描值,则将第一检测元素作为第二检测元素,结束X轴的扫描。
例如,若第一检测元素与初始化后的三角形的位置关系为完全在外,且第一检测元素的标记参数为true,则判断第一检测元素的扫描坐标值是否为-1,若第一检测元素的扫描坐标值不是-1,则确定第一检测元素在X轴负向的第二方向起始坐标,以获得第五检测元素,将第五检测元素的扫描坐标值设置为-1、标记参数设置为false,根据步骤三的内容重新判断第五检测元素与初始化后的三角形的位置关系,并根据步骤三的内容处理第五检测元素,直至第五检测元素在X轴的扫描结束,并将X轴扫描结束后的第五检测元素记为第二检测元素,若第一检测元素的扫描坐标值是-1,则将第一检测元素作为第二检测元素,结束X轴的扫描。
步骤四、根据第二检测元素与扫描范围的关系处理第二检测元素,以完成光栅化扫描;
具体地,判断第二检测元素与第二检测范围的关系,若第二检测元素属于第二检测范围,则将第二检测元素按照第一方向进行第二移位处理,以获得第六检测元素,根据第六检测元素与初始化后的三角形的位置关系处理第六检测元素;若第二检测元素不属于第二检测范围,则完成光栅化扫描。
进一步地,判断第二检测元素与第二检测范围的关系,若第二检测元素属于第二检测范围,则将第二检测元素按照第二设定大小向第一方向进行第二移位处理,将进行第二移位处理后的第二检测元素记为第六检测元素,将第六检测元素的起始坐标设置为X轴起始坐标,之后将第六检测元素的扫描坐标值设置为第二扫描值,然后将第六检测元素的标记参数设置为第一标记值,再对所述三角形进行初始化处理,最后根据步骤三的方法判断第六检测元素与初始化后的三角形的位置关系,从而利用第六检测元素按照步骤三的方法对三角形进行光栅化扫描,直至第六检测元素在X轴和Y轴的扫描均结束为止;若第二检测元素不属于第二检测范围,则结束Y轴的扫描,三角形光栅化扫描结束。
例如,判断第二检测元素与第二检测范围的关系,若第二检测元素属于[Ymin,Ymax],则将第二检测元素按照第二设定大小向Y轴正向进行步进,将进行步进的第二检测元素记为第六检测元素,将第六检测元素的起始坐标设置为X轴起始坐标,之后将第六检测元素的扫描坐标值设置为+1,然后将第六检测元素的标记参数设置为false,再对所述三角形进行初始化处理,最后根据步骤三的方法判断第六检测元素与初始化后的三角形的位置关系,从而利用第六检测元素按照步骤三的方法对三角形进行光栅化扫描,直至第六检测元素在X轴和Y轴的扫描均结束为止;若第二检测元素不属于第二检测范围,则结束Y轴的扫描,三角形光栅化扫描结束。
其中,第一方向为Y轴的正向,第二移位处理是指将第二检测元素按照第二设定大小向第一方向进行移动,例如第二设定大小为1个像素大小,第二设定大小可以根据实际应用进行修改,在此,不对其做具体限定。
目前,对GPU三角形的光栅化扫描方法采用的是Zigzag算法,而Zigzag算法中在Y轴的步进过于依赖X轴扫描结束的位置,导致Y轴步进时,X轴的坐标不统一。且用于GPU三角形光栅化扫描的Zigzag算法与RTL(Register Transfer Level,寄存器转换级电路)的仿真结果存在模型比对问题,尤其在进行RTL并行电路设计时,Zigzag算法可执行并行性较差,且流水过长,严重影响电路设计。而本发明实现了三角形光栅化过程中扫描范围的界定,从而解决了Zigzag算法内Y轴步进过于依赖X轴扫描结束位置的问题,并解决了GPU三角形光栅化单边步进扫描算法与RTL仿真结果模型比对的问题,尤其对于不同类型三角形(如锐角三角形、直角三角形和钝角三角形)特殊位置的光栅化扫描,性能提升更为明显,且在进行RTL并行电路设计时,改善了可执行并行性,优化了流水过长的问题。
本发明实施例的三角形光栅化扫描方法能够准确判断扫描结束的位置和条件,且在X轴的正向和负向的扫描可以并行进行,不同Y轴坐标的检测元素在X轴的扫描也可以并行进行,并且通过标记参数对检测元素进行标记,可以很好的控制扫描过程以及扫描结束时间。且在X轴的正向和负向的扫描均为X轴起始坐标,从而使得X轴的正向和负向的扫描可以并行进行描。Y轴步进的起始坐标也为X轴起始坐标,所以Y轴的步进不依赖X轴的扫描结束位置,因此Y轴坐标的检测元素在X轴的扫描也可以并行进行。因此,本发明实施例的三角形光栅化扫描算法并行度较高,可以大幅提升三角形光栅化的性能。
本发明实施例的三角形光栅化扫描方法包括X轴正、负向扫描和Y轴步进,能够有效降低三角形扫描算法的复杂性,将扫描过程更加清晰的剥离成X轴正、负向扫描和Y轴步进,同时Y轴的步进不依赖于X轴正、负向扫描结束时的X坐标,从而降低了实现的难度。尤其对于不同类型三角形(如锐角三角形、直角三角形和钝角三角形)特殊位置的光栅化扫描,性能提升更为明显。
需要说明的是,本实施例将第二方向设置为X轴负向,第三方向设置为X轴正向,同样的按照本实施例的方法将第二方向设置为X轴正向,第三方向设置为X轴负向,也可以实现对GPU三角形的光栅化扫描,再次不在赘述,熟悉本领域技术的人员显然可以容易地想到将第二方向设置为X轴正向,第三方向设置为X轴负向,从而实现对GPU三角形的光栅化扫描,而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,不脱离本发明范畴所做出的改进和修改都应该在本发明的保护范围之内。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种三角形光栅化扫描方法,其特征在于,包括:
确定三角形光栅化的扫描范围;
对所述三角形进行初始化处理,并设置第一检测元素的标记参数,设置第一检测元素的标记参数,包括:设置第一检测元素的标记参数为第一标记值;
根据所述第一检测元素的标记参数、与初始化后的三角形的位置关系处理所述第一检测元素,获得第二检测元素;
根据所述第二检测元素与所述扫描范围的关系处理所述第二检测元素,以完成光栅化扫描;
根据所述第一检测元素的标记参数、与初始化后的三角形的位置关系处理所述第一检测元素,获得第二检测元素,包括:
判断所述第一检测元素与初始化后的三角形的位置关系,若所述位置关系为部分在内或完全在内,则将所述检测元素进行第一移位处理,以获得第二检测元素;若所述位置关系为完全在外,则检测所述第一检测元素的标记参数的标记值,并根据所述标记值处理所述第一检测元素,以获得第二检测元素;
若所述位置关系为部分在内或完全在内,则将所述检测元素进行第一移位处理,以获得第二检测元素,包括:
若所述位置关系为部分在内或完全在内,则将所述第一检测元素的标记参数设置为第二标记值,并判断所述第一检测元素的扫描坐标值,若所述第一检测元素的扫描坐标值为第一扫描值,则将所述标记参数为第二标记值的第一检测元素按照第二方向进行第一移位处理,若所述第一检测元素的扫描坐标值为第二扫描值,则将所述标记参数为第二标记值的第一检测元素按照第三方向进行第一移位处理;
根据第一移位处理后的第一检测元素与初始化后的三角形的位置关系,处理第一移位处理后的第一检测元素,以获得第二检测元素;
若所述位置关系为部分在内或完全在内,则将所述检测元素进行第一移位处理,以获得第二检测元素,包括:
若所述位置关系为部分在内或完全在内,则将所述第一检测元素的标记参数设置为第二标记值,并判断所述第一检测元素的扫描坐标值,若所述第一检测元素的扫描坐标值为第一扫描值,则将所述标记参数为第二标记值的第一检测元素按照第二方向进行第一移位处理,若所述第一检测元素的扫描坐标值为第二扫描值,则将所述标记参数为第二标记值的第一检测元素按照第三方向进行第一移位处理;
根据第一移位处理后的第一检测元素与初始化后的三角形的位置关系,处理第一移位处理后的第一检测元素,以获得第二检测元素。
2.根据权利要求1所述的三角形光栅化扫描方法,其特征在于,确定三角形光栅化的扫描范围,包括:
确定所述三角形光栅化的X轴起始坐标、第一最小坐标、第一最大坐标、第二最小坐标和第二最大坐标;
根据所述第一最小坐标和所述第一最大坐标,确定所述三角形光栅化的第一检测范围;
根据所述第二最小坐标和所述第二最大坐标,确定所述三角形光栅化的第二检测范围;
根据所述X轴起始坐标、所述第一检测范围和所述第二检测范围,确定所述三角形光栅化的扫描范围。
3.根据权利要求1所述的三角形光栅化扫描方法,其特征在于,根据所述第一检测元素与第一检测范围的关系,获得第二检测元素,包括:
若所述第一检测元素属于第一检测范围,则根据第一检测元素的扫描坐标值,获取第二检测元素;
若所述第一检测元素不属于第一检测范围,则根据所述第一检测元素的第一扫描值,获得第二检测元素。
4.根据权利要求1或3任一项所述的三角形光栅化扫描方法,其特征在于,根据所述第一检测元素的第一扫描值,获得第二检测元素,包括:
若所述第一检测元素的扫描坐标值不是第一扫描值,则确定所述第一检测元素的第二方向起始坐标,以获得第五检测元素,根据所述第五检测元素的第二方向起始坐标、所述第五检测元素与初始化后的三角形的位置关系处理所述第五检测元素,获得第二检测元素;
若所述第一检测元素的扫描坐标值是第一扫描值,则获得第二检测元素。
5.根据权利要求3所述的三角形光栅化扫描方法,其特征在于,根据第一检测元素的扫描坐标值,获取第二检测元素,包括:
若所述第一检测元素的扫描坐标值为第一扫描值,则将所述第一检测元素按照第二方向进行第一移位处理,以获得第三检测元素,若所述第一检测元素的扫描坐标值为第二扫描值,则将所述第一检测元素按照第三方向进行第一移位处理,以获得第四检测元素,根据所述第三检测元素或所述第四检测元素与初始化后的三角形的位置关系,处理所述第三检测元素或所述第四检测元素,以获得第二检测元素。
6.根据权利要求2所述的三角形光栅化扫描方法,其特征在于,根据所述第二检测元素与所述扫描范围的关系处理所述第二检测元素,以完成光栅化扫描,包括:
判断所述第二检测元素与所述第二检测范围的关系,若所述第二检测元素属于所述第二检测范围,则将所述第二检测元素按照第一方向进行第二移位处理,以获得第六检测元素,根据所述第六检测元素与初始化后的三角形的位置关系处理所述第六检测元素;若所述第二检测元素不属于所述第二检测范围,则完成光栅化扫描。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811355061.4A CN109658324B (zh) | 2018-11-14 | 2018-11-14 | 一种三角形光栅化扫描方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811355061.4A CN109658324B (zh) | 2018-11-14 | 2018-11-14 | 一种三角形光栅化扫描方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109658324A CN109658324A (zh) | 2019-04-19 |
CN109658324B true CN109658324B (zh) | 2023-04-07 |
Family
ID=66110960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811355061.4A Active CN109658324B (zh) | 2018-11-14 | 2018-11-14 | 一种三角形光栅化扫描方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109658324B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111223142B (zh) * | 2019-12-31 | 2023-09-08 | 西安翔腾微电子科技有限公司 | 一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7362325B2 (en) * | 2004-12-21 | 2008-04-22 | Qualcomm Incorporated | 2D/3D line rendering using 3D rasterization algorithms |
CN108009978B (zh) * | 2017-11-24 | 2021-04-20 | 中国航空工业集团公司西安航空计算技术研究所 | 一种非阻塞并行三角形光栅化单元结构 |
-
2018
- 2018-11-14 CN CN201811355061.4A patent/CN109658324B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109658324A (zh) | 2019-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4598031B2 (ja) | 加速された開始タイル探索 | |
JP4598030B2 (ja) | グラフィックスパイプラインにおけるタイルベース精度のラスタライズ | |
US8063903B2 (en) | Edge evaluation techniques for graphics hardware | |
CN108734624B (zh) | 包括多个处理级的图形处理流水线及其操作方法与介质 | |
US10229524B2 (en) | Apparatus, method and non-transitory computer-readable medium for image processing based on transparency information of a previous frame | |
US11257181B2 (en) | Tiling a primitive in a graphics processing system by edge-specific testing of a subset of tiles in a rendering space | |
KR20120096119A (ko) | 그래픽 프로세서 및 조기 가시성 테스트 방법 | |
US9905036B2 (en) | Graphics processing unit for adjusting level-of-detail, method of operating the same, and devices including the same | |
US9710933B2 (en) | Method and apparatus for processing texture | |
US9928621B2 (en) | Line stylization through graphics processor unit (GPU) textures | |
US20160148335A1 (en) | Data-processing apparatus and operation method thereof | |
US20160314618A1 (en) | Tiling a primitive in a graphics processing system | |
US10262391B2 (en) | Graphics processing devices and graphics processing methods | |
CN109658324B (zh) | 一种三角形光栅化扫描方法 | |
US7808512B1 (en) | Bounding region accumulation for graphics rendering | |
US11842462B2 (en) | Determining anti-aliasing settings in graphics processing based on assessment of presence of primitive edges | |
US8773447B1 (en) | Tag logic scoreboarding in a graphics pipeline | |
KR20150060026A (ko) | 이전 커맨드 정보를 이용하여 현재 커맨드를 처리하는 방법 및 장치. | |
US9710943B2 (en) | 2D region rendering | |
CN112927123A (zh) | 一种gpu加速的有向距离场符号建模方法 | |
US20030043171A1 (en) | Method, apparatus and system for determining an intersection method for a zone renderer | |
CN117291963A (zh) | 一种图像法曲率估计方法及相关设备 | |
US20090147012A1 (en) | Parallelogram unified primitive description for rasterization | |
CN101753767A (zh) | 用在图形光栅扫描中的凸多边形遍历方法和系统 |
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 |