基于GPU的大批量目标高速标绘技术研究

2015-11-08 05:29段同乐刘文展刘海娟
计算机与网络 2015年11期
关键词:标绘坐标值顶点

段同乐 刘文展 刘海娟

(中国电子科技集团公司第五十四研究所,河北 石家庄 050081)

基于GPU的大批量目标高速标绘技术研究

段同乐刘文展刘海娟

(中国电子科技集团公司第五十四研究所,河北石家庄050081)

为提高实时大批量目标符号绘制速度,提出基于GPU的高速标绘技术,使用CPU把大批量目标的属性数据传递给GPU,基于GPU的并行计算能力,使用顶点着色器和片段着色器,直接把每个目标的属性信息转换为对应的符号绘制。实际工程应用结果表明,随着目标数量的增多,高速标绘技术的绘制效率显著提高。

标图高速GPU编程GL着色器

1 引言

符号标图作为信息化系统的一个重要组成部分[1],具有简单迅速、形象直观、概括力强、清晰易读的特点[2],是反映对象域综合态势的重要手段[3],广泛应用于侦察勘测、应急快反、模拟训练、军事作战指挥等方面。目前,主流的符号标图系统主要基于CPU逐条调用绘图设备图元绘制指令的方式实现符号绘制,其特点为实现简单、易于控制、绘制效果美观、效率较低。随着侦察手段的进步、侦察范围的扩大、多源情报的接入等应用的发展,在汇集陆、海、空各侦察系统提供的复杂多样情报信息后[4],大批量、高动态目标标绘的现实需求已经成为符号标图系统需要解决的关键问题,基于CPU逐条调用绘图设备图元绘制指令的方式从根本上制约了符号绘制效率的提高。

伴随着集成电路和芯片制造工艺的进步,众核体系架构的引入使得计算机的计算能力成倍增长[5]。图形处理器(Graphic Processing unit,GPU)是显卡的“大脑”,即通常所说的图形处理器[6]。使图形绘制极大地减少了对CPU的依赖,尤其在三维绘制技术上取得了巨大成功。当前,GPU的发展已不再局限于3D图形处理,其通用计算技术发展已证明在浮点运算、并行计算等方面可提供数十倍乃至于上百倍于CPU的性能[7]。国内对GPU的开发应用多集中在GPU的通用化并行计算方面,而在二维符号标绘和空间分析等方面却比较缺乏。

本文结合OpenGL语言及GL着色器(GLShader)探讨了利用GPU实现大批量军标符号快速绘制的方法,并根据试验结果说明了GPU对大批量军标符号绘制效能的巨大提升。

2 GPU并行化绘图原理

GPU在现今的每台个人计算机上都可以找到,这种专用的处理器分担了中央处理器(CPU)的二维或三维图形处理任务[8]。图形流水线是GPU工作的通用模型[9],它以图形数据作为输入、输出二维的光栅图像(Raster Images)即位图到显示器。图形流水线起点为图形数据(点、线、面、体等),这些图形数据都需要用附带一系列属性的顶点列表来表达,这个顶点列表即流水线的输入数据。几何处理器负责逐顶点计算,即求他们的位移、旋转和投影变换。接收投影的平面是一个帧缓存,它是由像素定义的光栅化平面,光栅化器把投影在二维平面上的点转化为离散的像素点,通过采样和插值,决定帧缓存里的每个像素该取什么值。这些像素或像素连成的片段还需要经历逐片段操作,即他们的颜色可以根据算法改变,最为常用的既纹理映射此时会覆盖某些像素的值。最终帧缓存里的结果被绘制完成并输出到显示器上,这个过程如图1所示。

图1 图形流水线

图形硬件技术一个最主要的突破就是在图形硬件中引入了可编程功能,该功能允许用户编制自定义的着色器程序(Shaderprogram)来替换原来固定流水线中的某些功能模块[10]。如上图所示几何处理器和片段处理器的部分功能由顶点着色器和片段着色器实现,因此可以实现用户需要的特殊功能。一般情况下,一个GPU会有多个处理器(几十个甚至上百个)[11],他们同时工作,因此实现了GPU大规模并行处理能力。

3 GPU绘制实现方法

绘制之前需要制作RGBA格式的符号纹理贴图,每幅纹理贴图中包含多个符号。每幅纹理贴图大小和每个符号大小可以根据需要的显示效果进行设置,以像素为单位如果设定每幅纹理贴图大小为1024★1024,每个符号大小为64★64,此时每幅贴图可包含256个符号,如果设定每个符号大小为128★128,此时每幅贴图可包含64个符号,使用多张纹理贴图即可满足千种以上类型的符号的需要。对每个符号覆盖的像素的Alpha值设置为1,其他像素的Alpha值设置为0,在绘制时通过Alpha测试使Alpha大于0.5的片段通过,小于0.5的片段不通过即可实现符号覆盖的像素输出到屏幕,其他像素不输出到屏幕。

