用于壓縮頂點(diǎn)著色器輸出參數(shù)的方案的制作方法
【技術(shù)領(lǐng)域】
[0001]本公開(kāi)的各個(gè)方面涉及計(jì)算機(jī)圖形學(xué)。具體地,本公開(kāi)涉及頂點(diǎn)著色器和像素著色器在圖形處理單元中的使用。
【背景技術(shù)】
[0002]圖形處理通常涉及兩個(gè)處理器、即中央處理單元(CPU)和圖形處理單元(GPU)的協(xié)調(diào)。GPU是被設(shè)計(jì)來(lái)加速在幀緩沖區(qū)中創(chuàng)建旨在用于輸出至顯示器的圖像的專(zhuān)用電子電路。GPU被用于嵌入式系統(tǒng)、移動(dòng)電話(huà)、個(gè)人計(jì)算機(jī)、平板計(jì)算機(jī)、便攜式游戲裝置、工作站以及游戲控制臺(tái)。GPU通常被設(shè)計(jì)來(lái)有效地操縱計(jì)算機(jī)圖形學(xué)。GPU常常具有高度并行處理架構(gòu),這使得GPU對(duì)于以并行方式完成大型數(shù)據(jù)塊處理的算法比通用CPU更有效。
[0003]CPU可向GPU發(fā)送實(shí)現(xiàn)特定圖形處理任務(wù)的命令,例如渲染相對(duì)于圖像中的前一幀已改變的特定紋理。CPU可利用圖形應(yīng)用程序接口(API)來(lái)協(xié)調(diào)這些繪制命令,以便發(fā)出對(duì)應(yīng)于特定應(yīng)用程序的虛擬環(huán)境的狀態(tài)的圖形渲染命令。
[0004]為了渲染特定程序的紋理,GPU可執(zhí)行“圖形流水線(xiàn)”中的一系列處理任務(wù),以便將虛擬環(huán)境中的可視元素轉(zhuǎn)化成可呈現(xiàn)到顯示器上的圖像。典型的圖形流水線(xiàn)可包括:對(duì)虛擬空間中的虛擬對(duì)象執(zhí)行某些渲染或著色操作,對(duì)所述場(chǎng)景中的虛擬對(duì)象執(zhí)行轉(zhuǎn)化和光柵化以產(chǎn)生呈適于輸出到顯示器的形式的像素?cái)?shù)據(jù),以及在將渲染過(guò)的圖像輸出在顯示器上之前對(duì)像素(或片段)執(zhí)行另外的渲染任務(wù)。
[0005]在虛擬空間中常常根據(jù)已知為原型的形狀來(lái)描述圖像的虛擬對(duì)象,所述形狀和原型一起構(gòu)成虛擬場(chǎng)景中的對(duì)象的形狀。例如,可將三維虛擬世界中待渲染的對(duì)象減小到具有根據(jù)它們?cè)谌S空間中的坐標(biāo)定義的頂點(diǎn)的一系列不同三角形原型,由此這些多邊形構(gòu)成對(duì)象的表面。每個(gè)多邊形可具有相關(guān)聯(lián)的索引,所述索引可由圖形處理系統(tǒng)用來(lái)將給定的多邊形與其他多邊形區(qū)分開(kāi)。同樣,每個(gè)頂點(diǎn)可具有相關(guān)聯(lián)的索引,所述索引可用來(lái)將給定的頂點(diǎn)與其他頂點(diǎn)區(qū)分開(kāi)。圖形流水線(xiàn)可對(duì)這些原型執(zhí)行某些運(yùn)算,以便產(chǎn)生虛擬場(chǎng)景的可視元素并且將這種數(shù)據(jù)轉(zhuǎn)化成適于由顯示器的像素再現(xiàn)的二維格式。如本文所用,術(shù)語(yǔ)圖形原型信息(或簡(jiǎn)單地“原型信息”)用于指代表示圖形原型的數(shù)據(jù)。這種數(shù)據(jù)包括但不限于頂點(diǎn)信息(例如,代表頂點(diǎn)位置或頂點(diǎn)標(biāo)記的數(shù)據(jù))和多邊形信息,例如,將特定頂點(diǎn)與特定多邊形相關(guān)聯(lián)的多邊形標(biāo)記和信息。
[0006]GPU可通過(guò)實(shí)現(xiàn)通常被稱(chēng)為著色器的程序來(lái)執(zhí)行圖形流水線(xiàn)的渲染任務(wù)。典型的圖形流水線(xiàn)可包括:頂點(diǎn)著色器,所述頂點(diǎn)著色器可以每個(gè)頂點(diǎn)為基礎(chǔ)操縱原型的某些特性;以及像素著色器(也被稱(chēng)為“片段著色器”),所述像素著色器在圖形流水線(xiàn)中的頂點(diǎn)著色器的下游進(jìn)行操作并且可在將像素?cái)?shù)據(jù)傳輸?shù)斤@示器之間以每個(gè)像素為基礎(chǔ)操縱某些值。流水線(xiàn)還可包括在流水線(xiàn)中各個(gè)階段處的其他著色器,如使用頂點(diǎn)著色器的輸出來(lái)產(chǎn)生一組新的原型(或?qū)?yīng)的原型信息)的幾何著色器、以及可由GPU實(shí)現(xiàn)來(lái)執(zhí)行某些其他通用計(jì)算任務(wù)的計(jì)算著色器(CS)。
[0007]在流水線(xiàn)中與處理圖形相關(guān)的一個(gè)難題是,在數(shù)據(jù)被輸入或輸出至流水線(xiàn)中的各個(gè)著色器時(shí)可能出現(xiàn)某些瓶頸并且降低性能。此外,希望向運(yùn)行可視元素的特定應(yīng)用程序的開(kāi)發(fā)人員提供對(duì)著色器如何利用各種視覺(jué)參數(shù)和底層數(shù)據(jù)的大量的控制,以便允許他們優(yōu)化渲染過(guò)程。
[0008]本發(fā)明的各個(gè)方面正是在此背景下產(chǎn)生。
【發(fā)明內(nèi)容】
[0009]根據(jù)本公開(kāi)的各個(gè)方面,一種計(jì)算機(jī)圖形處理方法可包括:利用頂點(diǎn)著色器壓縮頂點(diǎn)參數(shù)值;將壓縮的頂點(diǎn)參數(shù)值寫(xiě)入到高速緩存;利用像素著色器訪(fǎng)問(wèn)寫(xiě)入到高速緩存的壓縮的頂點(diǎn)參數(shù)值;并且利用像素著色器對(duì)壓縮的頂點(diǎn)參數(shù)值進(jìn)行解壓縮。
[0010]在一些實(shí)現(xiàn)方式中,所述方法可包括利用像素著色器內(nèi)插解壓縮的頂點(diǎn)參數(shù)值。
[0011]在一些實(shí)現(xiàn)方式中,訪(fǎng)問(wèn)壓縮的頂點(diǎn)參數(shù)值包括:將壓縮的頂點(diǎn)參數(shù)值從高速緩存復(fù)制到GPU的本地存儲(chǔ)器單元;以及利用像素著色器從本地存儲(chǔ)器單元訪(fǎng)問(wèn)壓縮的頂點(diǎn)參數(shù)值。
[0012]在一些實(shí)現(xiàn)方式中,頂點(diǎn)參數(shù)值包括三角形原型的所有三個(gè)頂點(diǎn)的參數(shù)值。
[0013]在一些實(shí)現(xiàn)方式中,壓縮頂點(diǎn)參數(shù)值包括將兩個(gè)浮點(diǎn)數(shù)存儲(chǔ)在一起作為具有所述兩個(gè)浮點(diǎn)數(shù)中的每一個(gè)的兩倍的位數(shù)的一個(gè)值。
[0014]在一些實(shí)現(xiàn)方式中,壓縮頂點(diǎn)參數(shù)值包括將兩個(gè)16位浮點(diǎn)數(shù)存儲(chǔ)在一起作為一個(gè)32位值。
[0015]在一些實(shí)現(xiàn)方式中,所述方法還包括對(duì)內(nèi)插的參數(shù)值執(zhí)行像素著色器計(jì)算。
[0016]在一些實(shí)現(xiàn)方式中,所述方法可包括在壓縮之前利用頂點(diǎn)著色器修改參數(shù)值。
[0017]根據(jù)本公開(kāi)的各個(gè)方面,一種圖形處理系統(tǒng)可包括:圖形處理單元(GPU);以及高速緩存;其中所述系統(tǒng)被配置來(lái)實(shí)現(xiàn)一種圖形處理方法,所述方法包括:利用GPU實(shí)現(xiàn)頂點(diǎn)著色器和像素著色器;利用頂點(diǎn)著色器壓縮頂點(diǎn)參數(shù)值;將壓縮的頂點(diǎn)參數(shù)值寫(xiě)入到高速緩存;利用像素著色器訪(fǎng)問(wèn)寫(xiě)入到高速緩存的壓縮的頂點(diǎn)參數(shù)值;以及利用像素著色器對(duì)壓縮的頂點(diǎn)參數(shù)值進(jìn)行解壓縮。
[0018]在一些實(shí)現(xiàn)方式中,GPU包括多個(gè)計(jì)算單元和多個(gè)本地存儲(chǔ)器單元,其中所述本地存儲(chǔ)器單元中的每一個(gè)與所述計(jì)算單元中的相應(yīng)一個(gè)相關(guān)聯(lián)。
[0019]在一些實(shí)現(xiàn)方式中,高速緩存與GPU集成在一起。
[0020]根據(jù)本公開(kāi)的各個(gè)方面,一種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)可具有包含在其中的計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令被配置來(lái)在執(zhí)行時(shí)實(shí)現(xiàn)一種圖形處理方法,所述圖形處理方法包括:利用頂點(diǎn)著色器壓縮頂點(diǎn)參數(shù)值;將壓縮的頂點(diǎn)參數(shù)值寫(xiě)入到高速緩存;利用像素著色器訪(fǎng)問(wèn)被寫(xiě)入到高速緩存的壓縮的頂點(diǎn)參數(shù)值;以及利用像素著色器對(duì)頂點(diǎn)參數(shù)值進(jìn)行解壓縮。
【附圖說(shuō)明】
[0021]通過(guò)結(jié)合附圖考慮以下詳細(xì)描述,可容易地理解本公開(kāi)的教示,在附圖中:
[0022]圖1A-1C是示出各種圖形處理技術(shù)的三角形原型的示意圖。
[0023]圖1D-1E是傳統(tǒng)圖形處理技術(shù)的流程圖。
[0024]圖2A是與圖1E的實(shí)現(xiàn)方式具有相似性的傳統(tǒng)圖形處理技術(shù)的示意圖。
[0025]圖2B是根據(jù)本公開(kāi)的各個(gè)方面的圖形處理技術(shù)的示意圖。
[0026]圖3是根據(jù)本公開(kāi)的各個(gè)方面的圖形處理技術(shù)的流程圖。
[0027]圖4是用于實(shí)現(xiàn)根據(jù)本公開(kāi)的各個(gè)方面的圖形處理技術(shù)的系統(tǒng)的示意圖。
【具體實(shí)施方式】
[0028]雖然出于說(shuō)明目的,以下詳細(xì)描述包含許多具體細(xì)節(jié),但是本領(lǐng)域的普通技術(shù)人員將會(huì)了解,以下細(xì)節(jié)的許多變化和更改在本發(fā)明的范圍內(nèi)。因此,以下描述的本發(fā)明的各個(gè)示例性實(shí)施方案是在不損害本發(fā)明的一般性也不對(duì)本發(fā)明施加任何限制的情況下陳述的。
[0029]?直
[0030]根據(jù)本公開(kāi)的各個(gè)方面,可以允許在圖形流水線(xiàn)的后期階段恢復(fù)參數(shù)的底層絕對(duì)值的方式對(duì)頂點(diǎn)參數(shù)值進(jìn)行壓縮。壓縮這些參數(shù)值可減少參數(shù)高速緩存中的瓶頸并且通過(guò)提供加速的對(duì)象渲染而改善性能。此外,允許對(duì)參數(shù)值進(jìn)行解壓縮以恢復(fù)原始頂點(diǎn)參數(shù)值允許像素著色器直接訪(fǎng)問(wèn)它們,從而向開(kāi)發(fā)者提供對(duì)著色器如何訪(fǎng)問(wèn)用于渲染對(duì)象的底層數(shù)據(jù)的增加的控制。
[0031]置量
[0032]圖1A-1C示出圖形處理技術(shù)的各個(gè)方面以及可以如何使用頂點(diǎn)參數(shù)的內(nèi)插來(lái)處理圖形并渲染圖像中的虛擬對(duì)象。圖形處理技術(shù)可利用重心內(nèi)插過(guò)程,以便定義在待顯示的虛擬對(duì)象的各個(gè)位置處的參數(shù)值。通過(guò)舉例而非限制的方式,參數(shù)值可以是位于虛擬空間中的原型的每一個(gè)頂點(diǎn)處的位置、顏色、紋理坐標(biāo)、照明等等,并且這些頂點(diǎn)參數(shù)的重心內(nèi)插可用于確定原型內(nèi)任意位置處的參數(shù)值。例如,當(dāng)使用原型在顯示器的像素上渲染虛擬場(chǎng)景時(shí),可將任意數(shù)量的像素定位在所述原型