一种GPU点光栅化点大小奇偶配置的顶点坐标映射方法与流程

文档序号:20959609发布日期:2020-06-02 20:36阅读:203来源:国知局
一种GPU点光栅化点大小奇偶配置的顶点坐标映射方法与流程

本发明属于计算机图形处理技术领域,具体涉及一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法。



背景技术:

光栅化是将由顶点的几何数据和像素数据定义成的基本图元转化成与像素点对应的片元。而每一个片元对应于帧缓冲区中的一个像素。把定点连接直线或者由三角形的三个顶点确定各个边并进行内部填充时,就需要考虑点的大小、直线的宽度、点画模式、着色模式以及三角形的点画模式、着色模式和抗锯齿处理的覆盖率计算。经过图元装配的图元信息包括顶点的坐标、主颜色、辅助颜色、法向量、雾化因子、纹理等信息。这些图元信息首先进入扫描转换模式进行扫描,产生对应图元信息的所有像素点坐标,之后属性插值单元进行属性计算插值,得到所有像素点的颜色、雾化因子、纹理坐标等。

任何图元都是由点组成的,点的属性有两个,一个是坐标,一个是大小。点的光栅化就是在屏幕像素点阵中用给定的颜色点亮最佳逼近于理想点的像素点集的过程。要绘制一个点,就要先把点投影到屏幕坐标系中,然后以坐标系中的点的坐标为中心,以点的大小为半径,进行区域扫描。

然而,现有研究中,点光栅化时点的大小与其所占片元不对应,不论点的大小为奇偶,输出的结果中点所占的片元总为奇数个,例如:点大小(pointsize)为8时,输出的结果中点占9个像素,而当点大小为9时,输出的图中点仍占9个像素。而点大小与输出图元片元的不对应会降低输出图元的分辨率,导致输出图元的失真。



技术实现要素:

为了解决现有技术中存在的上述问题,本发明提供了一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法。本发明要解决的技术问题通过以下技术方案实现:

本发明实施例提供了一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法,包括步骤:

获取点图元的点坐标;

判断点光栅化的反走样是否开启,若未开启,则利用第一预设算法将所述点坐标转换为片元坐标;

根据所述点图元的点大小、所述点大小的奇偶属性和所述片元坐标确定光栅化扫描范围;

根据所述光栅化扫描范围的片元区域中有效片元的数量和位置点亮所述有效片元的像素值。

在本发明的一个实施例中,根据所述点图元的点大小、所述点大小的奇偶属性和所述片元坐标确定光栅化扫描范围,包括:

对所述点大小进行四舍五入计算,得到目标值;

判断所述目标值的奇偶属性;

当判断所述目标值为奇数时,利用第二预设算法对所述目标值和所述片元坐标进行计算得到所述光栅化扫描范围,或者当判断所述目标值为偶数时,利用第三预设算法对所述目标值和所述片元坐标进行计算得到所述光栅化扫描范围。

在本发明的一个实施例中,根据所述光栅化扫描范围的片元区域中有效片元的数量和位置点亮所述有效片元的像素值,包括:

对所述光栅化扫描范围中的所述片元区域进行扫描;

根据所述片元区域中扫描起始坐标与扫描终点坐标的第一坐标关系判断所述点图元的横坐标跨度和纵坐标跨度;

当判断所述点图元为所述横坐标跨度且无所述纵坐标跨度时,则根据所述横坐标跨度和所述纵坐标跨度得到所述有效片元的数量,根据所述点图元的纵坐标判断所述有效片元的位置;

根据所述有效片元的数量和位置点亮所述有效片元的像素值。

在本发明的一个实施例中,根据所述片元区域中扫描起始坐标与扫描终点坐标的第一坐标关系判断所述点图元的横坐标跨度和纵坐标跨度之后,还包括:

当判断所述点图元为所述纵坐标跨度且无所述横坐标跨度时,则根据所述横坐标跨度和所述纵坐标跨度得到所述有效片元的数量,根据所述点图元的横坐标判断所述有效片元的位置。

