论文上对GPU的讨论之《一种基于 GPU 的复杂目标电磁散射快速算法》

1.GRECO(Graphical Electromagnetic Computing):大多基于OpenGL+Phong光照模型。

通过RGB单色光照射,获得目标表面对应每一像素点处法向;

利用深度缓存(Z-Buffer)获得目标表面上对应每一像素点出的深度信息,计算出散射元之间相位关系;

结合物理光学法PO,物理绕射理论PTD,获得表面对应每一像素点散射场、绕射场;

目标总散射场=离散点散射场相干叠加。

2.Phong光照模型:

局部光照模型,仅仅考虑面片直接接受光源照射影响,没有考虑面片之间因为反射光线受到的照射;

使用局部光照给目标散射场计算带来较大误差。

3.GRECO算法步骤:

(1)读取目标三维模型,并进行图形渲染;

(2)利用深度缓存获得目标表面各个点的深度;

(3)利用不同光照获得表面上各个点的法矢;

(4)对每个像素对应的平板元,进行PO近似计算散射场,对棱边,拖过PTD计算绕射场

(5)对各个点散射场相干叠加获得总散射场。

4.逆向跟踪技术:

从视点出发,通过图像平面每一像素点发出一条光线,若光线与场景中的物体无交,则射出画面,跟踪结束;

否则,光线与景物有交,计算反射光线或者折射光线,并对衍生的新光线进行进一步追踪,知道满足终止条件。

5.光线跟踪算法与电磁散射计算:

文献【克拉特 E F.  雷达散射截面—预估、测试和减缩[M].  阮颖铮,  等 译. 北京: 电子工业出版社, 1995. 】给出的平板电磁散射物理光学表达式:

论文上对GPU的讨论之《一种基于 GPU 的复杂目标电磁散射快速算法》_第1张图片

将面积分转换为围线积分:

 

2

 

 

 

 

该式可以看做将光线跟踪算法从【可见光波长】外推到【高频电磁波长】时,考虑波相干性后,对经典光照模型得到的基于物理光学理论的光照模型。

利用光线跟踪算法计算RCS时,需要对经典算法进行改写:

(1)可见光跟踪算法最终目的是求解像素颜色,而电磁散射计算目的是求解总散射场;

(2)可见光跟踪算法每一步光强是通过对表面交点带入Phong光照模型计算而得到,而电磁散射计算则需要对表面的每一个多边形面元代入物理光学表达式;

(3)可见光跟踪算法要考虑折射情况,而对于金属材质的电磁散射计算没有折射分量。

6.基于GPU的RCS光线跟踪算法:

文献【Purcell T J, Buck I, Mark W R, Hanrahan P. Ray Tracing on Programmable Graphics Hardware [C]//ACM Transactions on Graphics (S0730-0301), 2002, 21(3): 703-712. 】提出:

将所有三角形顶点组织到三幅纹理当中,

并建立一个三角形链表纹理,

可将整个光线跟踪算法放到GPU上执行。

算法流程:

论文上对GPU的讨论之《一种基于 GPU 的复杂目标电磁散射快速算法》_第2张图片

#产生初始化光线棱柱(预处理)在CPU执行,其余都设计为片段程序(fragment programs)在GPU上执行。

#求交采用重心坐标法:【Badouel D. An efficient ray-polygon intersection. Graphics Gems [M]. Glassner AS, ed. San Diego: Academic Press, 1990, 390-393. 】

#遍历场景采用Proximity Clouds算法【Jonathan D. Cohen. Drawing Graphs to Convey Proximity: An Incremental Arrangement Method [C]//ACM Trans. Comput.-Hum. Interact (S1073-0516), 1997, 4(3): 197-229. 】

7.场景预处理:

文章采用了均匀网格剖分,原因:

【首先】均匀网格剖分算法对于硬件实现而言较为简单,访问网格数据结构所需时间是常量

【其次】在遍历均匀网格的时候所需要的访问数据量很少,遍历时间复杂度是线性的

【此外】编码易于优化以便于在硬件上更加高效的执行

均匀网格剖分后,空间分割为统一大小对体素(voxel)构成均匀三维空间网格。

场景中每个物体部分或完全包含在体素中。

【大部分体素不包含或很少包含面片】——因此光线求交次数大大降低,提高算法效率,利于片段程序设计。

8.数据结构组织:矢量数组用一幅纹理表示,矢量各个元素填充RGBA通道。NVIDIA NV40系列以上GPU支持IEEE32位浮点数,将数据以浮点数组形式存储在纹理存储器当中。

剖分网格,三角形,顶点数据存储如图:

Voxel Index = –1 : 编号的体素为空(不包含三角面源)

Triangle Index=-1:该体素包含的三角面元索引结束

#每个三角形三个顶点分别存储在了三张不同的纹理中

#每个纹理单元alpha分量存储三角形编号

#存储其余信息的纹理:

生成初始光线

求交测试

生成反射光线

场景遍历等

9.结论:给出了光线跟踪算法计算RCS的物理光学公示,用GPU实现,比传统GRECO有较好改进。

你可能感兴趣的:(数据结构,算法,测试,存储,transactions,网格)