999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

GPU像素引擎的設計與實現*

2015-03-14 12:32:28丁振青熊庭剛秦信剛
艦船電子工程 2015年10期
關鍵詞:引擎深度

丁振青 熊庭剛 秦信剛

(武漢數字工程研究所 武漢 430205)

?

GPU像素引擎的設計與實現*

丁振青 熊庭剛 秦信剛

(武漢數字工程研究所 武漢 430205)

隨著各種娛樂設備以及數據處理設備的普及,三維圖形技術逐漸應用到各種領域。論文對于針對國內目前GPU中像素引擎研究的不足,設計了一種具有完整功能的像素引擎,能夠完成alpha測試、模板測試、深度測試和alpha混合。采用Verilog HDL語言設計了各功能模塊,并生成了各功能模塊的內部電路圖。最后對各個功能模塊進行了功能仿真,并在開發驗證平臺上驗證像素引擎的功能。

計算機圖形學; 圖形處理器; 像素引擎; 像素測試; Cache

Class Number TP301

1 引言

隨著計算機軟硬件突飛猛進的發展,數據處理的重點從聲音轉向圖形[1],隨著圖形的復雜度越來越高,僅僅依靠軟件算法來繪制圖形大大加重了中央處理器(CPU)的負擔,不僅顯示效率低下,而且會影響整個系統的性能[2]。因此需要專用的硬件,圖形處理器(GPU)來加速圖形處理,從而解放CPU,提高系統性能。

GPU是現代信息系統中把復雜信息通過圖形圖像方式展現出來,并能夠對圖形圖像信息進行高速處理的集成電路。隨著處理能力的加強,圖形處理器已被廣泛應用于辦公自動化、動畫制作、視頻加速[3~4]、3D游戲[5]和高性能計算[6]等民用領域,同時,在軍隊的武器裝備中圖形處理器也有巨大的用途。像素引擎是GPU的重要組成部分,直接影響著像素處理的速度和輸出畫質的質量,像素引擎的研究對于國產GPU的研制具有重要的意義。

像素引擎處在圖形處理流水線的最后,負責剔除和渲染輸出像素。像素引擎完成各種像素級的操作,通過alpha測試、深度測試、模板測試快速剔除不符合要求的像素,減輕圖形管線負擔,提升系統性能,通過對源像素進行適當的格式轉化,使之與目標像素完成alpha混合最終將完整處理的像素寫入顯存。經過測試和混合后的像素進入顯存,最終才能夠在屏幕上顯示一幅清晰、平滑的圖像[7]。

查詢了大量資料發現,在20世紀90年代國外關于像素引擎的研究處于一個高峰期[8~10],但隨著研究的愈發成熟,近年來已經很少有這類的文章出現,因此可知在像素引擎的研究方面國外起步較早,研究已經比較完善。國內的GPU研究處于起步階段,像素引擎研究則相對落后。研究成果大致分為兩類,一類是采用國外的商用GPU IP,但是沒有自主知識產權,且大都是嵌入式產品,不能夠運行于通用操作系統。如華為、瑞芯微電子、全志、新岸線等公司都只是采用了集成進口商用嵌入式GPU IP的方案[11~12],有一定的圖形處理能力。另外一類是自主研發的產品,不兼容通用操作系統、通用圖形API,經像素引擎輸出的圖形性能也不及商用的嵌入式GPU IP,這都不能滿足市場需求[13]。在國內的文章和研究報告中可以看到,上世紀90年代國外像素引擎研究的高潮階段國內基本沒有參與,到21世紀后才能在一些高校的文章中找到一些蹤跡,但大多數都只是建立模型,沒有實際產品出現。近年來隨著國家的重視和集成電路產業的發展,國內在像素引擎方面的研究突飛猛進,取得了一定的成果,但是總體還處于起始階段,和國外高性能GPU還有一定的差距。

2 像素引擎的工作原理與硬件實現

