基于可編程渲染管線的雷達(dá)圖像分層模型設(shè)計(jì)與實(shí)現(xiàn)
摘 要:高分辨率雷達(dá)圖像顯示是雷達(dá)計(jì)算機(jī)模擬的重要環(huán)節(jié),對(duì)圖像的逼真度和實(shí)時(shí)性有著極高的要求。采用可編程渲染管線技術(shù)進(jìn)行雷達(dá)顯示系統(tǒng)模擬,能有效實(shí)現(xiàn)雷達(dá)圖像的分層模型,充分利用CPtJ和GP[J的并行處理能力,大幅降低CPU的運(yùn)算復(fù)雜度。在生成高質(zhì)量雷達(dá)圖像的同時(shí)滿足系統(tǒng)實(shí)時(shí)性要求。
關(guān)鍵詞:雷達(dá)仿真;可編程渲染管線;余輝;著色器;雷達(dá)圖像
0 引 言
雷達(dá)顯示系統(tǒng)用于顯示接收機(jī)輸出的回波圖像,以及信息處理機(jī)產(chǎn)生的二次信息和符號(hào),是雷達(dá)操作員獲取信息的主要途徑。雷達(dá)的計(jì)算機(jī)模擬是雷達(dá)設(shè)計(jì)、分析以及訓(xùn)練的有效方法。而顯示系統(tǒng)的模擬作為雷達(dá)計(jì)算機(jī)模擬的最終輸出結(jié)果,其逼真度、實(shí)時(shí)性直接影響著系統(tǒng)的整體性能。顯示系統(tǒng)模擬的主要任務(wù)包括:對(duì)接收機(jī)輸出的回波數(shù)據(jù),信息處理機(jī)產(chǎn)生的ARPA信息,以及各種符號(hào)等進(jìn)行轉(zhuǎn)換,合成為顯示器2D光柵圖像;對(duì)生成的回波圖像模擬余輝效果;控制合成圖像的亮度、對(duì)比度等。
對(duì)顯示系統(tǒng)的模擬一般方法:在雷達(dá)圖像刷新過程中對(duì)全屏像素逐一進(jìn)行坐標(biāo)變換(光柵圖像的直角坐標(biāo)轉(zhuǎn)換為回波數(shù)據(jù)的極坐標(biāo))以查找對(duì)應(yīng)的回波脈沖幅值,形成屏幕像素顏色值;衰減像素亮度,模擬顯示器余輝效果(涉及到色飽和計(jì)算);設(shè)置像素顏色,生成逼真度非常高的雷達(dá)圖像。但這種方法需要存取大量的像素,難以滿足實(shí)時(shí)性的要求。例如,雷達(dá)顯示器分辨率為1 000×1 000,則每幀需存取3.14×5 002=785 000個(gè)像素。而要保持畫面流暢,幀速率應(yīng)保持在30 f/s以上,即每秒需要進(jìn)行23 550 000次像素存取。而這才僅僅模擬了雷達(dá)的顯示系統(tǒng)。
為了提高效率,一些改進(jìn)的算法被提出:預(yù)先建立坐標(biāo)映射表,利用查表方法減少坐標(biāo)變換的運(yùn)算;嵌入MMX指令減暗顏色;利用DirectX等圖形API直接存取顯存等。這些方法減少了單個(gè)像素的處理時(shí)間,但由于像素存取次數(shù)多,仍然占用大量的CPU時(shí)間。
要大幅提高雷達(dá)顯示系統(tǒng)模擬的效率,必須降低幀間隔內(nèi)需要處理的像素總數(shù)。本文提出的方法基于現(xiàn)代顯卡的可編程管線技術(shù),將回波圖像更新、余輝效果仿真、ARPA符號(hào)繪制與最終的圖像合成過程隔離開來,并充分利用cPU和GPU并行處理。在幀間隔內(nèi)由CPU完成對(duì)掃描線轉(zhuǎn)過的區(qū)域進(jìn)行圖像更新和少量的余輝亮度計(jì)算,GPU完成圖像合成,避免了對(duì)全屏海量像素的存取,極大地提高了顯示模擬的效率。以某艦載導(dǎo)航搜索雷達(dá)為例,顯示器分辨率為1 000×1 000,天線轉(zhuǎn)速為20 r/m,模擬程序幀速率為30 f/s,天線旋轉(zhuǎn)一周產(chǎn)生4 096條方位刻線。則模擬程序每幀需要存取785 000×20/(60×30)△8 700個(gè)像素。再加上設(shè)置4 096條方位刻線余輝亮度,總計(jì)存取次數(shù)不到原先的1%,效果十分顯著。
1 可編程渲染管線與Direct3D 9
可編程管線(Programmable Pipeline)是現(xiàn)代高性能顯卡的一個(gè)重要技術(shù)特征。所謂可編程管線,是指可以編寫一段運(yùn)行于GPU(圖像處理單元)的代碼,對(duì)輸入顯卡的原始數(shù)據(jù)進(jìn)行加工處理后再輸出到顯示器上。這樣的代碼稱為著色器(shader),包括頂點(diǎn)著色器(vertex shader)和像素著色器(pixel shader),分別用于對(duì)要繪制模型的頂點(diǎn)和紋理進(jìn)行變換和混合。由于著色器代碼獨(dú)立運(yùn)行在顯卡中,不占用CPU時(shí)間,而且GPU專門針對(duì)圖像計(jì)算進(jìn)行了優(yōu)化,因此代碼的運(yùn)行效率高,圖像處理的速度快。盡管可編程渲染管線設(shè)計(jì)的目的是滿足日益復(fù)雜的3D應(yīng)用環(huán)境,但由于其結(jié)構(gòu)靈活,采用適當(dāng)?shù)姆椒ň帉懘a,在2D環(huán)境中仍然能發(fā)揮出顯卡的繪圖能力。
Direct3D是微軟提供的基于組件對(duì)象模型(COM)的底層繪圖API,它建立在硬件抽象層(HAL)之上。Direct3D檢查顯卡的能力,并以標(biāo)準(zhǔn)的COM接口將顯卡功能暴露給開發(fā)人員,從而使其能夠安全地直接訪問顯卡硬件,提高應(yīng)用程序的渲染速度。Direct3D 9全面支持可編程渲染管線,并引入高級(jí)著色語言(HLSL)來編寫著色器代碼。利用Direct3D 9 SDK來編寫雷達(dá)模擬器的顯示系統(tǒng)代碼,可充分發(fā)揮顯卡硬件的能力。
為了能夠在雷達(dá)顯示的2D環(huán)境中使用Direct3D,只需要做如下處理:將雷達(dá)圖像繪制在紋理上,用三角形扇來模擬圓形,將三角形頂點(diǎn)的紋理坐標(biāo)設(shè)置成雷達(dá)圖像紋理的對(duì)應(yīng)數(shù)值。將紋理和頂點(diǎn)告知Direct3D,便可渲染出雷達(dá)顯示器圖像來。如圖1所示。
評(píng)論