在本发明的一个实施例中,根据所述片元区域中扫描起始坐标与扫描终点坐标的第一坐标关系判断所述点图元的横坐标跨度和纵坐标跨度之后,还包括:

当判断所述点图元无所述横坐标跨度且无所述纵坐标跨度时,根据所述片元区域中所述点图元的起始横坐标与终点横坐标的第二坐标关系以及所述点图元的起始纵坐标与终点纵坐标的第三坐标关系判断所述有效片元的数量,并根据所述点图元的起始坐标判断所述有效片元的位置。

在本发明的一个实施例中,根据所述点图元的起始坐标判断所述有效片元的位置,包括:

当所述第二坐标关系为不相等且所述第三坐标关系为相等时,根据所述片元区域中所述点图元的起始纵坐标判断所述有效片元的位置。

在本发明的一个实施例中,根据所述点图元的起始坐标判断所述有效片元的位置,包括:

当所述第二坐标关系为相等且所述第三坐标关系为不相等时,根据所述片元区域中所述点图元的起始横坐标判断所述有效片元的位置。

在本发明的一个实施例中,根据所述片元区域中扫描起始坐标与扫描终点坐标的第一坐标关系判断所述点图元的横坐标跨度和纵坐标跨度之后,还包括:

当判断所述点图元无所述横坐标跨度且无所述纵坐标跨度,同时所述第二坐标关系为相等且所述第三坐标关系为相等时,根据所述第二坐标关系和所述第三坐标关系判断所述有效片元的数量为4个且所述有效片元覆盖所述片元区域。

在本发明的一个实施例中,根据所述片元区域中扫描起始坐标与扫描终点坐标的第一坐标关系判断所述点图元的横坐标跨度和纵坐标跨度之后,还包括:

当判断所述点图元有所述横坐标跨度且有所述纵坐标跨度时,则所述有效片元的数量为4个且所述有效片元覆盖所述片元区域。

与现有技术相比,本发明的有益效果:

本发明的顶点坐标映射方法根据点大小、点大小的奇偶属性和点坐标确定光栅化扫描范围,使得点光栅化输出的结果中点所占有有效片元数量与点大小的奇偶相对应,解决了在点光栅化不开启反走样时,不论点大小为奇偶,点所占片元总为奇数个的问题,很好的控制扫描结束后输出的有效片元数量以及在特殊情况下对点扫描范围内有效片元像素值的点亮情况。

附图说明

图1为本发明实施例提供的一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法的流程示意图;

图2a-图2g为本发明实施例提供的另一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法的流程示意图;

图3为本发明实施例提高的一种片元区域的示意图;

图4为本发明实施例提供的第一种有效片元的数量和位置关系示意图;

图5为本发明实施例提供的第二种有效片元的数量和位置关系示意图;

图6为本发明实施例提供的第三种有效片元的数量和位置关系示意图;

图7为本发明实施例提供的第四种有效片元的数量和位置关系示意图;

图8为本发明实施例提供的第五种有效片元的数量和位置关系示意图;

图9为本发明实施例提供的第六种有效片元的数量和位置关系示意图;

图10为本发明实施例提供的第七种有效片元的数量和位置关系示意图;

图11为本发明实施例提供的第八种有效片元的数量和位置关系示意图;

图12为本发明实施例提供的第九种有效片元的数量和位置关系示意图。

具体实施方式

下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。

实施例一

请参见图1和图2a-图2g,图1为本发明实施例提供的一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法的流程示意图,图2a-图2g为本发明实施例提供的另一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法的流程示意图。该顶点坐标映射方法包括步骤:

s1、将点图元的点坐标转换为片元坐标。请参见图2a,步骤s1具体包括以下步骤:

s11、获取点图元的点坐标。

具体地,获取点坐标(x0,y0),此时,点坐标(x0,y0)属于点坐标系。

