基于可編程渲染管線的雷達(dá)圖像分層模型設(shè)計(jì)與實(shí)現(xiàn)
4 余輝效果與渲染到紋理
在繪制余輝效果圖層時,采用渲染到紋理技術(shù)(RTT),將紋理設(shè)置成渲染目標(biāo),用D3D繪圖函數(shù)直接在紋理上繪圖,形成顏色漸變且動態(tài)變化的余輝效果。要實(shí)現(xiàn)渲染到紋理,在創(chuàng)建紋理時,用參數(shù)D3DUSAGE RENDERTARGET指定紋理的用途,并調(diào)用GetSurfaceLevel()方法獲取紋理的表面接口指針。在渲染時,用SetRenderTarget()方法將該表面設(shè)置成渲染目標(biāo)。
為了繪制出圖4中的余輝效果紋理,可用N條射線來組成余輝效果紋理中的圓,N等于天線方位刻線的數(shù)量,每條射線的顏色由其端點(diǎn)顏色決定。N條射線需要用2N個頂點(diǎn)來描述,頂點(diǎn)除含有坐標(biāo)外,還包括顏色值。創(chuàng)建了這些頂點(diǎn)后,Direct3D在渲染管線中自動將其繪制成圖像。
要形成隨時間變化的動態(tài)效果,模擬程序需要在幀間隔內(nèi)根據(jù)頂點(diǎn)坐標(biāo)和當(dāng)前掃描線的位置,重新設(shè)置每個頂點(diǎn)的顏色。Direct3D重新渲染便產(chǎn)生了亮度漸變且動態(tài)變化的圓。
采用這種方法,幀間隔內(nèi)CPU僅需要存取2N個頂點(diǎn)的顏色。在前面的例子中,雷達(dá)掃描一周形成4 096個方位,需要繪制4 096條射線,即設(shè)置8 192個頂點(diǎn)顏色。在大幅減少了像素存取次數(shù)的情況下,增加的這部分頂點(diǎn)顏色存取時間并不會影響整體性能的改善。
5 ARPA符號繪制與GDI繪圖
ARPA信息與符號的繪制不隨掃描變化,而與雷達(dá)信息處理機(jī)的狀態(tài)有關(guān),即由描述雷達(dá)信息處理機(jī)的狀態(tài)數(shù)據(jù)表以及點(diǎn)目標(biāo)跟蹤表等數(shù)據(jù)表生成,比較適合用GDI函數(shù)繪制。為了能夠在紋理上采用GDI函數(shù)繪圖,需要獲取紋理的表面(Surface)接口指針,然后利用表面的GetDC()方法得到該表面設(shè)備上下文(DC)。這樣就可以調(diào)用win32的GDI函數(shù)進(jìn)行符號文字等輸出了。由于這部分繪圖代碼內(nèi)容少且更新率低,因此其CPU占用率幾乎可以不計(jì)。
6 結(jié) 語
在某型艦載導(dǎo)航搜索雷達(dá)中,采用上述方法對雷達(dá)模擬器的顯示部分進(jìn)行了改進(jìn)。模擬器的計(jì)算機(jī)平臺配置為:PentiumXXXXXXXXXⅣ2.8 GHz,ASUS Extreme AX550顯卡。模擬程序運(yùn)行的幀速率從15 f/s提高到50 f/s以上,效果明顯。結(jié)果表明,采用可編程渲染管線技術(shù),可以實(shí)現(xiàn)回波圖像更新與余輝效果計(jì)算的分離,充分發(fā)揮顯卡的渲染能力,能夠滿足大分辨率雷達(dá)顯示系統(tǒng)仿真的需求。
實(shí)際上,雷達(dá)顯示器余輝效果紋理的繪制基本上獨(dú)立于雷達(dá)的脈沖數(shù)據(jù)處理等過程,如果能夠把描述余輝效果的4 096個亮度數(shù)值完全置于可編程渲染管線的頂點(diǎn)著色器中,由頂點(diǎn)著色器來完成亮度衰減及更新計(jì)算,將進(jìn)一步降低CPU的計(jì)算負(fù)擔(dān)。但由于余輝仿真是一個迭代過程,當(dāng)前幀亮度是前一幀亮度的衰減,這需要對每次迭代后的結(jié)果進(jìn)行保存。然而在目前的Direct3D版本中,還不支持渲染到頂點(diǎn)(RTV),頂點(diǎn)著色器也難以支持大容量的數(shù)組變量,迭代運(yùn)算的結(jié)果難以保存。目前,模擬余輝效果頂點(diǎn)顏色動畫仍然由CPU來完成。隨著顯卡技術(shù)和Direct3D技術(shù)的發(fā)展,這部分代碼還能得到進(jìn)一步的優(yōu)化。
評論