一种GPU中实现三角形光栅化的装置和方法制造方法及图纸

技术编号:27062705 阅读:72 留言:0更新日期:2021-01-15 14:43
本发明专利技术公开了一种GPU中实现三角形光栅化的装置和方法,该装置包括顶点数据缓存Buffer、边函数归一化模块、端点生成模块、跨度生成模块和跨度缓存Buffer;实现方法为:将经过顶点着色器处理的三角形的顶点坐标和边方程的参数送至顶点数据缓存Buffer中,对三角形的三条边进行边界的归一化处理,通过多组端点生成器并行生成每条边的端点,将相同Y坐标的端点送至跨度生成器中,通过端点的分类和比较,得到一条三角形的跨度,并送入跨度缓存Buffer中。该方法可以并行生成三角形内部扫描线,节省硬件逻辑资源,提高三角形光栅化的效率。

【技术实现步骤摘要】
一种GPU中实现三角形光栅化的装置和方法
本专利技术涉及GPU设计领域,特别是一种GPU中实现三角形光栅化的装置和方法。
技术介绍
在多元化应用需求的推动下,半导体制造工艺水平飞速发展,计算机系统的功能和性能极大的丰富和提高。用户对于三维视觉效果的追求,使得仅仅依靠提高CPU处理速度来处理图像,在很大程度上已经无法满足人们的需求,图形处理器(GPU)应运而生。GPU作为计算机显示系统的核心,具有强大的数据计算能力,以硬件加速方式实现了2D/3D图形、图像处理和显示控制等功能,将通用CPU从复杂的图形算法和绘制中解放出来,已经成为几乎所有类型计算机系统的标准配置。GPU从出现到现在,硬件架构已经有过几次的改革,但是图元的光栅化思想在图形管线中都是必不可少的一环,图元的光栅化的质量与效率直接影响整个GPU管线的性能。而在GPU的所有图元对象中,三角形作为GPU中的最基本最重要的图元,它是组成任何其它更为复杂二维或三维对象的基本图元。三角形光栅化最重要指标是效率,即GPU在单位时间内能够处理多少个三角形图元。针对不断提升的对GPU处理性能的需求,GPU通常会集成几十至几百个并行的光栅化模块来提升性能。单纯依靠增加模块数量来提升光栅化效率的方式会增加芯片的规模和复杂度,增加设计成本,应该在扩展光栅化模块数量的基础上提升单个光栅化模块的效率。
技术实现思路
本专利技术的目的在于提供一种GPU中实现三角形光栅化的装置和方法,采用并行步进方式实现三角形跨度端点的生成,使得在不单纯增加模块数量的前提下较大幅度提升了光栅化效率,减少硬件设计的复杂度,提高了三角形光栅化效率。实现本专利技术目的的技术解决方案为:一种GPU中实现三角形光栅化的装置,包括:顶点数据缓存Buffer:用于读取三角形的顶点坐标属性和三条边的参数信息;边函数归一化模块:用于将三角形的三条边的边方程通过归一化变换为同一种形式的边方程,并置于三角形包围盒坐标系中;端点生成模块:用于将归一化的边方程沿Y坐标进行遍历,生成相应的归一化端点坐标X,并将计算出的归一化坐标还原至归一化之前的边方程的坐标;跨度生成模块:通过比较三角形左右边界的端点坐标,得到三角形同一Y坐标下的两个端点;跨度缓存Buffer:用于存储三角形跨度的端点坐标,并将端点坐标打包送至后端的块生成器进行处理。一种GPU中实现三角形光栅化的方法,包括:顶点数据缓存Buffer读取三角形的顶点坐标属性和三条边的参数信息;边函数归一化模块将三角形的三条边的边方程通过归一化变换为同一种形式的边方程,并置于三角形包围盒坐标系中;端点生成模块将归一化的边方程沿Y坐标进行遍历,生成相应的归一化端点坐标X,并将计算出的归一化坐标还原至归一化之前的6类边方程的坐标;跨度生成模块通过比较三角形左右边界的端点坐标,得到三角形同一Y坐标下的两个端点;跨度缓存Buffer存储三角形跨度的端点坐标,并将端点坐标打包送至后端的块生成器进行处理。与现有技术相比,本专利技术优点在于:1)并行处理跨度生成,提高了硬件的可扩展性;2)加法迭代的方式替代除法,简化了硬件复杂度,节省了逻辑资源;3)通过该装置,可以在不增加光栅化模块数量的基础上,大幅提高三角形光栅化处理效率。附图说明图1为本专利技术实现的GPU中一种实现三角形光栅化的装置结构图。图2为本专利技术的三角形图元的包围盒坐标系实施方法示意图。图3为本专利技术的三角形边界及有效半平面的类型划分实施方法示意图。图4为本专利技术的边界遍历查找第一有效端点实施方法示意图。图5为本专利技术的步进遍历查找有效端点实施方法示意图。图6为本专利技术的跨度左右端点选择实施方法示意图。具体实施方式如图1所示,本专利技术的一种GPU中实现三角形光栅化的装置,由以下部分组成:(1)顶点数据缓存Buffer:用于读取三角形的顶点坐标属性和三条边的参数信息。(2)边函数归一化模块:用于将三角形的三条边的边方程通过归一化变换为同一种形式的边方程,并置于三角形包围盒(BoundingBox)坐标系中。(3)端点生成模块:用于将归一化的边方程沿Y坐标进行遍历,生成相应的归一化端点坐标X,并将计算出的归一化坐标还原至归一化之前的6类边方程的坐标。(4)跨度生成模块:通过比较三角形左右边界的端点坐标,得到三角形同一Y坐标下的两个端点。(5)跨度缓存Buffer:用于存储三角形跨度的端点坐标,并将端点坐标打包送至后端的块生成器进行处理。本专利技术还公开了GPU中一种实现三角形光栅化的方法,包括:(1)顶点数据缓存Buffer读取三角形的顶点坐标属性和三条边的参数信息;所述三角形的顶点坐标属性和三条边的参数信息,包含三角形的三个顶点坐标(x1,y1)、(x2,y2)、(x3,y3),三条边的参数信息为对应边方程f(x,y)=Ax+By+C=0的参数信息(A1,B1,C1)、(A2,B2,C2)、(A3,B3,C3)。(2)边函数归一化模块将三角形的三条边的边方程通过归一化变换为同一种形式的边方程,并置于三角形包围盒坐标系中:步骤1:确定三角形包围盒的坐标,即包围三角形的最小矩形的坐标。包围盒左上角坐标为(xmin,ymin),右下角坐标为(xmax,ymax),对应的包围盒高度(向上取整),包围盒宽度W=2m,其中如附图2所示,将包围盒左上角坐标定义为(0,0),那么三角形的包围盒坐标0≤x≤W,0≤y≤H。步骤2:确定三条边的类型。由于三角形内部数据为有效数据,三条边按照顺时针方向判定,边的右半平面为有效数据,即f(x,y)≥0的坐标有效;为了避免GPU中不同三角形边界的重复计算,默认三角形的左边界为实线,右边界为虚线,即相对坐标范围为0≤x<W,0≤y≤H;那么按照边方程f(x,y)=Ax+By+C定义,代表三角形内部有效数据的边的半平面就分为左边界f(x,y)=Ax+By+C≥0的半闭平面和右边界f(x,y)=Ax+By+C>0的半开平面;据此,可将边的类型分为如附图3所示的6种形式:类1:当A<0,B≥0时,令f(x,y)=Ax+By+C>0的半开平面;类2:当A<0,B<0时,令f(x,y)=Ax+By+C>0的半开平面;类3:当A=0,B<0时,令f(x,y)=Ax+By+C>0的半开平面;类4:当A>0,B≤0时,令f(x,y)=Ax+By+C≥0的半闭平面;类5:当A>0,B>0时,令f(x,y)=Ax+By+C≥0的半闭平面;类6:当A=0,B≥0时,令f(x,y)=Ax+By+C≥0的半闭平面;图3中类1~类6的阴影方向为f(x,y)≥0的半平面,虚线代表半开平面,实线代表半闭平面。为了避免GPU中不同三角形边界的重复计算,默认三角形的左边界为实线,右边界为虚本文档来自技高网...

