一种基于GPU的渲染地形的方法技术

技术编号:8241680 阅读:185 留言:0更新日期:2013-01-24 22:37
本发明专利技术提供一种基于GPU的渲染地形的方法,包括:对高程纹理数据进行组织,逐级排列的不同分辨率的高程纹理数据;根据顶点位置从相应层获取高程纹理组织数据的高程值,获得高程纹理组织数据的高程值;对过渡带进行顶点高程数据的混合,获得多过渡带的高程混合数据;在像素着色器中计算法向量及细节纹理,获得法向量及细节纹理;将图像渲染到屏幕上,获得在屏幕上显示的图像渲染效果;检测视点是否更新,作出相应的操作;该方法是一种快速的渲染地形的方法,得到的三维图像显示连续。

【技术实现步骤摘要】

本专利技术涉及计算机图形学领域,特别是涉及一种基于GPU的GeometryClipmap渲染地形的方法。
技术介绍
随着信息技术的快速发展,大规模复杂场景的实时漫游技术变得日趋重要。利用计算机技术,以三维可视化的形式将海量场景数据表现出来是一个发展的必然趋势,但相对于凌乱的文字数据,采用三维场景形式展示给用户的信息量非常巨大。传统大规模场景渲染算法的实现通常要在CPU上进行复杂的数据分块、复杂的数据结构维护以及复杂的精细层次筛选计算等操作,导致了计算负担比较重。而庞大的数据存取和庞大数据的渲染是导致计算负担较重的两个因素。I)庞大的数据存取 无限大的场景模拟需要海量的场景数据。一个典型的大规模场景渲染实例就是室外地形的渲染,地形数据的大小又决定了场景的大小,因此如何保存这些地下数据成了首要的问题。由于数据量庞大,这些数据还不能全部存放在计算机内存中,为了降低渲染计算机硬件的要求,数据平时要放在硬盘中。因此,在算法上就需要一种预取和释放的策略,尽量减少系统内存性能的受影响程度。2)庞大数据的渲染当实时漫游大区域地形时,视野很多情况下都是无限的,而无限的视野就意味着要渲染无限的图元,对于现有的计算机资源是不可能实现的。图元数量是以场景大小平方的速度增长,只考虑地形数据,一个2048x2048地形图,如果不考虑减低细节程度和裁剪的话,它将要渲染8M的三角形,目前计算机配置很难实现交互式帧率。因此,减少要渲染地形的图元数目是该领域解决的核心问题,在质量误差范围内,一切工作都是为了减少渲染数据量。为了解决海量数据存取和渲染的问题,常用的方法是将地形数据按照不同精细层次进行分块,在内存中维护一个复杂的数据结构(通常是kd树),然后当视点移动的时候,根据屏幕像素级别的误差要求,在这棵树中选取不同精细层次的数据,最后将不同精细层的地形块拼接在一起。这种传统的算法会造成CPU运算负荷过大,导致三维图像显示不连续。总之,现有的进行渲染地形的方法存在渲染地形的过程中运算复杂,速度慢的缺陷。因而,目前需要本领域技术人员迫切解决的一个技术问题就是如何找到一种新型的快速的渲染地形的方法。
技术实现思路
本专利技术所要解决的一个技术问题是提供一种基于GPU的GeometryClipmap渲染地形的方法,该方法是一种快速的渲染地形的方法,得到的三维图像显示连续。为了解决上述问题,本专利技术公开了一种基于GPU的GeometryClipmap渲染地形的方法,包括对高程纹理数据进行组织,逐级排列的不同分辨率的高程纹理数据;根据顶点位置从相应层获取高程纹理组织数据的高程值,获得高程纹理组织数据的高程值;对过渡带进行顶点高程数据的混合,获得多过渡带的高程混合数据;在像素着色器中计算法向量及细节纹理,获得法向量及细节纹理;将图像渲染到屏幕上,获得在屏幕上显示的图像渲染效果; 检测视点是否更新,作出相应的操作。优选的,所述对高程纹理数据进行组织,逐级排列的不同分辨率的高程纹理数据的步骤,包括获取当前视点范围内的高程纹理数据,得到当前视点范围内的高程纹理数据;获取不同分辨率的高程纹理数据,得到不同分辨率的高程纹理数据;将不同分辨率的高程纹理数据按照Clipmap的方式进行排列,获得逐级排列的不同分辨率的高程纹理数据。优选的,所述对高程纹理数据进行组织的步骤,包括对高程纹理数据的高度数据进行组织,获得合成后的高程纹理数据的高度数据;对高程纹理数据的水平数据进行组织,获得高程纹理数据的水平数据;对高程纹理数据的地形数据进行合并,获得高程纹理数据的地形数据。优选的,所述对高程纹理数据的高度数据进行组织,获得合成后的高程纹理数据的高度数据的步骤,包括将高度纹理数据的高度数据进行创建,获得32位float精度的纹理高度数据;将两层纹理高度数据保存到一张纹理内并传输给GPU ;将当前层的纹理高度数据保存为32位float精度的纹理高度数据的整数部分;将相邻的下一层纹理高度数据保存为32位float精度的纹理高度数据的小数部分; 对两层纹理高度数据进行合成;采用公式I来对两层纹理高度数据进行计算,获得合成后的高程纹理数据的高度数据;Vdest (U,V) = VLevelN (u,V) +VLevelN+1 (u,v) *0. 001(I)其中,Vdest (u,v)是合成后的纹理高度数据,VLevelN(u,v)是相对精细层的纹理高度数据,VLevelN+1 (U,v)是相对粗糙层的纹理高度数据。优选的,所述对高程纹理数据的地形数据进行合并,获得高程纹理数据的地形数据的步骤,包括利用高度数据创建创建FMT_R32纹理,获得纹理数据;将纹理数据传入Vertex Shader的常量表;把高度Z数据传进GPU,获得GPU内的一维高度Z数据;X、y 二维数据通过顶点缓冲方式传输进GPU,获得GPU内的x、y 二维数据;将上述GPU内的一维高度Z数据及GPU内的x、y 二维数据合成,获得高程纹理数据的地形数据。优选的,所述检测视点是否更新,作出相应的操作的步骤,包括检测视点是否更新,获得视点是否更新的分析结果;若分析结果是视点已经进行了更新,则执行视点更新的相应操作;若分析结果是视点没有进行更新,则接收算法结束请求指令,完成对地形进行渲染的全过程。优选的,所述若分析结果是视点已经进行了更新,则执行视点更新的相应操作的步骤,包括 若分析结果是视点已经进行了更新,获得视点更新的数据;依据视点更新的数据来计算视点移动的数值变化,获得视点移动值;依据视点移动值来对高程纹理数据进行更新,获得更新后的高程纹理数据;根据顶点位置从相应层获取高程纹理组织数据的高程值,获得高程纹理组织数据的高程值;对过渡带进行顶点高程数据的混合,获得过渡带的高程混合数据;在像素着色器中计算法向量及细节纹理,获得法向量及细节纹理;将图像渲染到屏幕上,获得在屏幕上显示的图像渲染效果;完成上述操作,执行一轮视点更新的相应操作;执行多轮视点更新的相应操作;检测视点是否更新的结果为视点没有进行更新,则接收算法结束请求指令,完成对地形进行渲染的全过程。优选的,所述裂缝消除的方式为通过在两个地形块之间添加一个过渡带,使得在过渡带的边缘高度数据和下一层采集的高度数据是同一个精细度,则使得裂缝消除。优选的,所述通过GeometryClipmap的方式对地形进行渲染,获得地形渲染的效果图。优选的,所述通过GeometryClipmap的方式对地形进行渲染,获得地形渲染的效果图的步骤,包括把地形数据缓存在一组嵌套的规格网格内;当观察点移动时,通过更新地形数据,获得更新后的地形数据;规整的网格在GPU中利用vertex Texture技术对高度数据进行采样,获得高度数据;将高度数据和二维平面数据进行组合,获得三维空间数据;依据三维空间数据对地形进行渲染,获得地形渲染的效果图。本专利技术显著优点在于最大限度减少地形渲染时的CPU负荷。大规模地形渲染不仅仅是地形网格的渲染,还需要对某些地表物体进行特殊处理,比如野外的地表衍生物如树木、杂草、地貌等,模拟这些效果同样需要很高的代价。所以,为了提高室外大规模地形的渲染质量,在基本网格上需要尽可能减少计算量,以降低CPU的负荷,在有限的计算资源上实现地表渲染的其它特殊效果。总之,本专利技术提供本文档来自技高网
...

【技术保护点】
一种基于GPU的GeometryClipmap渲染地形的方法,其特征在于,包括:对高程纹理数据进行组织,逐级排列的不同分辨率的高程纹理数据;根据顶点位置从相应层获取高程纹理组织数据的高程值,获得高程纹理组织数据的高程值;对过渡带进行顶点高程数据的混合,获得多过渡带的高程混合数据;在像素着色器中计算法向量及细节纹理,获得法向量及细节纹理;将图像渲染到屏幕上,获得在屏幕上显示的图像渲染效果;检测视点是否更新,作出相应的操作。

【技术特征摘要】

【专利技术属性】
技术研发人员:齐成涛
申请(专利权)人:克拉玛依红有软件有限责任公司
类型:发明
国别省市:

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

1