s12、判断反走样是否开启,得到判断结果。

具体地,判断结果包括反走样开启和反走样未开启。

s13、根据判断结果利用第一预设算法对点坐标进行计算,得到片元坐标。

具体地,当判断反走样开启时,对点坐标进行浮点计算,即x1=float(x0+0.5),y1=float(y0+0.5),将点坐标(x0,y0)转换为片元坐标(x1,y1);其中,float为浮点型计算。之后,在反走样时点亮有效像素值。

当判断反走样未开启时,对点坐标进行取整计算,即x1=int(x0+0.5),y1=int(y0+0.5),将点坐标(x0,y0)转换为片元坐标(x1,y1),其中,第一预设算法为取整计算int。本实施例重点对反走样未开启时的参数处理进行说明。

s2、根据点图元的点大小、点大小的奇偶属性和片元坐标确定光栅化扫描范围。请参见图2b,步骤s2具体包括以下步骤:

s21、对点大小进行四舍五入计算,得到目标值。

具体地,对点大小pointsize进行四舍五入计算regular,得到目标值regular(pointsize)。

s22、判断目标值的奇偶属性,得到判断结果。

具体地,判断regular(pointsize)的奇偶属性,即判断regular(pointsize)%2==0是否成立。

s23、根据判断结果确定光栅化扫描范围。

具体地,当判断目标值regular(pointsize)为奇数时,即regular(pointsize)%2==0成立,利用第二预设算法对目标值和片元坐标进行计算得到光栅化扫描范围。

第二预设算法的计算方法为:片元坐标(x1,y1)中x1加上0.5再减去regular(pointsize)为a点和c点的x坐标,点坐标(x1,y1)中x1加上0.5再加上regular(pointsize)为b点和d点的x坐标,点坐标(x1,y1)中y1加上0.5再减去regular(pointsize)为a点和b点的y坐标,点坐标(x1,y1)中y1加上0.5再加上regular(pointsize)为c点和d点的y坐标,即:xmin=regular(x1+0.5-regular(pointsize)/2.0),ymin=regular(y1+0.5-regular(pointsize)/2.0),xmax=int(x1+0.5+regular(pointsize)/2.0),ymax=int(y1+0.5+regular(pointsize)/2.0)。其中,regular代表四舍五入,int代表取整。a、b、c、d点组成的矩形范围即为光栅化扫描范围,xmin、ymin、xmax、ymax分别为光栅化扫描范围的坐标。

当判断目标值regular(pointsize)为偶数时,即regular(pointsize)%2==0不成立,利用第三预设算法对目标值和片元坐标进行计算得到光栅化扫描范围。

第三预设算法的计算方法为:点坐标(x1,y1)中x1减去regular(pointsize)为a点和c点的x坐标,点坐标(x1,y1)中x1加上regular(pointsize)为b点和d点的x坐标,点坐标(x1,y1)中y1减去regular(pointsize)为a点和b点的y坐标,点坐标(x1,y1)中y1加上regular(pointsize)为c点和d点的y坐标,即xmin=regular(x1-regular(pointsize)/2.0),ymin=regular(y1-regular(pointsize)/2.0),xmax=int(x1+regular(pointsize)/2.0),ymax=int(y1+regular(pointsize)/2.0)。其中,regular代表四舍五入,int代表取整。a、b、c、d点组成的矩形范围即为光栅化扫描范围。

s3、根据光栅化扫描范围的每个片元区域中有效片元的数量和位置点亮有效片元的像素值。具体包括以下步骤:

s31、对光栅化扫描范围中的每个片元区域进行扫描。

本实施例中,请参见图3,图3为本发明实施例提高的一种片元区域的示意图。将片元区域(quad)定义为一个2×2的片元区域,其包括4个片元,4个片元从左到右、从下到上依次定义为0、1、2、3。