像素在被寫入顯存前還必須進行一系列的測試,當某項測試默認關閉時,該測試直接通過。若某個像素在一項測試中被排除,后面的測試則不需要執行。通過測試的像素在完成混合后才能被寫入顯存。完整的像素測試包括alpha測試、模板測試和深度測試。

本節依次探討了像素引擎的這些主要功能,明確了主要流程,根據流程圖設計RTL代碼。并用Synopsys公司的Verdi軟件進行仿真,并生成RTL級電路。

2.1 alpha測試

alpha測試去除大量的alpha值不滿足需要的像素,減少系統資源消耗,有效提升圖形流水線的處理速度。在一個復雜的三維場景中,大量的像素測試耗費巨大的系統資源,尤其是大部分的像素并不會繪制到顯存中,盡量剔除這些不滿足需要的像素,可以有效減輕圖形管線的負擔。

在RGBA模式下,alpha測試是根據一個像素的alpha值來判斷是否保留或者丟棄這個像素。alpha測試啟用時,可通過驅動為alpha測試配置一個參考值,硬件設計中通過將各像素的alpha值與參考值相比較來決定保留還是丟棄該像素[14]。

alpha測試的實現的流程圖如圖1所示。

圖1 alpha測試的實現的流程圖

根據alpha測試的流程圖,設計alpha測試的Verilog HDL代碼。在Linux環境下用Synopsys公司的Verdi軟件進行仿真,并生成RTL級電路,alpha測試的內部電路如圖2所示。

圖2 alpha測試的內部電路

2.2 alpha混合

alpha混合實現一種半透明的效果,模擬復雜場景中透過透明物體看到后面的物體的情況,alpha混合使場景看起來更加真實自然,有層次感。透過透明物體看向遠處時既能看到透明物體的顏色也能看到后面物體的顏色,在這種場景中,將透明物體的顏色和后面物體的顏色按照一定規律組合來實現這種半透明的效果。

在硬件設計上當一個像素通過alpha測試后,它就可以按照不同的方式與當前顏色緩沖區的顏色進行混合,即將源像素的R、G、B和alpha值與已經存儲在這個點的像素的對應值進行組合。

alpha混合啟用后,一般按照以下四個邏輯步驟執行,但不一定是實際步驟:

1) 透明/不透明轉化:在這個階段,輸入的alpha值(獨立的源像素alpha值和目標像素alpha值)必須加以轉化,從而匹配內部的alpha規則。在像素引擎內,alpha為“0”或“0x0”表示透明,alpha值為“1”或“0xFF”表示不透明。外部的alpha值也許使用的是相反的規則。這一步的輸出是As(目標像素alpha值是Ad)或者1-As(目標像素alpha值是1-Ad);

2) 環境alpha替換:寄存器中的環境alpha值可以放大或者替換輸入的alpha值,在這一步中,輸入alpha值能夠通過,或者直接被Ags(環境alpha)替換,或者被環境alpha放大(As*Ags)。源像素alpha值和目標像素alpha是完全不同的。

3) 混合因子的產生:在這個步驟,混合因子被計算出來。根據混合模式的不同,每個alpha的值可能為0、1、A或1-A。

4) 最終混合:這是最后一個步驟,源和目標像素最終混合,混合操作按根據混合模式參數的不同而有多種混合方式。

alpha混合的步驟如圖3所示。

圖3 alpha混合的實現

根據alpha混合的原理,設計alpha混合的Verilog HDL代碼。在Linux環境下用Synopsys公司的Verdi軟件進行仿真,并生成RTL級電路,alpha混合的內部電路如圖4所示。

2.3 模板測試

模板測試基于片段掩碼移除不符合條件的片段,它只有在存在模板緩沖區的情況下才會執行,如果不存在模板緩沖區,模板測試總能通過。模板測試啟用時,可通過驅動為模板測試配置一個參考值,硬件設計中通過將像素的一個值與參考值相比較來決定保留還是丟棄該像素。無論一個像素通過或未通過模板測試,模板緩沖區的數據必須修改[14]。

