CN103559679B - 一种基于流水线和状态机的三角形快速分块设计方法 - Google Patents
一种基于流水线和状态机的三角形快速分块设计方法 Download PDFInfo
- Publication number
- CN103559679B CN103559679B CN201310556494.7A CN201310556494A CN103559679B CN 103559679 B CN103559679 B CN 103559679B CN 201310556494 A CN201310556494 A CN 201310556494A CN 103559679 B CN103559679 B CN 103559679B
- Authority
- CN
- China
- Prior art keywords
- tile
- triangle
- win
- max
- coordinate
- 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
Landscapes
- Image Generation (AREA)
Abstract
本发明公开一种基于流水线和状态机的三角形快速分块设计方法,包括以下步骤:(1)从scene buffer中读取裁剪后的三角形数据并编号;(2)将三角形进行视口变换;(3)计算三角形的包围盒、边界函数参数;(4)得到与包围盒相交的tile范围;(5)根据(4)所的范围确定三角形、tile相交类型;(6)将三角形编号及(3)(4)所得相关信息写入中间FIFO;(7)Tile list生成单元读取FIFO中相关数据;(8)根据mask code解析相交类型;(9)根据当前三角形数据进行LET相交测试,若相交则转入(10),否则转入(11);(10)计算当前tile所对应的tile list写地址。
Description
技术领域
本发明设计tile-based渲染架构GPU设计技术领域,特别是涉及tile-based GPU渲染架构中一种基于流水线和状态机的三角形快速分块设计方法。
背景技术
GPU(Graphics Processing Unit,图形处理器)的出现极大程度加快了计算机图形绘制速度,增强了图形绘制效果,因而广泛应用于航空航天、医疗成像等领域。随着智能手机等移动终端的普及人们对移动设备人机交互界面体验感觉要求的不断提高,面向移动设备的GPU的研究也得到了很大的发展。
GPU绘制模式主要分为两种,一种为传统的立即绘制模式,即绘制过程以三角面为单位进行,一个三角面送入绘制管线后会立即被绘制。由于绘制管线要求对每个三角形进行深度测试,片外存储器中需要保存一个与屏幕同等大小的帧缓冲、深度缓冲,大量的对不可见像素的深度读写极大地浪费了带宽,并增加了不必要的功耗;另一种则为基于Tile的绘制模式,该模式下将屏幕划分为很多个Tile,并以此为单位进行绘制。首先对三角形进行分类,得到与每个Tile相交的所有三角形的信息,存入Tilelist中,当一个场景中所有三角面都接收完毕后再进行绘制。该绘制模式下,帧缓冲与深度缓冲大小均与Tile大小一致即可,因此可以将其置于片上,在降低深度测试读写带宽方面具有明显的优势;并且每个Tilelist中都包含了本Tile在当前绘制场景中所有被绘制的三角形,可以在像素处理操作之前进行深度测试,减少对不可见像素进行纹理贴图等无效绘制带来的带宽及功耗。基于Tile的绘制流程分为划分Tile、生成Tile list、Tile的绘制三个步骤。其中如何精确、快速生成与每个Tile相交的Tile list对于绘制效率的提升具有十分关键的作用。判定三角形是否与Tile相交是基于Tile绘制架构关键步骤,该操作对每个三角形都要执行,因此算法复杂度不宜过高。常见的覆盖判定算法主要包括包围盒测试(BBOX Test)、边界函数测试(Line Edge Test,LET)、叉乘测试(Cross Product Test,CPT)等。其中BBOX Test简单、便于实现,但因可能存在仅与包围盒相交而不与三角形相交的tile而增加无效存储、绘制,进一步加重系统的带宽、功耗问题;LET及CPT算法更精确地判断三角形与tile是否相交,能有效减少false-over lap的tile数量,但因其算法复杂度较高,影响了渲染速率。通常可以采用仅对通过BBOX测试的tile进行高级三角形覆盖测试的方法,使系统性能趋于最优。
发明内容
本发明主要解决的技术问题是提供一种基于流水线与状态机的三角形快速分块设计架构,mask code判断的加入可以有效避免non-false-over lap情况下无效计算,更快、更精确地得到tile list。
本发明采用如下技术手段实现发明目的:
一种基于流水线和状态机的三角形快速分块设计方法,其特征在于,包括以下步骤:
(1)从场景缓存scene buffer中读取裁剪后的三角形数据并编号;
(2)将三角形进行视口变换;
(3)计算三角形的包围盒、边界函数参数;
(4)计算与包围盒相交的分块tile范围;
(5)根据步骤(4)所确定的三角形包围盒与分块tile相交类型,用1位掩码表示,0表示non-false-over lap无错误覆盖类型情况,1表示包含false-over lap表示含有错误覆盖类型;
(6)将三角形编号及步骤(3)(4)(5)所得相关信息写入中间先进先出存储单元FIFO;
(7)分块列表生成单元Tile list读取中间先进先出存储单元FIFO中相关数据;
(8)根据掩码信息解析相交类型,若为1则转入步骤(9),若为0则转入步骤(10);
(9)根据当前三角形数据进行LET相交测试,若相交则转入步骤(10),否则转入步骤(11);
(10)计算当前tile所对应的tile list写地址,并将当前三角形编号写入;
(11)将当前tile坐标增加相应量,并判断与包围盒相交的tile是否都已经处理完,若没有处理完成,转步骤(8),若处理完成,转步骤(7),直到中间先进先出存储单元FIFO为空结束。
作为对本技术方案的进一步限定,所述步骤(2)包括以下步骤:
(2.1)显示器屏幕的宽和高分别记为scr_w和scr_h,绘制窗口左下角坐标(win_x,win_y),绘制窗口宽和高分别为win_w、win_h,三角形三个顶点坐标v0(x0,y0),v1(x1,y1),v2(x2,y2),视口变换后的顶点坐标记为V0(X0,Y0),V1(X1,Y1),V2(X2,Y2),首先计算win_w/2、win_h/2;
(2.2)分别计算x0*win_w/2、x1*win_w/2、x2*win_w/2、y0*win_h/2、y1*win_h/2、y2*win_h/2,得到V0、V1、V2相对于绘制窗口左下角的坐标值;
(2.3)将(2.2)得到的坐标值分别与绘制窗口左下角在屏幕坐标系中的坐标值相加,得到三角形三个顶点在屏幕坐标系中的坐标值X0=x0+x0*win_w/2、Y0=y0+y0*win_h/2、X1=x1+x1*win_w/2、Y1=y1+y1*win_h/2、X2=x2+x2*win_w/2、Y2=y2+y2*win_h/2;
作为对本技术方案的进一步限定,所述步骤(3)包括以下步骤:
(3.1)比较X0、X1、X2,Y0、Y1、Y2,分别记得到的较大值较小值为MIN_X、MIN_Y,MAX_X、MAX_Y,得到三角形的包围盒;
(3.2)计算三角形三条边e0、e1、e2所在直线的方程参数,具体如下:
e0=a0*x+b0*y+c0,e1=a1*x+b1*y+c1,e2=a2*x+b2*y+c2,
其中,a0=Y1-Y2,a1=Y2-Y0,a2=Y0-Y1,b0=X2-X1,b1=X0-X2,b2=X1-X0,c0=X1Y2-X2Y1,c1=X2Y0-X0Y2,c2=X0Y1-X1Y0。
作为对本技术方案的进一步限定,所述步骤(4)包括以下步骤:
(4.1)将步骤(3)中得到的MIN_X、MIN_Y、MAX_X、MAX_Y的浮点类型数据舍弃小数部分转化为整型,得到MIN_X_I、MIN_Y_I、MAX_X_I、MAX_Y_I;
(4.2)记所选取的tile的边长均tile_w,对MIN_X_I、MIN_Y_I、MAX_X_I、MAX_Y_I作相应的低位置零操作,得到的值分别记为I_MIN、J_MIN、I_MAX、J_MAX,即为与包围盒相交的tile的左下角坐标范围。
作为对本技术方案的进一步限定,所述步骤(5)包括以下步骤:
(5.1)分别比较I_MIN和I_MAX,J_MIN和J_MAX是否相等;
(5.2)若以上两组数据比较结果中任意一组结果为相等,则判断该三角形与tile相交情况为non-false-over lap情况,mask code置为0;否则表明与包围盒相交的tile中包含false-over lap情况,mask code置为1。
作为对本技术方案的进一步限定,所述步骤(9)包括以下步骤:
(9.1)对于当前tile坐标(I,J),默认为(I_MIN,J_MIN),选取其中心点坐标tile_center(xc,yc),计算e0(xc,yc)、e1(xc,yc)、e2(xc,yc),并分别记tile_w/2*(|a0|+|b0|)、tile_w/2*(|a1|+|b1|)、tile_w/2*(|a2|+|b2|)为L0、L1、L2;
(9.2)比较(5.1)中计算所得的两组结果,若有:
e0(xc,yc)<=L0;
e1(xc,yc)<=L1;
e2(xc,yc)<=L2;
成立,则判断该tile与三角形相交,否则判断为不相交。
作为对本技术方案的进一步限定,所述步骤(11)包括以下步骤:
(11.1)将当前tile坐标的I分量增加tile_w后与I_MAX比较,如果其小于等于I_MAX,则说明仍在待检测tile范围内,跳转至步骤(8);否则跳转到步骤(11.2);
(11.2)将当前tile坐标的I分量置为I_MIN,J分量增加tile_w后于J_MAX比较,若其小于等于J_MAX,则说明仍在待检测tile范围内,跳转至步骤(8);否则说明待检测tile已处理完成,判断中间先进先出存储单元FIFO是否为空,若为空,则结束,否则,跳转至步骤(7)。
与现有技术相比,本发明的优点和积极效果是:本发明步骤(1)到(6)为优化的三角形BBOX测试,由流水线结构实现;(7)到(11)为tile list生成模块,采用LET算法进行更精确三角形测试,由有限状态机结构实现。本发明最大限度将三角形分块过程中可流线操作部分提取出来加以实现,中间FIFO能够有效掩盖流水线与状态机之间的速度差异,对三角形与tile相交类型的判断标示能有效避免non-false-over lap情况下的无效计算,极大提高了tile list生成状态机的工作效率。
附图说明
图1为本发明的流水线部分流程图。
图2为本发明的状态机部分流程图。
具体实施方式
下面结合附图和优选实例对本发明作更进一步的详细描述
如图1所示,为本发明实现的流水线结构部分。(S1)场景缓存Scene buffer中存有裁剪后、归一化的视锥体内的三角形坐标数据,均为-1到1之间的浮点格式数据。当检测到场景缓存scene buffer非空时,开始从中读取三角形数据,并根据读取顺序给三角形编号。(S2)根据输入的绘制窗口信息对三角形坐标进行视口变换,即将三角形坐标转化到屏幕坐标系中。(S3)在确定三角形在屏幕坐标系中坐标后,通过比较三个顶点的X、Y坐标分量得到其最大值、最小值,即为三角形包围盒;计算三角形三条边所在直线的方程参数;(S4)将步骤(S3)得到的包围盒坐标舍弃小数部分,转化为整数,并根据所选取的tile的边长,对其相应的低位置0,得到与包围盒相交的tile的左下角坐标范围;(S5)比较(S4)所得的与包围盒相交的tile范围,以此判断三角形的相交类型,并用将mask code置0或置1来标示含有false-over lap和non-false-over lap两种情况;(S6)将三角形边界参数、编号、maskcode写入中间FIFO。
如图2所示,为本发明实现的状态机结构部分。(S7)当检测到中间FIFO非空时。开始从中读取三角形数据,否则维持空闲状态;(S8)对读入的三角形数据进行解析,首先根据mask code判断三角形的相交类型,若mask code为1,则表明与包围盒相交的tile中含有false-over lap情况,需要进行进一步的三角形覆盖测试,转入(S9);若mask code为0,则表明与包围盒相交的tile均与三角型相交,不需要进行进一步的三角形覆盖测试,转入(S10);(S9)根据得到的三角形信息,对其进行LET过滤,若测试结果为相交,则转入(S10),否则转入(S11);(S10)计算当前tile所对应的的tile list的写地址,并将当前三角形编号写入;(S11)将当前tile的坐标I分量增加tile_w后,判断所得tile是否在与包围盒相交的tile范围内,若在该范围内,则转至(S8),否则将I分量置为与包围盒相交的tile范围中的最小值,将J分量增加tile_w后判断该tile是否在待检测范围内,若在该范围内则跳转至(S8),否则表明待检测tile范围内所有tile均已处理完,判断中间先进先出存储单元FIFO是否为空,若为空,则结束,否则,跳转至步骤(S7)。
当然,上述说明并非对本发明的限制,本发明也不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也属于本发明的保护范围。
Claims (6)
1.一种基于流水线和状态机的三角形快速分块设计方法,其特征在于,包括以下步骤:
(1)从场景缓存scene buffer中读取裁剪后的三角形数据并编号;
(2)将三角形进行视口变换;
(3)计算三角形的包围盒、边界函数参数;
(4)计算与包围盒相交的分块tile范围;
(5)根据步骤(4)所确定的三角形包围盒与分块tile相交类型,用1位掩码表示,0表示non-false-over lap无错误覆盖类型情况,1表示包含false-over lap表示含有错误覆盖类型;
(6)将三角形编号及步骤(3)(4)(5)所得相关信息写入中间先进先出存储单元FIFO;
(7)分块列表生成单元Tile list读取中间先进先出存储单元FIFO中相关数据;
(8)根据掩码信息解析相交类型,若为1则转入步骤(9),若为0则转入步骤(10);
(9)根据当前三角形数据进行LET相交测试,若相交则转入步骤(10),否则转入步骤(11);
(10)计算当前tile所对应的tile list写地址,并将当前三角形编号写入;
(11)将当前tile坐标增加相应量,并判断与包围盒相交的tile是否都已经处理完,若没有处理完成,转步骤(8),若处理完成,转步骤(7),直到中间先进先出存储单元FIFO为空结束;
所述步骤(2)包括以下步骤:
(2.1)显示器屏幕的宽和高分别记为scr_w和scr_h,绘制窗口左下角坐标(win_x,win_y),绘制窗口宽和高分别为win_w、win_h,三角形三个顶点坐标v0(x0,y0),v1(x1,y1),v2(x2,y2),视口变换后的顶点坐标记为V0(X0,Y0),V1(X1,Y1),V2(X2,Y2),首先计算win_w/2、win_h/2;
(2.2)分别计算x0*win_w/2、x1*win_w/2、x2*win_w/2、y0*win_h/2、y1*win_h/2、y2*win_h/2,得到V0、V1、V2相对于绘制窗口左下角的坐标值;
(2.3)将(2.2)得到的坐标值分别与绘制窗口左下角在屏幕坐标系中的坐标值相加,得到三角形三个顶点在屏幕坐标系中的坐标值X0=x0+x0*win_w/2、Y0=y0+y0*win_h/2、X1=x1+x1*win_w/2、Y1=y1+y1*win_h/2、X2=x2+x2*win_w/2、Y2=y2+y2*win_h/2。
2.根据权利要求1所述的基于流水线和状态机的三角形快速分块设计方法,其特征在于,所述步骤(3)包括以下步骤:
(3.1)比较X0、X1、X2,Y0、Y1、Y2,分别记得到的较大值较小值为MIN_X、MIN_Y,MAX_X、MAX_Y,得到三角形的包围盒;
(3.2)计算三角形三条边e0、e1、e2所在直线的方程参数,具体如下:
e0=a0*x+b0*y+c0,e1=a1*x+b1*y+c1,e2=a2*x+b2*y+c2,
其中,a0=Y1-Y2,a1=Y2-Y0,a2=Y0-Y1,b0=X2-X1,b1=X0-X2,b2=X1-X0,c0=X1Y2-X2Y1,c1=X2Y0-X0Y2,c2=X0Y1-X1Y0。
3.根据权利要求2所述的基于流水线和状态机的三角形快速分块设计方法,其特征在于,所述步骤(4)包括以下步骤:
(4.1)将步骤(3)中得到的MIN_X、MIN_Y、MAX_X、MAX_Y的浮点类型数据舍弃小数部分转化为整型,得到MIN_X_I、MIN_Y_I、MAX_X_I、MAX_Y_I;
(4.2)记所选取的tile的边长均tile_w,对MIN_X_I、MIN_Y_I、MAX_X_I、MAX_Y_I作相应的低位置零操作,得到的值分别记为I_MIN、J_MIN、I_MAX、J_MAX,即为与包围盒相交的tile的左下角坐标范围。
4.根据权利要求3所述的基于流水线和状态机的三角形快速分块设计方法,其特征在于,所述步骤(5)包括以下步骤:
(5.1)分别比较I_MIN和I_MAX,J_MIN和J_MAX是否相等;
(5.2)若以上两组数据比较结果中任意一组结果为相等,则判断该三角形与tile相交情况为non-false-over lap情况,mask code置为0;否则表明与包围盒相交的tile中包含false-overlap情况,mask code置为1。
5.根据权利要求4所述的基于流水线和状态机的三角形快速分块设计方法,其特征在于,所述步骤(9)包括以下步骤:
(9.1)对于当前tile坐标(I,J),默认为(I_MIN,J_MIN),选取其中心点坐标tile_center(xc,yc),计算e0(xc,yc)、e1(xc,yc)、e2(xc,yc),并分别记tile_w/2*(|a0|+|b0|)、tile_w/2*(|a1|+|b1|)、tile_w/2*(|a2|+|b2|)为L0、L1、L2;
(9.2)比较(5.1)中计算所得的两组结果,若有:
e0(xc,yc)<=L0;
e1(xc,yc)<=L1;
e2(xc,yc)<=L2;
成立,则判断该tile与三角形相交,否则判断为不相交。
6.根据权利要求5所述的基于流水线和状态机的三角形快速分块设计方法,其特征在于,所述步骤(11)包括以下步骤:
(11.1)将当前tile坐标的I分量增加tile_w后与I_MAX比较,如果其小于等于I_MAX,则说明仍在待检测tile范围内,跳转至步骤(8);否则跳转到步骤(11.2);
(11.2)将当前tile坐标的I分量置为I_MIN,J分量增加tile_w后与J_MAX比较,若其小于等于J_MAX,则说明仍在待检测tile范围内,跳转至步骤(8);否则说明待检测tile已处理完成,判断中间先进先出存储单元FIFO是否为空,若为空,则结束,否则,跳转至步骤(7)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310556494.7A CN103559679B (zh) | 2013-11-11 | 2013-11-11 | 一种基于流水线和状态机的三角形快速分块设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310556494.7A CN103559679B (zh) | 2013-11-11 | 2013-11-11 | 一种基于流水线和状态机的三角形快速分块设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103559679A CN103559679A (zh) | 2014-02-05 |
CN103559679B true CN103559679B (zh) | 2019-07-02 |
Family
ID=50013919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310556494.7A Active CN103559679B (zh) | 2013-11-11 | 2013-11-11 | 一种基于流水线和状态机的三角形快速分块设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103559679B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8310487B2 (en) * | 2007-11-30 | 2012-11-13 | Imagination Technologies Limited | Multi-core geometry processing in a tile based rendering system |
CN103310409A (zh) * | 2013-06-26 | 2013-09-18 | 济南大学 | 一种Tile-based渲染架构GPU的三角形快速分块方法 |
-
2013
- 2013-11-11 CN CN201310556494.7A patent/CN103559679B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8310487B2 (en) * | 2007-11-30 | 2012-11-13 | Imagination Technologies Limited | Multi-core geometry processing in a tile based rendering system |
CN103310409A (zh) * | 2013-06-26 | 2013-09-18 | 济南大学 | 一种Tile-based渲染架构GPU的三角形快速分块方法 |
Non-Patent Citations (4)
Title |
---|
Efficient Tile-Aware Bounding-Box Overlap Test for Tile-Based Rendering;I. Antochi等;《2004 International Symposium on System-on-Chip》;20050404;第165-168页 * |
Methods for Precise False-Overlap Detection in Tile-based Rendering;Hsiu-ching Hsieh等;《2009 International Conference on Computational Science and Engineering》;20091009;正文第2节第1-4段,图1 * |
Scene Management Models and Overlap Tests for Tile-Based Rendering;I.Antochi等;《Euromicro Symposium on Digital System Design》;20040920;摘要,正文第1节,第3-4节,图1-图2 * |
Tile-Based图形处理方法及高质量图形算法设计;朱玥;《中国博士学位论文全文数据库 信息科技辑》;20130115(第01期);第I138-38页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103559679A (zh) | 2014-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101116111B (zh) | 使用3d光栅化算法的2d/3d线条渲染 | |
EP2047431B1 (en) | Graphics processing unit with extended vertex cache | |
US9245363B2 (en) | System, method, and computer program product implementing an algorithm for performing thin voxelization of a three-dimensional model | |
US9218686B2 (en) | Image processing device | |
KR20150041057A (ko) | Gpu-가속 경로 렌더링 | |
US20100265254A1 (en) | Graphics filled shape drawing | |
US7400325B1 (en) | Culling before setup in viewport and culling unit | |
CN110163087A (zh) | 一种人脸姿态识别方法及系统 | |
CN104603844B (zh) | 减小的位计数多边形光栅化 | |
TWI769138B (zh) | 圖形處理之方法、流水線電路以及計算機程序 | |
CN114529658A (zh) | 一种图形渲染方法及其相关设备 | |
CN105550973B (zh) | 图形处理单元、图形处理系统及抗锯齿处理方法 | |
CN113362420A (zh) | 道路标注生成方法、装置、设备以及存储介质 | |
US20220036106A1 (en) | Method and apparatus for data calculation in neural network model, and image processing method and apparatus | |
CN103310409B (zh) | 一种Tile-based渲染架构GPU的三角形快速分块方法 | |
CN111127590B (zh) | 一种二阶贝塞尔曲线绘制方法及装置 | |
CN110264546B (zh) | 图像合成的方法、装置、计算机可读存储介质及终端 | |
CN103559679B (zh) | 一种基于流水线和状态机的三角形快速分块设计方法 | |
EP2838081A1 (en) | Techniques for reducing memory bandwidth for display composition | |
CN113190150B (zh) | 覆盖物的展示方法、设备和存储介质 | |
CN106415668A (zh) | 用于减少的像素着色的技术 | |
CN113689524A (zh) | 面向平面点集构建凸包的方法、装置、电子设备及介质 | |
Ma et al. | Rasterization of geometric primitive in graphics based on FPGA | |
CN115761123B (zh) | 三维模型处理方法、装置、电子设备以及存储介质 | |
CN114327346B (zh) | 显示方法、显示装置、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210924 Address after: 250101 room 1505, floor 15, building 3, Aosheng building, 1166 Xinluo street, Lixia District, Jinan City, Shandong Province Patentee after: SHANDONG LINGNENG ELECTRONIC TECHNOLOGY Co.,Ltd. Address before: No. 336, West Road, South Xin Zhuang, Shandong, Shandong Patentee before: University of Jinan |