绘制过程首先需要初始化绘图环境。首先,设置包含多个目标标绘数据的数组,每个目标标绘数据以顶点的数据格式进行存储,每个目标标绘数据对应1个顶点;每个目标标绘数据的信息内容包含位置、方向、属性、类型、大小、选中标志和显隐标志;每个顶点包含1个三维向量的浮点型坐标值与1个二维向量的整数型纹理坐标值;其中顶点的浮点型坐标值中的第一个分量和第二个分量对应目标点的屏幕坐标,顶点的浮点型坐标值中的第三个分量对应目标的方向;顶点的整数型纹理坐标值中的第一个分量代表目标的属性和类型,类型包含符号页号和符号序号;顶点的整数型纹理坐标值中的第二个分量代表目标的大小、选中标志和显隐标志。

然后,载入符号纹理贴图、顶点着色器和片段着色器到显卡的存储单元,由于显卡的存储单元对符号纹理贴图大小的限制因此需要载入多张符号纹理贴图到显卡的存储单元才能支持千种以上符号类型,在GPU计算片段的颜色值时即查找目标的符号页号对应的符号纹理贴图相应位置的颜色值。顶点着色器是一组指令代码,这组指令代码在顶点被渲染时调用,片段着色器处理来自光栅化器的数据,对光栅化形成的片段(像素)逐个计算颜色。将顶点着色器和片段着色器载入到显卡的存储单元即可在图形流水线中使用GPU执行。

在绘图环境设置后,即可在屏幕刷新过程中根据目标状态的变化,实时更新目标标绘数据的数组并将更新后的目标标绘数据数组以顶点的格式刷新到显卡的存储单元形成顶点数组,然后即可利用GPU调用顶点着色器和片段着色器绘制顶点数组。

利用GPU调用顶点着色器和片段着色器绘制顶点数组包含以下步骤:

①使用顶点着色器获取顶点的三维向量的浮点型坐标值与二维向量的整数型纹理坐标值并进行记录,提供给片段着色器使用;

②利用显卡的固有的图形处理流程对顶点进行栅格化处理,形成该顶点对应的多个片段,计算每个片段以该顶点为中心的相对坐标;具体方法为:一个顶点经栅格化后形成一组片段,片段的个数由栅格化点的直径决定,栅格化点的直径为整型,片段的个数为栅格化点直径的平方,每个片段对应一个投影坐标或屏幕坐标,同时对应形成该片段的顶点坐标,为了计算每个片段的纹理颜色,需要计算每个片段以顶点为中心的相对坐标,计算方法为每个片段的投影坐标或屏幕坐标减去对应顶点的投影坐标或屏幕坐标;

③通过对顶点的整数型纹理坐标值计算,得到目标的属性、页号、序号、大小、选中标志和显隐标志;

④根据目标的大小和航向即顶点浮点型坐标值中的第三个分量、目标的符号序号计算每个片段的整数型纹理坐标;具体方法为:根据目标的大小、目标的航向即顶点浮点型坐标值中的第三个分量、目标的符号序号逐步调整步骤②中得到的每个片段的相对坐标最终得到每个片段的整数型纹理坐标,根据目标大小调整片段的相对坐标时设目标大小为size,片段的相对坐标为(TDx,TDy),调整后的坐标为(TDx_size,TDy_size),则:

根据目标的航向调整时设调整后的坐标为(TDx_direction,TDy_direction),则:

根据目标的符号序号调整时设调整后的坐标为(TDx,TDy),则:

调整后的(TDx,TDy)即为每个片段的整数型纹理坐标;

⑤根据每个片段纹理坐标和符号页号获取对应的符号纹理贴图在该纹理坐标位置的颜色值作为该片段的颜色值,符号页号指明显存中存储的纹理贴图的序号,片段着色器根据纹理映射函数提取该纹理贴图在片段纹理坐标对应的颜色值RGBA并赋值给每个片段,纹理映射函数为显卡在图形处理流程中固有的能力;

⑥根据目标的显示标志和选中标志调整片段是否显示;片段显示与否是通过对片对颜色的Alpha分量实现的;