模板緩沖區存儲模板參考值,使用模板緩沖區可以把將要繪制的圖形限制在屏幕的某個特定區域內,就像使用鏤空的紙板噴漆一樣。比如,實現一個模擬駕駛的程序,在模板緩沖區內存儲一幅擋風玻璃形狀的圖像,然后繪制整個場景,模板緩沖區能夠防止那些透過擋風玻璃無法看到的物體被繪制出來。

圖4 alpha混合的內部電路

模板測試把參考值與模板緩沖區的值進行比較,但比較只在那些對應的掩碼設置為1的位上進行。當模板測試開啟后,無論這個像素是否通過模板測試,必須修改模板緩沖區的數據。fail、zfail、zpass這三個函數指定了像素進行了模板測試后怎樣修改模板緩沖區的值。如果像素無法通過模板測試,則應用fail函數;如果模板測試通過但是卻無法通過深度測試,zfail函數就會應用;如果模板測試通過,深度也通過或者未執行那個深度測試的情況下,應用zpass函數。模板測試的實現的流程圖如圖5所示。

圖5 模板測試的實現的流程圖

根據模板測試的流程圖,設計模板測試的Verilog HDL代碼。在Linux環境下用Synopsys公司的Verdi軟件進行仿真,并生成RTL級電路,模板測試的內部電路如圖6所示。

圖6 模板測試的內部電路

2.4 深度測試

深度測試剔除被遮擋的像素,在場景渲染完成之后,只有那些沒有被其他物體遮擋的物體才會保留,并繪制到顯存。在一個復雜的三維場景中,存在著大量物體,但有很多物體是被其他物體遮擋的,深度測試將這些被近處不透明物體遮擋的遠處物體剔除[14]。

對于屏幕上的每一個像素,都會對應一個與屏幕像素數目一致的緩沖區,用來保存片段的深度值,這就是深度緩沖區,即Z_buffer、Z緩沖區。深度緩沖區一般用于隱藏表面的消除。當整個場景完成深度測試之后,只有那些沒有被其他物體遮擋的物體或者物體的部分才會保留。因此場景中需要繪制的像素數量會急劇減小,有效地提升圖形處理器的處理能力。

當深度測試通過,深度緩沖區可寫時,將測試像素的深度值寫入對應的深度緩沖區,深度測試的實現的流程圖如圖7所示。

圖7 深度測試的實現的流程圖

根據深度測試的流程圖,設計深度測試的Verilog HDL代碼。在Linux環境下用Synopsys公司的Verdi軟件進行仿真,并生成RTL級電路,深度測試的內部電路如圖8所示。

圖8 深度測試的內部電路

3 功能仿真與驗證

硬件代碼設計完成并完成功能仿真后,需要對圖形處理器進行FPGA驗證,進一步驗證設計的合理性和正確性。本節包括圖形處理器像素引擎的FPGA驗證以及驗證結果。

本課題設計的圖形處理器選擇在S2C公司的QuadE Virtex-7 TAI Logic Module開發驗證平臺板上實現驗證。該驗證板豐富的板上資源可以完全滿足本課題的FPGA驗證需要。

在Linux環境下用Synopsys公司的vcs軟件進行功能仿真,驗證設計的合理性和正確性。在功能仿真通過后,在驗證版上進行實際驗證。該驗證板可以運行Linux操作系統,為了便于快速驗證,在Linux操作系統中編寫測試程序,觀察測試程序的運行效果。

3.1 alpha測試

alpha測試剔除那些alpha值不符合要求的物體,大大減輕了圖形處理流水線的負擔,因此在一個擁有較多透明物體的場景中,alpha測試是一種有效的提升系統性能的方法。

在Linux環境下用Synopsys公司的vcs軟件進行功能仿真,仿真波形圖如圖9所示。PixelColor_a、PixelColor_r、PixelColor_g和PixelColor_b分別是進入alpha測試的像素顏色的RGBA分量,States_AlphaReference和States_AlphaCompare分別是alpha參考值和alpha比較參考函數。