光栅化扫描范围中存在若干像素,形成若干片元区域。在对光栅化扫描范围进行扫描时,对光栅化扫描范围中的每个片元区域进行依次扫描,即先扫描一个片元区域,然后扫描下一个片元区域,直至扫描结束。随着扫描的进行,片元区域的位置不断变化。

光栅化扫描范围中间位置处,有效片元将片元区域完全覆盖,因此,本实施例主要针对光栅化扫描范围的边界在每个片元区域中所占有的有效像素的数量和位置进行判断。

具体地,请参见图2b,对于每个片元区域,其扫描起始坐标和扫描终点坐标根据该片元区域中点所对应的像素坐标进行确定,即quad_scan_start_x=xmin/2,quad_scan_start_y=ymin/2,quad_scan_end_x=xmax/2,quad_scan_end_y=ymax/2,其中,xmin、ymin、xmax、ymax为每个片元区域中点图元对应的像素坐标。根据上述坐标可以确定片元区域的位置。

s32、根据片元区域中扫描起始坐标与扫描终点坐标的第一坐标关系判断点图元的跨度。

通过判断扫描起始横坐标xmin/2与扫描终点横坐标xmax/2的坐标关系,同时判断扫描起始纵坐标ymin/2与扫描终点纵坐标ymax/2的坐标关系,来确定点图元的跨度,即判断quad_scan_start_x与quad_scan_end_x关系同时判断quad_scan_start_y与quad_scan_end_y关系。

请参见图2c,点图元的跨度存在以下四种情况:

第一种:点图元为横坐标跨度且无纵坐标跨度,即quad_sacn_start_x!=quad_scan_end_x&&quad_scan_start_y==quad_scan_end_y。这种情况下,在一个片元区域中,点图元所占的片元数量为2个,这两个片元沿横坐标分布,而在纵坐标上不跨越。

第二种:点图元为纵坐标跨度且无横坐标跨度,即quad_scan_start_x==quad_scan_end_x&&quad_scan_start_y!=quad_scan_end_y。这种情况下,在一个片元区域中,点图元所占的片元数量为2个,这两个片元沿纵坐标分布,而在横坐标上不跨越。

第三种:点图元无横坐标跨度且无纵坐标跨度,即quad_scan_start_x==quad_scan_end_x&&quad_scan_start_y==quad_scan_end_y。这种情况下,在一个片元区域中,点图元所占的片元数量为3个,在x上和y上均没有跨度。

第四种:点图元有横坐标跨度且有纵坐标跨度,即quad_scan_start_x!=quad_scan_end_x&&quad_scan_start_y!=quad_scan_end_y。这种情况下,点片元的数量为4个,4个点片元分别位于该片元区域的四个角。也就是,点片元在x上和y上均存在跨度。

s33、根据片元区域中点图元的跨度和点图元的坐标判断有效片元的数量和位置,并根据有效片元的数量和位置点亮有效片元的像素值。

该步骤根据点图元的跨度包括以下四种并列的情况:

a.当点图元为横坐标跨度且无纵坐标跨度时,根据横坐标跨度判断有效片元的数量,并根据片元区域中点图元的起始纵坐标和终点纵坐标判断有效片元的位置。此时,由于存在横坐标跨度,点图元所占的片元数量为2个,有效片元的数量也为2个,然后再这个前提下根据片元区域中点图元的起始纵坐标ymin和终点纵坐标ymax判断有效片元的位置。进一步地,有效片元在片元区域中的位置包括向上区域和向下区域两种情况,其中,向上区域是指该片元区域的2、3片元,向下区域是指该片元区域的0、1片元。

具体地,请参见图2d和图4,图4为本发明实施例提供的第一种有效片元的数量和位置关系示意图,其中,阴影部分为一个片元区域,阴影较深代表点亮的有效片元,空白区域代表向上区域的quad。当判断quad_coordy==quad_scan_start_y&&ymin%2==1时,有效片元无纵坐标跨度且有效片元位于向上区域,此时,点亮该片元区域中的2、3片元的像素值。其中,quad_coordy==quad_scan_start_y是指在无纵坐标跨度,ymin%2==1是指有效片元位于向上区域。