【技术保护点】
1.一种GPU中实现三角形光栅化的装置,其特征在于,包括:/n顶点数据缓存Buffer:用于读取三角形的顶点坐标属性和三条边的参数信息;/n边函数归一化模块:用于将三角形的三条边的边方程通过归一化变换为同一种形式的边方程,并置于三角形包围盒坐标系中;/n端点生成模块:用于将归一化的边方程沿Y坐标进行遍历,生成相应的归一化端点坐标X,并将计算出的归一化坐标还原至归一化之前的边方程的坐标;/n跨度生成模块:通过比较三角形左右边界的端点坐标,得到三角形同一Y坐标下的两个端点;/n跨度缓存Buffer:用于存储三角形跨度的端点坐标,并将端点坐标打包送至后端的块生成器进行处理。/n

【技术特征摘要】
1.一种GPU中实现三角形光栅化的装置,其特征在于,包括:
顶点数据缓存Buffer:用于读取三角形的顶点坐标属性和三条边的参数信息;
边函数归一化模块:用于将三角形的三条边的边方程通过归一化变换为同一种形式的边方程,并置于三角形包围盒坐标系中;
端点生成模块:用于将归一化的边方程沿Y坐标进行遍历,生成相应的归一化端点坐标X,并将计算出的归一化坐标还原至归一化之前的边方程的坐标;
跨度生成模块:通过比较三角形左右边界的端点坐标,得到三角形同一Y坐标下的两个端点;
跨度缓存Buffer:用于存储三角形跨度的端点坐标,并将端点坐标打包送至后端的块生成器进行处理。


