专利名称:新型异步流水线地形绘制方法
技术领域:
本发明涉及地形绘制,尤其涉及一种新的异步流水线地形绘制方法,属于数字化
地形绘制技术领域。
背景技术:
传统的地形绘制算法(比如ROAM或者其他算法)通常是同步流水线地形绘制方 法,其绘制流水线,或者说一帧的一次完整的绘制过程,按先后顺序经历如下几个步骤
准备数据一建树一网格化一绘制 对于上述第一步_准备数据, 一般固定区域大小的地形绘制系统并不需要进行, 但是针对海量地形数据时,由于绘制的地形区域不是固定的,因此应当向数据源(本地或
网络)查询获取新的数据,但是由于磁盘i/o延迟和网络延迟等原因,等待数据准备好的时
间可能会比较长,这样就会拖慢帧率,而后续步骤又必须等待第一步完成后才能进行。
传统同步算法往往针对数据都是一次性载入内存而后建树并采用自适应策略,速 度会非常快。但是对于无法一次性装载入内存的庞大海量地形数据以及更广泛的网络应用 而言,当前所请求的数据(高程数据或纹理数据)可能暂时不能获得,使得必须在建树之前 进行等待,速度自然会降下来。虽然可以做一些策略性质的处理,比如数据没有到就用一个 默认的值代替,这样做提高了性能但损失了画质,因为可能出现很多地方是平地,但是突然 有出现了山峰这样的不利情况。 此外,建树和几何网格化消耗的时间依赖于所创建的地形的大小,递归层次和三 角形数量,现有的地形算法都很难控制每帧的三角形数量,更不用说控制每帧的建树时间 与帧率,即使像ROAM这样采用自适应方式的算法,其采用动态的分裂和合并来控制三角形 数量,也很难让帧率做到完全的稳定。对于规模庞大的地形以及高精度复杂的网格,可能会 让建树和网格化过程非常漫长,徒增后续步骤以及后续绘制流水线的等待时间。但如果网 格复杂度降低,或者地形规模减小,又会损失显示质量。 因此,针对地形绘制技术领域的技术现状,需要一种新的地形绘制方法,能够减少 因耗时的绘制步骤(比如准备数据步骤,或建树和网格化步骤)对后续步骤或后续绘制流 水线引起的等待时间,提高总体绘制效率。
发明内容
本发明的目的在于克服现有技术中存在的问题,提出一种新的地形绘制方法。
和现有的同步流水线地形绘制方法不同,本发明地形绘制方法是一种异步流水线 地形绘制方法。 本发明所述异步流水线地形绘制方法的绘制流水线按先后顺序包括准备数据, CPU操作和GPU操作三个步骤,其特征在于,所述方法在同一时刻包括三个并行的所述绘制 流水线,所述三个流水线在同一时刻不进行相同的所述步骤。 概括而言,本发明方法遵循两条原则,一是在流水线内上述三个步骤前后依次进行,即准备数据步骤在先,CPU操作其次,GPU操作最后;二是三条流水线中相同的步骤前后 依次进行,比如参考图l,流水线i_l, i和i+l的准备数据,CPU操作和GPU操作均依次进 行。再比如,参考图1,当流水线i的准备数据步骤完成后,由于流水线i-l的CPU操作步骤 尚未完成,因此流水线i的CPU操作步骤进入等待直到流水线i-l的CPU操作步骤完成后 才开始进行;类似地,当流水线i+l的CPU操作步骤完成后,由于流水线i的GPU操作步骤 尚未完成,因此流水线i+l的GPU操作步骤进入等待直到流水线i的GPU操作步骤完成后 才开始进行。 图1是描述本发明方法实际操作流程的示意图,图中仅显示了流水线i_l, i和i+l 三条流水线。需要指出的是,流水线是动态变化的,比如流水线i-l的GPU操作步骤完成后, 意味着流水线i-l完结,此时流水线i+2的准备数据步骤开始进行(当然如果流水线i+l 的准备数据步骤尚未完成,则一直等待直到其完成后开始),意味着流水线i+2开始,此时, 仍然并存三条流水线,即,i, i+l和i+2。 可见,上述第二条原则意在用概括的语言描述图1所示的流水化异步并行绘制方 式。 采用这种方式可以有效地减少等待时间,提高整体绘制效率。
本发明所述准备数据步骤包括向本地磁盘或网络请求数据。
本发明所述CPU操作步骤至少包括建树和几何网格化操作。
本发明所述GPU操作步骤至少包括绘制操作。 综上,本发明提出一种新型异步流水线地形绘制方法,通过封装一种通用的同步 算法,无论传统四叉树或者自适应性算法的ROAM算法都可以做异步处理。本发明异步流水 线地形绘制方法主要有以下三个优势
1.速度快 任何地形算法,基本上评判它好坏的最主要标准就是其建树速度,异步算法因为 是异步建树,把建树时间分配到几帧去完成,所以速度可以瞬间提高好几十倍,异步模式同 样可以达到千万级三角形数量的绘制,其性能指数远远超过同类其他算法速度。同时由于 几帧之间,视点移动幅度很小,地形细节变化不是很大,所以不会出现很明显的跳跃现象。
2.解决延迟 本发明异步流水线方法可以通过流水线技术来最大化的降低延迟,另外异步算法
可以通过一种延迟更新策略来平滑延迟,避免出现假数据损失显示质量。 3.帧率稳定以及可控性 本发明异步流水线方法通过设定其更新方式完全可以做到每一帧中建树每一个 操作的时间完全固定,这对于一些对时间要求特别苛刻的效率软件是非常重要的。同时,本 发明也可以根据当前程序所要执行的任务多寡,来动态的分配每一帧的建树更新时间,在 这一点上是其他任何现有同步算法都无法做到的。
图1是描述本发明方法实际操作流程的示意图;
图2是描述本发明实施例前后台操作策略的示意图。
具体实施例方式
下面通过具体实施例结合附图对本发明作进一步描述。 本实施例采用如图1所示的三流水线并行异步绘制方法进行地形绘制,将异步技
术和流水线技术统一在一起,将现有的地形绘制流程分成3个不同的并行模块,准备数据
从本质上来说是I/O操作(或者等待网络操作,本质一样),建树与几何网格化是CPU操作,
绘制是GPU操作,这三项是可以并行进行的,即第i-1条流水线的绘制操作、第i条流水线
的建树及网格化操作、第i+1条流水线的准备数据操作三者可以并行执行。 在本实施例技术方案实际的执行过程中,虽然流水线中的每个模块是连续不停地
重复的做自己的操作,但是对于一次完整的流水线过程,在有些情况下,其中的很多属性
(比如开始的地形的区域,视点位置,高度等等)是不能改变的,必须在准备数据之前就确
定并且锁定,然后随着过程的进行而传递,所以流水线操作需要对于每次完整的建树渲染
操作提供一个唯一的属性拷贝,并且在整个过程中不能被修改。为了达到这一目的,本实施
例在进行准备数据步骤前将需要确定的地形绘制属性数据储存于一个会话(Session)中,
所述会话中的数据供所述准备数据步骤和CPU操作步骤(建树与几何网格化)使用。 所述会话的具体实现方式存在多种方案,本实施例则采用下列方案通过两个会
话交替储存相邻的所述绘制流水线的所述地形绘制属性数据,同时在相邻的两个绘制流水
线中,前一流水线的CPU操作和后一流水线的准备数据操作同时开始进行。 具体来说,本实施例采用前台后台技术实现流水线中准备数据和CPU操作之间的
数据同步问题,其中建树及几何网格化是前台操作,准备数据是后台操作。那么前台操作对
应于一个会话对象,后台操作对应于另外一个会话对象(应当是下一次的会话)。每次当前
台和后台都完成操作之后,就交换前台和后台的会话,那么后台就变为前台,而前台变为后
台之后就更新为下一轮的会话信息,由此实现流水线数据的传递以及同步机制。 举例来说,如图2所示,在前后台转换时点,位于后台的Sb (Sa, Sb表示两个互不相
同的会话)切换为前台,位于前台的Sa则切换为另一个流水线(i+1)的后台。 图2和图1相比还存在一个差别,即在图2实例中,为了实现前后台会话的切换,
前一流水线的CPU操作和后一流水线的准备数据操作必须同时开始进行,比如,就流水线
i+1而言,在图1中,i+l的准备数据操作在i的准备数据操作完成之后即可进行,而在图2
中,i+1的准备数据操作在i的准备数据操作完成之后,还需等待一段时间,以便和i的CPU
操作同时开始进行,以便在Sb由后台进入前台的同时,Sa也可由前台(对应于流水线i-1)
进入后台(对应于流水线i+1)。 对于建树及几何网格化与绘制过程的同步处理也类似。本实施例通过两个显示列 表交替储存相邻的绘制流水线的GPU操作所需的网格数据。 具体来说,在建树及几何网格化的时候,采用显示列表技术把所有几何网格数据 导入GPU绘制管线,那么对于GPU而言,可以让其绘制一个前台显示列表(其实也就是上一 次建树完成的几何网格),而此时建树及网格化生成的是一个后台显示列表,每次当建树和 网格化完成之后,交换前台显示列表和后台显示列表,然后继续更新交换后的后台显示列 表,交换前的后台显示列表则换入前台进行实时绘制。
权利要求
一种新型异步流水线地形绘制方法,其绘制流水线按先后顺序包括准备数据,CPU操作和GPU操作三个步骤,其特征在于,所述方法在同一时刻包括三个并行的所述绘制流水线,所述三个流水线在同一时刻不进行相同的所述步骤。
2. 如权利要求1所述的新型异步流水线地形绘制方法,其特征在于,所述准备数据步 骤包括向本地磁盘或网络请求数据和接收数据和组织数据。
3. 如权利要求l所述的新型异步流水线地形绘制方法,其特征在于,所述CPU操作步骤 包括建树和几何网格化操作。
4. 如权利要求l所述的新型异步流水线地形绘制方法,其特征在于,所述GPU操作步骤 包括绘制操作。
5. 如权利要求l-4任意一项所述的新型异步流水线地形绘制方法,其特征在于,在一 个所述绘制流水线中,在进行准备数据步骤前将需要确定的地形绘制属性数据储存于一个 会话中,所述会话中的数据供所述准备数据步骤和CPU操作步骤使用。
6. 如权利要求5所述的新型异步流水线地形绘制方法,其特征在于,通过两个会话交 替储存相邻的所述绘制流水线的所述地形绘制属性数据,同时在相邻的两个绘制流水线 中,前一流水线的CPU操作和后一流水线的准备数据操作同时开始进行。
7. 如权利要求l-4任意一项所述的新型异步流水线地形绘制方法,其特征在于,通过 两个显示列表交替储存相邻的所述绘制流水线的GPU操作所需的几何网格和纹理数据。
全文摘要
本发明公开了一种新型异步流水线地形绘制方法,属于数字化地形绘制技术领域。本发明方法的绘制流水线按先后顺序包括准备数据,CPU操作和GPU操作三个步骤,所述方法在同一时刻包括三个并行的所述绘制流水线,所述三个流水线在同一时刻不进行相同的所述步骤。所述准备数据步骤包括向本地磁盘或网络请求数据和接收数据和组织数据。所述CPU操作步骤包括建树和几何网格化操作。本发明可用地形绘制,具有速度快,解决延迟,帧率稳定以及可控等优势。
文档编号G06T1/20GK101697226SQ20091023628
公开日2010年4月21日 申请日期2009年10月23日 优先权日2009年10月23日
发明者唐晨, 李胜, 汪国平, 陈毅松 申请人:北京大学;