本发明专利技术公开一种基于流水线和状态机的三角形快速分块设计方法,包括以下步骤:(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写地址。
【技术实现步骤摘要】
【专利摘要】本专利技术公开,包括以下步骤:(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写地址。【专利说明】
本专利技术设计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。本专利技术采用如下技术手段实现专利技术目的:,其特征在于,包括以下步骤:(I)从场景缓存scene buffer中读取裁剪后的三角形数据并编号;( 2 )将三角形进行视口变换;(3)计算三角形的包围盒、边界函数参数;(4)计算与包围盒相交的分块tile范围;(5)根据步骤(4)所确定的三角形包围盒与分块tile相交类型,用I位掩码表示,O表示non-false-over lap无错误覆盖类型情况,I表示包含false-over lap表示含有错误覆盖类型;(6)将三角形编号及步骤(3) (4) (5)所得相关信息写入中间先进先出存储单元FIFO ;(7)分块列表生成单元Tile list读取中间先进先出存储单元FIFO中相关数据;(8)根据掩码信息解析相交类型,若为I则转入步骤(9),若为O则转入步骤(10);(9)根据当前三角形数据进行LET相交测试,若相交则转入步骤(10),否则转入步骤(11);(10)计算当前tile所对应的tile list写地址,并将当前三角形编号写入;(11)将当前tile坐标增加相应量,并判断与包围盒相交的tile是否都已经处理完,若没有处理完成,转步骤(8),若处理完成,转步骤(7),直到中间先进先出存储单元FIFO为空结束。作为对本技术方案的进一步限定,所述步骤(2)包括以下步骤:(2.1)显示器屏幕的宽和高分别记为scr_h,绘制窗口左下角坐标(win_x, win_y),绘制窗口宽和高分别为win_w、win_h,三角形三个顶点坐标v0 (x0, y0),vl (xl, yl),v2 (x2, y2),视口变换后的顶点坐标记为 VO (Χ0, Υ0),Vl (XI,Yl),V2 (X2, Y2),首先计算 win_w/2> win_h/2;(2.2)分别计算 x0*win_w/2、xl*win_w/2、x2*win_w/2、y0*win_h/2、yl*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、Xl=xl+xl*win_w/2、Yl=yl+yl*win_h/2、X2=x2+x2*win_w/2、Y2=y2+y2*win_h/2 ;作为对本技术方案的进一步限定,所述步骤(3)包括以下步骤:(3.1)比较X0、X1、X2,Y0、Yl、Y2,分别记得到的较大值较小值为MIN_X、MIN_Y,MAX_X、MAX_Y,得到三角形的包围盒;(3.2)计算三角形三条边eO、el、e2所在直线的方程参数,具体如下:e0=a0*x+b0*y+c0, el=al*x+bl*y+cl, e2=a2*x+b2*y+c2,其中,aO=Yl-Y2,al=Y2_Y0, a2=Y0_Yl,bO=X2_Xl, bl=X0_X2, b2=Xl_X0,cO=X1Y2_X2Yl, cl=X2Y0-X0Y2, c2=X0Y1_X1Y0。作为对本技术方案的进一步限定,所述步骤(4)包括以下步骤:(4.1)将步骤(3)中得到的MIN_X、MIN_Y、MAX_X、MAX_Y的浮点类型数据舍弃小数部分转化为整型,得到 MIN_X_1、MIN_Y_1、MAX_X_1、MAX_Y_I ;(4.2)记所选取的 tile 的边长均 tile_w,对 MIN_X_1、MIN_Y_1、MAX_X_1、MAX_Y_I作相应的低位置零操作,得到的值分别记为I_MIN、J_MIN、I_MAX、J_MAX,即为与包围盒相交的tile的左下角坐标本文档来自技高网...
【技术保护点】
一种基于流水线和状态机的三角形快速分块设计方法,其特征在于,包括以下步骤:(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为空结束。...
【技术特征摘要】
【专利技术属性】
技术研发人员:孙涛,周莉,王佳,
申请(专利权)人:济南大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。