基于可編程渲染管線的雷達圖像分層模型設計與實現(xiàn)
關于Direct3D和著色器編程就不再贅述,下面介紹雷達顯示系統(tǒng)模擬中的一些關鍵技術。
2 雷達圖像分層與紋理混合
雷達顯示器圖像根據其產生的方法和特點可分為兩種:一種是來自接收機輸出的回波圖像(其中也包括噪聲),其特點包括:圖像隨天線轉動邊掃描邊刷新,像素的繪制基于極坐標系;圖像亮度隨時間衰減,即具有余輝效果。另一種是來自信息處理系統(tǒng)的ARPA符號,如動標、點目標符號、目標航跡線等,其特點是:符號的變化隨ARPA信息變化,且無余輝效果。
為了避免全屏像素存取,必須將回波圖像刷新、余輝效果仿真、ARPA符號繪制與最終的圖像合成隔離。可編程渲染管線的像素著色器能夠在顯卡內利用進行多重紋理的自由混合。由于在圖像合成被獨立了出來,CPu僅完成必要的繪制即可。如圖2所示,將合成雷達圖像的紋理分為3層:回波圖像層、余輝效果層和ARPA符號層,前2個紋理在幀間隔內進行刷新,后一個紋理僅在ARPA信息發(fā)生變化時進行繪制。這些任務都由CPU來完成。
GPU負責紋理的合成。渲染雷達顯示器時,這3層紋理在像素著色器中進行混合,產生最終的雷達圖像。混合代碼如下:
此外利用像素著色器,還非常容易實現(xiàn)亮度控制、顏色反轉等特殊顯示效果。由于CPU和GPU可并行處理,代碼的執(zhí)行效率非常高。
3 雷達回波圖像更新與直接像素存取
幀間隔內更新回波圖像,就是利用接收機輸出的脈沖序列來更新回波圖像紋理中的掃描扇面區(qū)。脈沖序列存放在回波緩存區(qū)數組內。由于脈沖幅值與像素顏色數據格式不同、緩存區(qū)數組與像素矩陣維度不同,不能用直接位塊傳送(Blt)來繪制回波圖像。需要繪制單個像素來更新。Direct3D通過IDirect3DTexture9::LockRect()方法鎖定紋理上的一塊矩形區(qū)域,該矩形區(qū)域被映射成類似于DIB/DDB的像素數組。利用函數返回的指針,可以對數組中的像素進行直接存取。通過紋理鎖定來存取顯存,能夠達到GDI函數無法達到的高性能。
鎖定的矩形區(qū)越大,則存取的次數就越多。在鎖定前根據掃描區(qū)域首先計算需要鎖定的矩形范圍,便可大幅減少存取像素的數量。這也正是雷達圖像分層所帶來的好處。如圖3所示,A中需要對全屏像素進行存取,而B中只需要訪問掃描扇面包圍矩形中的像素。在進行像素存取時,采用查表法實現(xiàn)直角坐標與極坐標的轉換,還能進一步提高存取的效率。
評論