本实施例中,点亮像素值是指将mask设置为1。

请参见图2d和图5,图5为本发明实施例提供的第二种有效片元的数量和位置关系示意图,其中,阴影部分为一个片元区域,阴影较深代表点亮的有效片元,空白区域代表向下区域的quad。当判断quad_coordy==quad_scan_start_y&&ymax%2==0时,有效片元无纵坐标跨度且有效片元位于向下区域,此时,点亮该片元区域中的0、1片元的像素值。

当判断片元存在y跨度且ymin%2!=1、ymax%2!=0时,则所判断的片元不属于该片元区域,该片元区域中0、1、2、3片元的像素值均不点亮。

b.当点图元为纵坐标跨度且无横坐标跨度时,根据纵坐标跨度判断有效片元的数量,并根据片元区域中点图元的起始横坐标和终点横坐标判断有效片元的位置。此时,由于存在纵坐标跨度,点图元所占的片元数量为2个,有效片元的数量也为2个,然后再这个前提下据片元区域中点图元的起始横坐标xmin和终点横坐标xmax起判断有效片元的位置。进一步地,有效片元在片元区域中的位置包括向左区域和向右区域两种情况,其中,向左区域是指该片元区域的0、2片元,向右区域是指该片元区域的1、3片元。

请参见图2e和图6,图6为本发明实施例提供的第三种有效片元的数量和位置关系示意图,其中,阴影部分为一个片元区域,阴影较深代表点亮的有效片元,空白区域代表向左区域的quad。当判断quad_coordx==quad_scan_start_x&&xmax%2==0时,有效片元无横坐标跨度且有效片元位于向左区域,此时,点亮该片元区域中的0、2片元的像素值。

请参见图2e和图7,图7为本发明实施例提供的第四种有效片元的数量和位置关系示意图,其中,阴影部分为一个片元区域,阴影较深代表点亮的有效片元,空白区域代表向左区域的quad。当判断quad_coordx==quad_scan_start_x&&xmin%2==1时,有效片元在x上无跨度且有效片元位于向右区域,此时,点亮该片元区域中的1、3片元的像素值。

若判断片元在x上有跨度且xmax%2!=0、xmin%2!=1时,则所判断的片元不属于该片元区域,片元区域中0、1、2、3片元的像素值均不点亮。

c.当点图元无横坐标跨度且无纵坐标跨度时,通过判断片元区域中点图元的起始横坐标xmin与终点横坐标xmax的第二坐标关系以及点图元的起始纵坐标ymin与终点纵坐标ymax的第三坐标关系来判断点片元的数量。第二坐标关系存在相等和不相等两种情况,第三坐标关系存在相等和不相等两种情况。

首先,判断第二坐标关系为不相等且第三坐标关系为不相等是否成立。

若成立,即xmin!==xmax&&ymin!==ymax成立,则说明该片元区域中有效片元的数量为4个,4个有效片元将片元区域覆盖,则该片元区域中0、1、2、3片元的像素值全部点亮。如图2f和图8所示,图8为本发明实施例提供的第五种有效片元的数量和位置关系示意图,图8中的4个有效片元全部被点亮。

若不成立,即xmin!==xmax&&ymin!==ymax不成立,则根据第二坐标关系和第三坐标关系判断有效片元的数量,并根据片元区域中点图元的起始坐标ymin和xmin判断有效片元的位置。进一步地,这种情况下,有效片元的位置包括上侧区域、下侧区域、左侧区域和右侧区域,其中,上侧区域是指该片元区域的2、3片元,下侧区域是指该片元区域的0、1片元,左侧区域是指该片元区域的0、2片元,右侧区域是指该片元区域的1、3片元。

需要注意的是,本实施例中的向上区域是指2、3片元的上方还有其他片元,而上侧区域是针对一个片元区域而言的,同理,向下区域和下侧区域、向左区域和左侧区域、向右区域和右侧区域也属于不同的概念。