⑦根据目标属性修改片段的颜色值;具体方法为:如果显示标志为0则设置该片段的Alpha值为0,如果显示标志为1则保持该片段的Alpha值不变,调整完成后再根据选中标志调整片段是否显示,方法为如果目标的显示标志为1、选中标志为1且片段的相对坐标的第一个分量或第二个分量的值为10时,修改该片段的Alpha值为1,其他情况保持该片段的Alpha值不变,最终使以顶点为中心、边长为20的矩形框边线所占据的片段的Alpha值为1实现矩形选择框的输出;

⑧输出片段颜色并结束。由于开启了片段Alpha测试,因此Alpha大于0.5的片段能够输出到屏幕,最终形成符号及选择框的显示。

4 实验及结果分析

4.1实验环境

系统WindowsXP(SP3),CPU主频:2.93GHz,显卡使用NVIDIA GeForce GTX560,显存:1024MBGDDR5,流处理器为336个。

4.2实验结果

实验中对目标个数分别取2000个、4000个、6000个、8000个和10000个进行了测试,每组测试10次取平均值进行记录,使用CPU和GPU两种方式绘制所需具体时间如表1所示,时间对比如图2所示。

表1 CPU与GPU绘制时间表

图2 CPU与GPU绘制时间对比图

5 结束语

在信息化系统符号标图领域中,传统基于CPU逐个调用图元命令的实现方式已经不能满足实时大批量目标的动态标绘。GPU作为新一代图形系统开发的必然趋势,具有并行快速渲染与灵活实现等众多优势,必将取代传统的基于CPU的绘制技术。GPU编程与传统算法编程思想完全不同,其主要面向顶点数据与像素数据进行编程,实现建立在大型点阵的快速并行运算技术上[12]。本文讨论了基于GPU的大批量目标高速标绘方法,并与传统的绘制方法进行了对比,试验结果表明,可大大提高绘制速度,对军用地理信息平台的地图绘制技术实现也具有一定的借鉴意义。

[1]谢国文,吴秋云,钟志农,等.基于ArcGIS图元的军事标图系统[J].兵工自动化,2011,30(9):93-96.

[2]李启元,宋胜峰.军事标图系统架构研究[J].舰船电子工程,2006,26(6):25-26.

[3]谢国文.基于ArcGIS图元的军事标图技术研究[D].长沙:国防科学技术大学硕士学位论文,2011.

[4]张子芳.野战综合情报系统[J].无线电工程,1997,27(3):61-64.

[5]肖汉.基于CPU+GPU的影响匹配高效能异构并行计算研究[J].武汉:武汉大学博士学位论文,2011.

[6]李士丹,陈星豪.一种基于OpenGL的图像渲染加速方法[J].电脑知识与技术,2012,8(1):194-196.

[7]葛子豪.基于GPU动态误差度量的大规模地形绘制方法[D].吉林:吉林大学博士学位论文,2012.

[8]吴凡贤.基于GPU的地震数据图形快速绘制[D].成都:成都电子科技大学硕士学位论文,2013.

[9]郑坤,王锫,李芬蕾.基于GPU的风暴数据场多维纹理混合绘制[J].计算机工程与应用,2014,50(17):173-177.

[10]孙悦,马久河.基于GPU的图像快速显示技术[J].无线电工程,2008,38(9):27-28.

[11]彭海洋,杨红雨,杨光.基于GPU实现的AES加密[J].计算机技术与发展,2013,23(2):241-243.

[12]席涛.二维数字图像相关加速方法与GPU高速实现[D].合肥:中国科学技术大学硕士学位论文,2014.

Research on High-speed Plotting Technology for Massive Targets Based on GPU

DUAN Tong-Le,LIU Wen-Zhan,LIU Hai-Juan
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081 China)

In this paper,a real-time plotting method for massive targets is presented,which can be used to dramatically improve the speed of drawing symbols on the screen.The attribute data of massive targets is sent from CPU to GPU at first.Based on GPU parallel computing capability,the rendering of targets’attributes is directly implemented at vertex shaders and fragment shaders of GPU.The experimental results show that the method based on GPU plotting technology is to be more efficient as the number of targets increases.

plotting;high speed;GPU programming;GL shader

TP311

A

1008-1739(2015)11-48-4

定稿日期:2015-05-12

猜你喜欢
标绘坐标值顶点
一种松耦合的多模态标绘引擎设计
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
后装综合态势共享交换文件模型设计
关于顶点染色的一个猜想
基于二分法迭代的凸模数控铣削加工编程*
雷达标绘训练与自动评估系统设计
海量动态异构空间标绘信息实时接入技术
基于宏程序的数控车削加工应用
利用CAD/CAM 软件确定数控编程中 未知点的坐标
数学问答