圖9 alpha測試仿真波形圖

當States_AlphaTestEnable為0,即alpha測試關閉alpha時測試直接通過。當States_AlphaTestEnable不為0時,根據輸入像素的alpha值和alpha比較參考值States_AlphaReference比較得到比較中間結果Greater和Equal的值,并根據alpha比較參考函數States_AlphaCompare得到alpha測試比較結果Passed,若Passed為1表明alpha測試通過。

3.2 alpha混合

alpha混合實現的半透明效果物體透明可極大地提高場景的真實性,alpha混合就是源像素和目標像素的組合。在Linux環境下用Synopsys公司的vcs軟件進行功能仿真,alpha混合仿真波形圖如圖10所示。pe_3d_ab_src_pixel是源像素顏色值,pe_3d_ab_dst_pixel是目標像素顏色值,pe_3d_ab_src_factor和pe_3d_ab_dst_factor分別是源像素混合因子和目標像素混合因子,pe_3d_ab_BlendOperationAlpha和pe_3d_ab_BlendOperation分別為alpha混合函數和顏色混合函數。

圖10 alpha混合的仿真波形

當源像素和目標像素輸入alpha混合模塊后,首先將其拆分為R、G、B、A值和混合因子混合,然后分別對各分量進行混合,混合完成后將個顏色組合并輸出像素顏色值ab_pe_3d_data,并輸出顏色使能ab_pe_3d_valid。圖11顯示了在一個有無數不同顏色透明矩形映射到屏幕上得效果,各矩形互相疊加,但是在屏幕上的疊加區域一個像素點顯示多個像素的顏色,因此alpha混合可以實現半透明的效果。

圖11 alpha混合效果圖

3.3 模板測試

模板測試可以將要繪制的圖形限制在屏幕的某個特定區域內,比如使用鏤空的紙板噴漆一樣。在指定區域繪制圖像,當此區域場景變化時只需重新繪制此區域的圖像,屏蔽其它部分,減少圖形繪制量,提高圖形處理器的速度。在Linux環境下用Synopsys公司的vcs軟件進行功能仿真,仿真波形圖如圖12所示。在輸入接口中,DS_Enabled為模板測試使能位,DDT2Stencil_Depth是輸入像素的深度值,States_StencilType是輸模板類型,States_StencilMask是模板掩碼,States_StencilReference是模板參考值,States_StencilCompare是模板,States_StencilCompare是模板比較函數,States_StencilOperation是得知測試結果后模板緩沖區的修改函數,States_StencilWriteMask表明模板緩沖區是否可寫,DDT2Stencil_DepthPassed是表明深度測試是否通過。

圖12 模板測試仿真波形

當DS_Enabled為0時,表明模板測試被禁用,模板測試直接通過。當DS_Enabled為1時,模板測試開啟。首先根據輸入像素深度值得到像素的模板值,并與模板參考值相比較得到比較中間結果Greater和Equal的值,并根據模板比較參考函數Compare得到模板測試比較結果Passed,若Passed為1表明模板測試通過。

當像素無法通過模板測試時,應用Fail函數修改模板緩沖區的值,當像素通過模板測試但是未通過深度測試時,Zfail函數就會應用,當兩者都通過時,應用Pass函數修改模板緩沖區的值。當模板緩沖區可寫時,修改模板緩沖區的值并輸出像素的深度值next_Stencil2ZC_Depth,同時輸出像素保留標志位KillPixel。

3.4 深度測試

對于圖形處理器,深度測試的目的就是去除那些被遮擋的像素,減少繪制的像素的數量,提升系統性能。根據深度測試的流程圖,設計深度測試的Verilog HDL代碼。在Linux環境下用Synopsys公司的vcs軟件進行功能仿真,仿真波形圖如圖13所示。

圖13 深度測試的仿真波形