xmin!==xmax&&ymin!=ymax不成立时具体包括以下四种情况:

第二坐标关系为不相等且第三坐标关系为相等即xmin!=xmax&&ymin==ymax,此时,根据第二坐标关系和第三坐标关系得到有效片元的数量为2个,然后根据片元区域中点图元的起始纵坐标ymin判断有效片元是属于上侧区域还是下侧区域。

具体地,请参见图2f和图9,图9为本发明实施例提供的第六种有效片元的数量和位置关系示意图,其中,阴影部分为一个片元区域,阴影较深代表点亮的有效片元。当xmin!=xmax时,ymin==ymax&&ymin%2==0,此时,该片元区域中有效片元的数量为2个且有效片元位于下侧区域,点亮该片元区域中的0、1片元的像素值。当xmin!=xmax、ymin==ymax且ymin%2!=0,则所判断的片元不属于该片元区域,片元区域中0、1、2、3片元的像素值均不点亮。

请参见图2f和图10,图10为本发明实施例提供的第七种有效片元的数量和位置关系示意图,其中,阴影部分为一个片元区域,阴影较深代表点亮的有效片元。当xmin!=xmax时,ymin==ymax&&ymin%2==1,此时,该片元区域中有效片元的数量为2个且有效片元位于上侧区域,点亮该片元区域中的2、3片元的像素值。当xmin!=xmax、ymin==ymax且ymin%2!=1,则所判断的片元不属于该片元区域,该片元区域中0、1、2、3片元的像素值均不点亮。

当第二坐标关系为相等且第三坐标关系为不相等时即xmin==xmax&&ymin!=ymax,根据第二坐标关系和第三坐标关系判断有效片元的数量为2个,然后根据片元区域中点图元的起始横坐标xmin判断有效片元是属于左侧区域还是右侧区域。

具体地,请参见图2f和图11,图11为本发明实施例提供的第八种有效片元的数量和位置关系示意图,其中,阴影部分为一个片元区域,阴影较深代表点亮的有效片元。当ymin!=ymax时,xmin==xmax&&xmin%2==0,此时该片元区域中有效片元的数量为2个且有效片元位于左侧区域,点亮该片元区域中的0、2片元的像素值。当ymin!=ymax、xmin==xmax且xmin%2!=0,则所判断的片元不属于该片元区域,该片元区域中0、1、2、3片元的像素值均不点亮。

请参见图2f和图12,图12为本发明实施例提供的第九种有效片元的数量和位置关系示意图,其中,阴影部分为一个片元区域,阴影较深代表点亮的有效片元。当ymin!=ymax时,xmin==xmax&&xmin%2==1,此时该片元区域中有效片元的数量为2个且有效片元位于右侧区域,点亮该片元区域中的1、3片元的像素值。当ymin!=ymax、xmin==xmax且xmin%2!=1,则所判断的片元不属于该片元区域,该片元区域中0、1、2、3片元的像素值均不点亮。

d.请参见图2g,当点图元有横坐标跨度且有纵坐标跨度时,有效片元的数量为4个,4个有效片元覆盖片元区域,则按照点四角与片元区域中有效片元的有效像素值规则依次点亮4个有效片元的像素值。

本实施例的顶点坐标映射方法根据点大小、点大小的奇偶属性和点坐标确定光栅化扫描范围,使得点光栅化输出的结果中点所占有有效片元数量与点大小的奇偶相对应,解决在点光栅化不开启反走样时,不论点大小为奇偶,点所占片元总为奇数个的问题,很好的控制扫描结束后输出的有效片元数量以及在特殊情况下对点扫描范围内有效片元像素值的点亮情况。

本实施例解决了点光栅化点大小奇偶配置不同时顶点坐标映射rtl仿真结果模型比对的问题,解决了不同点大小的点光栅化验证的问题,同时加快了仿真速度。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1