2.根据权利要求1所述的GPU中实现三角形光栅化的装置,其特征在于,所述的三角形的顶点坐标属性包含三角形的三个顶点坐标(x1,y1)、(x2,y2)、(x3,y3),三条边的参数信息为对应边方程f(x,y)=Ax+By+C=0的参数信息(A1,B1,C1)、(A2,B2,C2)、(A3,B3,C3)。


3.一种GPU中实现三角形光栅化的方法,其特征在于,包括:
顶点数据缓存Buffer读取三角形的顶点坐标属性和三条边的参数信息;
边函数归一化模块将三角形的三条边的边方程通过归一化变换为同一种形式的边方程,并置于三角形包围盒坐标系中;
端点生成模块将归一化的边方程沿Y坐标进行遍历,生成相应的归一化端点坐标X,并将计算出的归一化坐标还原至归一化之前的6类边方程的坐标;
跨度生成模块通过比较三角形左右边界的端点坐标,得到三角形同一Y坐标下的两个端点;
跨度缓存Buffer存储三角形跨度的端点坐标,并将端点坐标打包送至后端的块生成器进行处理。


4.根据权利要求3所述的GPU中实现三角形光栅化的方法,其特征在于,所述的三角形的顶点坐标属性包含三角形的三个顶点坐标(x1,y1)、(x2,y2)、(x3,y3),三条边的参数信息为对应边方程f(x,y)=Ax+By+C=0的参数信息(A1,B1,C1)、(A2,B2,C2)、(A3,B3,C3)。


5.根据权利要求3所述的GPU中实现三角形光栅化的方法,其特征在于,所述边函数归一化模块将三角形的三条边的边方程通过归一化变换为同一种形式的边方程,并置于三角形包围盒坐标系中,具体包括以下步骤:
步骤1:确定三角形包围盒的坐标,即包围三角形的最小矩形的坐标;包围盒左上角坐标为(xmin,ymin),右下角坐标为(xmax,ymax),对应的包围盒高度包围盒宽度W=2m,其中将包围盒左上角坐标定义为(0,0),那么三角形的包围盒坐标0≤x≤W,0≤y≤H;
步骤2:确定三条边的类型;由于三角形内部数据为有效数据,三条边按照顺时针方向判定,边的右半平面为有效数据,即f(x,y)≥0的坐标有效;为了避免GPU中不同三角形边界的重复计算,默认三角形的左边界为实线,右边界为虚线,即相对坐标范围为0≤x<W,0≤y≤H;那么按照边方程f(x,y)=Ax+By+C定义,代表三角形内部有效数据的边的半平面就分为左边界f(x,y)=Ax+By+C≥0的半闭平面和右边界f(x,y)=Ax+By+C>0的半开平面;据此,可将边的类型分为以下6种:
类1:当A<0,B≥0时,令f(x,y)=Ax+By+C>0的半开平面;
类2:当A<0,B<0时,令f(x,y)=Ax+By+C>0的半开平面;
类3:当A=0,B<0时,令f(x,y)=Ax+By+C>0的半开平面;
类4:当A>0,B≤0时,令f(x,y)=Ax+By+...

【专利技术属性】
技术研发人员:阮成肖李姝仪张航苑豪杰李二磊刘彤纪录张琦冯蕾李红星周吉
申请(专利权)人:中国船舶重工集团公司第七一六研究所
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1