在輸入接口中,States_DisablePEDepth為深度測試使能位,States_DepthWriteEnable是深度寫使能,DepthMask_p6是深度字節掩碼,States_DepthType為深度類型,Depth_xy_1_0_p5為深度有效位,States_DepthCompare為深度比較函數,States_DepthType為深度類型,DepthValue_p4為目標像素深度值。

當States_DisablePEDepth為1時,深度測試關閉,測試直接通過;為0時,深度測試開啟。根據輸入像素的深度值和深度比較參考值比較得到比較中間結果Greater和Equal的值,并根據深度比較參考函數States_DepthCompare得到深度測試比較結果Passed,若Passed為1表明深度測試通過。DDT2Stencil_Depth輸出通過測試的像素深度值。像素未通過測試時,丟棄該像素。

圖14顯示了在一個大廳中鏡頭隨圓球移動的效果。物體的深度測試開啟后,圓球背后的物體都被遮擋,無法被看到,只有前面物體可以顯示出來,因此深度測試可以實現剔除被遮擋物體的效果。

圖14 深度測試效果圖

4 結語

像素引擎直接影響著輸出畫面的效果是GPU研究的重點,本文詳細介紹了像素引擎的主要功能,畫出了各功能模塊的流程圖,采用Verilog HDL語言設計了各功能模塊。最后用Synopsys公司的vcs軟件對各個功能模塊進行了功能仿真,并在S2C公司的QuadE Virtex-7 TAI Logic Module開發驗證平臺驗證像素引擎的功能。在Linux系統下運行一些程序,以驗證像素引擎的功能的完整性,并根據驗證結果不斷修改設計,驗證結果表明該像素引擎能夠有效實現國產GPU的像素處理的所有功能,達到了設計要求。

[1] 徐偉.基于嵌入式系統的二維圖形處理加速器[D].西安:電子科技大學,2012.

[2] KAINULAINEN J. Stencil Shadow Volumes[D]. Helsinki: Helsinki University of Technology,2002.

[3] 占衛華.龍芯平臺GPU驅動實現與瀏覽器Flash性能優化[D].北京:中國科學院研究生院,2012.

[4] 鐘煜,朱敏,陳雪,等.基于DSMI算法和GPU加速的大規模視頻檢索系統[J].計算機應用研究,2011,28(11):4373-4375.

[5] 唐兵.GPU優化的3D游戲室外大場景的渲染[D].金華:浙江師范大學,2010.

[6] 趙改善.地球物理高性能計算的新選擇:GPU計算技術[J].勘探地球物理進展,2007,30(5):399-404.

[7] SHREINER D. THE KHRONOS OPENGL ARB WORKING GROUP. OpenGL Programming Guide[M]. Seventh Edition.北京:機械工業出版社,2010:7-9.

[8] HOLTEN-LUND H. FPGA-Based 3D Graphics Processor with PCI-Bus Interface, An Implementation Case Study[C]//Norchip Proceedings,2002:316-321.

[9] KILGARD M J. Realizing OpenGL: Two Implementation of One Architecture[J]. Graphics Hardware,1997:45-55.

[10] Jon P. Ewins, Phil L. Watten, Martin White, et al. Codesign of Graphics Hardware Accelerators[J]. Graphics Hardware,1997:103-110.

[11] 李實.2014年國產ARM SoC芯片巡禮(上)[J].微型計算機,2014,8(上):56-60.

[12] 李實.2014年國產ARM SoC芯片巡禮(下)[J].微型計算機,2014,8(下):54-58.

[13] 長沙景嘉微電子[EB/OL]. http://www.jingjiamicro.com/index.html.

[14] STALLINGS W. Computer Organization & Architecture[M]. Seventh Edition.北京:清華大學出版社,2006:91-94.

Pixel Engine in GPU Design and Implementation

DING Zhenqing XIONG Tinggang QIN Xingang

(Wuhan Digital Engineering Institute, Wuhan 430205)

