基于图形处理器加速的地形渲染方法技术

技术编号:7918092 阅读:235 留言:0更新日期:2012-10-25 02:59
本发明专利技术公开了一种基于图形处理器实现的算法,不仅能够有效消除地形LOD渲染过程中出现的T型裂缝问题,由于基于图形处理器进行计算,节省了CPU的运算资源,提升了CPU的处理性能。本发明专利技术能够在仅支持Direct3D9的计算机上高质量高性能的渲染大规模地形,可以广泛应用于3D游戏和虚拟现实应用程序中。本发明专利技术包括以下步骤:将原始地形图像划分为多个面积相等的地形块;使用LOD地形绘制算法,创建不同LOD级别的顶点缓冲和索引缓冲;用四叉树组织整个原始地形,每个叶子节点对应一个地形块;渲染地形;利用GPU进行VertexShader编程,使用顶点纹理采样功能从高度图获取地形块顶点的高度值;修改顶点的高度值。

【技术实现步骤摘要】

本专利技术涉及图形学领域,特别是涉及一种基于图形处理器进行三维地形渲染处理的方法。
技术介绍
大规模地形渲染是虚拟自然场景中的重要组成部分,目前国内外游戏地形渲染中通常使用了基于中央处理器(CPU)的运算方法计算细节层次,虽然能够大幅降低三角形渲染数量,但缺陷是每一帧都需要更新从CPU到GPU传送的三角形数据,占用宝贵的CPU资源和总线带宽。·随着近年来图形算法的改进和计算机显卡性能的提高,充分利用图形处理器(GPU)性能来生成实时地形已成为可能。在图形渲染过程中不同层次过渡处会出现T型裂缝,目前现有技术中消除T型裂缝的做法主要分为跳点法和加点法,都比较繁琐复杂,并且额外增加了不少性能开销。跳点法就是在较高分辨率的分块的边界上跳过一些点不绘制,这样可以保持相邻分块的连续性。加点法就是在较低分辨率的分块边界上新增一些顶点以达到两个分块顶点保持连续的目的。无论是新增点还是去除点都需要对整个地形进行遍历并且对相关分块重新进行三角形剖分,而且丧失了分块的独立性,给我们利用分块的Cache带来了难度,增加了问题的复杂性,进而影响到效率。还有另外一种效率更高的消除裂缝的办法。对每个分块的四条边,在现有的顶点的基础上再延伸出一圈,他们和单个分块的边界共享顶点,只是高度值不同,这种延伸出来的一圈叫做“裙子”(Skirts )。投影之后只要保证顶点的高度值足够大,两个分块的裙子可以把裂缝遮挡住。当然,这种消除裂缝的方式会增加绘制的三角形绘制数量,也会带来性能的的下降。
技术实现思路
为解决上述问题,本专利技术公开了一种使用图形处理器(GPU)实现的几何体层次细分(LOD)算法,能够有效消除T型裂缝。为了达到上述目的,本专利技术提供如下技术方案 一种,包括以下步骤 (1)将整个原始地形划分为2Nx2N个面积相等的地形块(Block);每个地形块的的长和宽均相等,地形块被分为2M x2M个面积相等的单元格;其中,M彡0,N彡0,且M和N均为整数; (2)使用LOD地形绘制算法,创建不同LOD级别的顶点缓冲和索引缓冲;LOD级别分为0级,I级……M级,共有M+1级,在不同LOD级别下创建相应的顶点缓冲和索引缓冲,所有地形块共享一组顶点缓冲和索弓I缓冲; (3)用四叉树组织整个原始地形,每个叶子节点对应一个地形块; (4)渲染地形; (5)利用GPU进行VertexShader编程,使用顶点纹理采样功能从高度图获取地形块顶点的高度值; (6 )根据步骤(5 )中获得的高度值修改顶点缓冲中各顶点的高度值,当相邻地形块之间的LOD级别不一样时,对LOD级别较低的地形块边缘顶点坐标进行位移。。所述步骤(2)中创建顶点缓冲的过程包括将不同LOD级下每个顶点的位置写入顶点缓冲中,改写地形块边缘编号为奇数的顶点的Z值,所述编号自边缘末端由0开始。 所述改写地形块边缘Z值的过程具体包括将地形块左边缘编号为奇数的顶点Z值改写为I,地形块上边缘编号为奇数的顶点Z值改写为2,地形块右边缘编号为奇数的顶点Z值改写为3,地形块下边缘编号为奇数的顶点Z值改写为4。所述步骤(6)中的具体操作步骤如下 当顶点的Z值在步骤(2)中未被改写时,将Z值修改为通过顶点纹理采样功能获得的高度值; 当顶点的Z值在步骤(2)中已被改写且该地形块与相邻地形块之间的LOD级别一样时,将Z值修改为通过顶点纹理采样功能获得的高度值; 当顶点的Z值在步骤(2)中已被改写且相邻地形块之间的LOD级别不一样时,对LOD级别较低的地形块边缘编号为奇数的顶点坐标进行位移。所述对LOD级别较低的地形块边缘编号为奇数的顶点坐标进行位移的过程包括将地形块左边缘编号为奇数的顶点坐标值修改为该顶点上方的顶点坐标值;将地形块上边缘编号为奇数的顶点坐标值修改为该顶点左方顶点的坐标值;将地形块右边缘编号为奇数的顶点坐标值修改为该顶点下方的顶点坐标值;将地形块下边缘编号为奇数的顶点坐标值修改为该顶点右方的顶点坐标值。所述步骤(4)中渲染地形的过程包括使用视锥体与四叉树递归计算后快速剔除不可见节点,从而获取一组可视地形块,根据视点到地形块中心的水平距离计算出各地形块的LOD级数;针对每个可视地形块计算出的LOD级数所对应的顶点和索引缓冲,再进行三角形列表图元的渲染。与现有技术相比,本专利技术提供的地形渲染方法具有以下优点和有益效果 I.算法简单高效,节约资源,有效消除了地形LOD渲染过程中出现的T型裂缝问题。2.基于图形处理器(GPU)进行计算,节省了 CPU的运算资源,提升了 CPU的处理性倉泛。本专利技术能够在仅支持Direct3D 9的计算机上高质量高性能的渲染大规模地形,可以广泛应用于3D游戏和虚拟现实应用程序中。附图说明图I为原始地形图和地形块的划分 其中图a为原始地形图像划分图,图b为a图中圆圈圈出的地形块的放大 图2为由精细到粗糙依次列出的6种LOD级别;其中图a为33x33个顶点的LOD级,图b为17x17个顶点的LOD级,图c为9x9个顶点的LOD级,图d为5x5个顶点的LOD级,图e为3x3个顶点的LOD级,图f为2x2个顶点的LOD级。图3为实施方式中采用的世界坐标系。图4为LOD级为3的地形块,并列出了边缘上顶点的(X,Y)坐标值。图5为LOD级为3的地形块中Z值改写图。 图6为用四叉树组织的整个原始地形图。图7为地形块在Vertex Shader里进行顶点纹理采样的过程。图8为不同LOD级别的地形块相邻处产生T型裂缝的示意图。 图9为LOD级数为3的地形块四条边缘上的顶点位移图。图10为经过位移后消除了 T型裂缝的不同LOD级别之间地形块相邻示意图。具体实施例方式以下将结合具体实施例对本专利技术提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本专利技术而不用于限制本专利技术的范围。本地形渲染方法包括以下步骤 (I)首先,获取原始地形图像,原始地形的长和宽相等,将原始地形的长和宽均匀地分为2N个等分,即长和宽上均存在2n +1个顶点,这样能够将整个地形划分为2nx 2n个面积相等的地形块(Block)。本例中如图I中的左侧图所示,N取16,即整个地形被划分为16x16=256个面积相等的地形块(Block)。其中,每个地形块的的长和宽均相等,地形块的长和宽也可被分为2Mf等分,即长和宽上均存在2M +1个顶点;上述M彡0,N彡0,且M和N均为整数。通常情况下M取5,如图I中右侧图所示,该地形块可被分为32x 32个单元格,地形块上存在33x 33个顶点。划分之后,整个原始地形上存在(2N X 2m+1)x (2n X 2m+1)个顶点,在本例中为513x 513个顶点。(2)使用LOD地形绘制算法,创建不同LOD级别的顶点缓冲和索引缓冲。。每个地形块共享一组以不同LOD级创建的顶点和索引缓冲。进行常规地形渲染时,地形块尺寸通常为64mx64m,地形块由精细到粗燥依次可分为如图2所示的33x33,17x17,9x9,5x5,3x3,2x2共计6个LOD级。由精细到粗糙,将LOD级别依次设为0 5级,即33x33个顶点的LOD级为0级,17x17个顶点的LOD级为I级,9x9个顶点的LOD级为2级,5x5个顶点的LOD级为3级,3x3个顶点的LOD级为4级,2x2个顶本文档来自技高网...

【技术保护点】
一种基于图形处理器加速的地形渲染方法,其特征在于包括以下步骤:(1)将整个原始地形划分为2Nx?2N个面积相等的地形块(Block);每个地形块的的长和宽均相等,地形块被分为2M?x2M个面积相等的单元格;其中,M≥0,N≥0,且M和N均为整数;(2)使用LOD地形绘制算法,创建不同LOD级别的顶点缓冲和索引缓冲;LOD级别分为0级,1级……M级,共有M+1级,在不同LOD级别下创建相应的顶点缓冲和索引缓冲,所有地形块共享一组顶点缓冲和索引缓冲;(3)用四叉树组织整个原始地形,每个叶子节点对应一个地形块;(4)??渲染地形;(5)利用GPU进行Vertex?Shader编程,使用顶点纹理采样功能从高度图获取地形块顶点的高度值;(6)根据步骤(5)中获得的高度值修改顶点缓冲中各顶点的高度值,当相邻地形块之间的LOD级别不一样时,对LOD级别较低的地形块边缘顶点坐标进行位移。

【技术特征摘要】

【专利技术属性】
技术研发人员:张子龙
申请(专利权)人:南京安讯网络服务有限公司
类型:发明
国别省市:

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

1