With the spread of various of amusement equipments and date processing equipment, 3D graphic technique has gradually been used in all kinds of fileds. Aiming at the shortage of GPU research, this paper designs a full function Pixel Engine with alpha test, stencil test, depth test and alpha blend. Then, this paper designs the function module for Pixel Engine by Verilog HDL and generates the internal circuit diagram. Last, this paper does emulation for the function module and validates its function in develop board. The verification result indicates that Pixel Engine can complete all the function of domestic GPU Pixel Engine, and it has met the design requirements.

computer graphics, GPU, pixel engine, pixel test, Cache

2015年4月11日,

2015年5月29日

丁振青,男,碩士,研究方向:計算機圖形學、FPGA設計、云計算。熊庭剛,男,博士,研究員,碩士生導師,研究方向:計算機體系結構。秦信剛,男,高級工程師,研究方向:計算機圖形學、FPGA設計、系統總線設計。

TP301

10.3969/j.issn.1672-9730.2015.10.029

驗證結果表明,該像素引擎能夠有效實現國產GPU的像素處理的所有功能,達到了設計要求。

猜你喜歡
引擎深度
以學促干 挺膺擔當 激活砥礪前行的紅色引擎
深度理解一元一次方程
深度觀察
深度觀察
深度觀察
深度觀察
三生 三大引擎齊發力
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
提升深度報道量與質
新聞傳播(2015年10期)2015-07-18 11:05:40
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
主站蜘蛛池模板: 精品国产黑色丝袜高跟鞋| 97在线公开视频| 国产白丝av| 伊人成人在线视频| 在线国产欧美| 国产视频只有无码精品| 色婷婷狠狠干| 天天色天天操综合网| 99热国产这里只有精品9九| 秘书高跟黑色丝袜国产91在线| 欧美笫一页| 国产精品视频a| 嫩草影院在线观看精品视频| 国产自在自线午夜精品视频| 欧美亚洲一二三区| 国产成人狂喷潮在线观看2345| 亚洲—日韩aV在线| www.99在线观看| 伊人91在线| 日a本亚洲中文在线观看| 夜色爽爽影院18禁妓女影院| 中文字幕 日韩 欧美| 成人精品区| 国产精品.com| 亚洲无线国产观看| 欧美日本激情| 日韩精品无码免费专网站| 国内精品一区二区在线观看| 无码 在线 在线| 依依成人精品无v国产| 性喷潮久久久久久久久| www.av男人.com| 噜噜噜综合亚洲| 欧美人与牲动交a欧美精品| 四虎AV麻豆| 2020精品极品国产色在线观看 | 欧美日韩v| 青青草国产免费国产| 一级香蕉视频在线观看| 亚洲人成在线精品| 中文字幕有乳无码| 午夜色综合| 在线观看精品自拍视频| 久久人体视频| 亚洲最大福利网站| 国产精品女同一区三区五区| 亚洲bt欧美bt精品| 国产精品高清国产三级囯产AV| 欧美三級片黃色三級片黃色1| 九色视频最新网址 | 国产精品浪潮Av| 一区二区欧美日韩高清免费| 欧美成人免费午夜全| 精品91视频| 日韩精品一区二区三区免费在线观看| www.youjizz.com久久| 久视频免费精品6| 91 九色视频丝袜| 精品视频一区二区三区在线播| 久久性视频| 国产成人精品男人的天堂下载 | 中文字幕欧美日韩| 无码中文字幕加勒比高清| 伊人色婷婷| 夜夜爽免费视频| 亚洲美女操| 国产综合网站| 激情综合图区| 久久久久久尹人网香蕉| 91尤物国产尤物福利在线| 国产喷水视频| 国产粉嫩粉嫩的18在线播放91| 九色视频一区| 午夜精品一区二区蜜桃| 狠狠色香婷婷久久亚洲精品| 狠狠亚洲五月天| 国产精品手机视频一区二区| 一本色道久久88亚洲综合| 伊人成人在线视频| 色成人亚洲| 欧美性久久久久| 在线观看免费国产|