光柵化——死神來了……前言:在上一期的GPU大百科全書里,我們目睹了可愛的香草從抽象世界走向現(xiàn)實,從方程還原成實體的全過程。可以說香草活了,因為幾何單元,我們賦予了她完整的靈魂。 如果你正在為GPU圖形單元創(chuàng)造鮮活形象而感到欣喜和雀躍,那我建議你最好先做好與之相反的心理準(zhǔn)備,因為今天關(guān)于GPU的話題會很沉重,我們將目睹一個生命被凝固的全過程,也就是幾何單元之后的圖形過程——光柵化。 幾何過程結(jié)束之后,圖形的世界是充滿了歡笑的。得益于幾何單元的精細調(diào)整,可愛的香草在她的世界里快樂的雀躍著,所有一切的事物都讓香草或喜或怒,或哭或笑。而整個世界仿佛都被她的美麗感動,也跟著一起變得鮮活起來,每一座外形精致的城堡、每一汪波光淋漓的池水甚至每一棵隨風(fēng)搖動小草都有了自己的生命。在幾何單元里,一個完美的三維世界正在以自己的方式存在著。 這個美麗的小世界并不知道,在前面等待著他們的不是絢麗多彩的美好未來,而是完全的毀滅和死亡。小世界脆弱的生命,就好像烈日下的露珠一般,一瞬間就消逝了。 香草本來正在逗弄著伏在青草上的一只蝴蝶,她的微笑和纖細的手指好像將生命的能量注入到了蝴蝶身上一樣。但毫無征兆的,香草的動作突然凝固了,仿佛時光停滯了一般,整個世界的一切全都不動了,緊接著,一面看不見得巨大墻壁飛快的將整個世界壓成了一張扁平的畫面。世界中的一切都栩栩如生的保持了時間停止一瞬間的狀態(tài),只是沒有了厚度,也沒有了生氣。 在這個小世界誕生僅僅幾納秒之后,它們被送入了地獄的深淵。在那里,小世界中的一切,甚至包括世界本身都將從三維的立體形態(tài)被壓成一張二維的平面,世界中的事物也將因此而崩毀凝固,所有的美麗都將被冷酷的封存在一個沒有厚度的空間中并被凍結(jié)起來,從而失去一切生命的活力,變成了一個個的標(biāo)本,一個世界的標(biāo)本。而執(zhí)行這一切的死神,就是整個光柵化過程中最重要的單元——Rasterizer,死神收割世界的過程Rasterization,就是我們經(jīng)常聽到的光柵化。 將生命化為烏有并將它們變成標(biāo)本,其實并不是死神的本意,死神不是破壞和毀滅的神靈,她只是在完成著自己的使命。是誰賦予了她這樣的使命,去毀滅一個又一個美好的世界?死神對世界的毀滅,又是怎樣完成的呢?我們今天的故事所要展現(xiàn)的,就是死神使命的起因,經(jīng)過和結(jié)局。
產(chǎn)品:GeForce GTX 560 nVIDIA 顯示芯片 ● 一切皆因你而起
![]() 一切皆因你而起CPU和幾何單元通力合作,又是生成又是調(diào)節(jié)的,好不容易弄出來了一個精巧的小世界,為什么馬上又要毀了它呢? 答案其實就在你的眼前——之所以要把三維世界變成二維,就因為你面前的顯示器只能顯示二維的畫面……
從第一臺顯示器誕生之日起,人類的圖形界面輸出特點就注定了圖形處理過程的命運。不管內(nèi)存中的三維世界多么精巧逼真,最終輸出給人們觀看的永遠都只是一副沒有厚度的二維的畫面。人們急迫且日益高漲的需求顯然不可能讓他們等到空間立體顯示技術(shù)出現(xiàn)才去考慮玩3D游戲的問題,所以,建立在這種平面輸出基礎(chǔ)上的現(xiàn)代圖形渲染工業(yè),自然也就要面對構(gòu)筑模型是三維但輸出設(shè)備卻只能顯示二維畫面的問題。 是的,Rasterizer(光柵化)之所以成為死神,并且收割著一個又一個的美麗世界,都只因為屏幕前的你——對于圖形化的世界來說,你就是上帝,這些世界的誕生就是因為你的需求。你想要這個世界,所以世界才會被創(chuàng)造出來,然后被賦予了生命,也正是因為你的急切,這些被創(chuàng)造出來的世界又要被無情的二維化,里面的一切都被凍結(jié),而Rasterizer作為死神,不過是為了滿足你的需求而執(zhí)行了被賦予的使命而已。 不管出于什么原因,Rasterizer作為死神的使命已經(jīng)存在了,她沒有能力抗拒命運,因此只能默默的接受這一安排,并靜靜地完成自己的使命。接下來,就讓我們看看這位生命的凍結(jié)者——光柵化,究竟是怎樣收割一個又一個世界的吧。 產(chǎn)品:GeForce GTX 560 nVIDIA 顯示芯片 ● 光柵化與線透法
![]() 光柵化與線透法Rasterizer(光柵化)收割3D世界所要面對的第一個問題,就是西方寫實派美術(shù)的基礎(chǔ)——線透視關(guān)系。
“透視”一詞源自拉丁文“perspclre”,意為看透。為了將立體物體的圖像轉(zhuǎn)化到平面上以完成作畫的過程,人們開始了關(guān)于透視的研究。最初研究透視是采取通過一塊透明的平面去看景物的方法,將所見景物準(zhǔn)確描畫在這塊平面上,即成該景物的透視圖。隨著研究的深入,人們將在平面畫幅上根據(jù)一定原理,用線條來顯示物體的空間位置、輪廓和投影的科學(xué)稱為透視學(xué)。這種方式,也就成了今天圖形渲染工業(yè)中Rasterization的基礎(chǔ)。 在多種透視方法中,最常用到的是線透法。線透法的基本原理,在于將物體的每一個點全部以連線的方式與觀察視野,也就是我們的眼睛相連,然后再將一塊平面置于這些線上,由線穿透平面所構(gòu)成的投影來確定物體在畫面中的形態(tài)。無論是現(xiàn)代西方美術(shù)、攝影還是圖形渲染工業(yè),一切與現(xiàn)代西方美術(shù)有關(guān)并以平面化展現(xiàn)立體物體形象為任務(wù)的領(lǐng)域,都要依賴線透法來實現(xiàn)最終的畫面效果。 我們所要看到的物體,就是幾何單元中創(chuàng)造出來的一個個小世界,要將他們反映到屏幕上的過程,實際上就是一個根據(jù)透視原理作畫的過程,攝像機鏡頭或者說屏幕的位置,就是線透法中反映物體形狀的平面,而Rasterization對每個小世界的收割,本質(zhì)上也正是一次作畫的過程,只不過本質(zhì)上要更具破壞性一些罷了…… 為什么要用“破壞性”這個詞呢?因為與其他線透法藝術(shù)創(chuàng)作的對物體上各特征點的還原不同,Rasterizer過程是直接將現(xiàn)有的幾何模型中的點全部變換成二維形式。這個過程,就是我們接下來要講的Transform。 產(chǎn)品:GeForce GTX 560 nVIDIA 顯示芯片 ● 死神的鐮刀——Transform
![]() 死神的鐮刀——TransformTransform詞如其意,就是指對立體物體的變形。三維空間中的物體會自然地呈現(xiàn)三維坐標(biāo)系的特征,其上的每一個點均會帶有完整的三維坐標(biāo)向量。想要將這些點固定在二維世界中同時還要符合透視關(guān)系,這就是Transform的工作。
透視關(guān)系,其實歸根結(jié)底還是數(shù)學(xué)關(guān)系,物體到投影面的形態(tài)屬于標(biāo)準(zhǔn)歐式幾何,人們可以用典型規(guī)范的數(shù)學(xué)手段加以描述,于是將三維物體二維化得過程,便可以通過方程變換的形式加以完成了。經(jīng)過計算,所有三維空間的點都可以在保證與觀察者也就是攝像機位置存在正確關(guān)系的前提下,變成一個沒有真實Z軸的二維點。簡單地說,就是可以被裝進畫里了。 由于這是整個光柵化過程的核心,因此,光柵化也經(jīng)常被稱作坐標(biāo)變換。不難發(fā)現(xiàn),這種基于數(shù)學(xué)關(guān)系的投影轉(zhuǎn)變跟攝影有著非常接近的關(guān)系。如果沒有Transform過程,我們甚至可以直接將坐標(biāo)變換過程理解成是在拍照??扉T咔嚓一響,香草和她美麗的小世界不僅可以完美正確的被記錄并展現(xiàn)出來,而且拍完照還能繼續(xù)快樂的活下去,多么美好啊。 但現(xiàn)實不是童話,被創(chuàng)造出來的世界是不可能永遠存在下去的,GPU顯然沒有足夠多的晶體管用來存放這些被創(chuàng)造出來滿足人們視覺需求的小世界。所以,當(dāng)世界被創(chuàng)造出來的那一瞬間起,其實它面對死神鐮刀的命運就已經(jīng)注定了。 產(chǎn)品:GeForce GTX 560 nVIDIA 顯示芯片 ● 吞噬生命同時凝固美麗
![]() 吞噬生命同時凝固美麗也許你會問——為什么光柵化的過程是這里,為什么如此匆忙,為什么讓這個世界剛剛創(chuàng)造出來就要被定格到二維空間,如果世界能夠再多存在一會,這樣隨著后面單元的操作,它顯然將變得更加豐富多彩啊。
我想說的還是那句話——現(xiàn)實不是童話。 由于透視關(guān)系的緣故,我們顯示器所在的固定視野會導(dǎo)致視線中大量遮蔽關(guān)系的出現(xiàn),立體世界中那些被遮擋的以及因為角度問題背對攝像機視野的面將無法被我們所看到,如果不進行光柵化過程,不考慮視覺關(guān)系就直接將幾何單元生成的空間全部根據(jù)需要進行材質(zhì)和像素填充,渲染那些看不到的部分對于GPU來說顯然是一種極大的資源浪費。 另外,光柵化之后GPU所要處理的操作,將會是像素和材質(zhì),由于整個渲染過程所操作的最基本單位是像素,所以光柵化操作所轉(zhuǎn)化的二維畫面,其實就是一個以像素為基本單位構(gòu)成的平面。后續(xù)的顏色處理,將圍繞著這個平面內(nèi)所有的像素展開。如果不進行光柵化操作,而是繼續(xù)維持可操作的頂點和幾何模型,未被凍結(jié)幾何外形將無法為像素和材質(zhì)的操作提供保護。世界原本是美麗的,但錯誤的構(gòu)筑世界的工作配合卻可能會毀掉這種美麗。 如果死神不在這里收割生命,后面的操作將無法完成,整個圖形渲染過程都可能會毀于一旦,這不僅意味著美麗的世界將可能不再美麗,而且還將嚴重影響神,也就是屏幕前的你欣賞和享受圖形世界的美麗帶來的快樂。所以死神不得已,只得舉起了自己手中的鐮刀?! ?/FONT> 產(chǎn)品:GeForce GTX 560 nVIDIA 顯示芯片
![]() 死神的嘆息——光柵化操作過程● 死神的嘆息——Rasterizer(光柵化)操作過程 應(yīng)該說,死神對生命的收割過程,其實是非常優(yōu)雅的。 當(dāng)幾何單元完成對頂點以及模型的操作之后,所有構(gòu)成世界以及世界內(nèi)物體的頂點坐標(biāo)將開始進行3D坐標(biāo)-2D坐標(biāo)的方程變換運算,運算的基本規(guī)則就是攝像機/屏幕位置與物體之間透視關(guān)系的數(shù)學(xué)描述。隨著變換運算的完成,Rasterizer會創(chuàng)建一個由像素構(gòu)成的2維平面,然后調(diào)動Vertex Shader/Unified Shader單元,根據(jù)運算的結(jié)果將構(gòu)成模型的頂點一一對應(yīng)至平面的像素點上。 除了運算常規(guī)的變換方程之外,Rasterizer還會對物體的位置進行必要的前后判斷,并將被遮蔽物體的頂點予以刪除,這部分操作被稱為Z-culling。不會被看到的頂點將會被這一步操作裁減掉,不會出現(xiàn)在像素平面上。當(dāng)所有頂點最終都被一一對應(yīng)到像素平面上之后,物體的幾何外形將被凍結(jié),留下來的,就只有一副投影到2D平面上的由像素構(gòu)成的畫面了。 一個世界的毀滅以及其中生命的消逝,有的時候未必是摧枯拉朽以及血流成河的。死神就好像彈奏著古典鋼琴曲的肖邦一般,優(yōu)雅的求解著各式各樣的坐標(biāo)方程,同時輕輕地將一面透明的巨墻壓向了面前這個剛從幾何單元中走出來的鮮活的小世界。 當(dāng)巨墻接觸到世界之后,里面的一切便悄無聲息的融入了二維的平面之中,世界完全被二維化之后,一切生命以及世界本身就都板結(jié)成了凝固的畫卷,畫卷中的每一個點,都是這個世界以及其中的生命曾經(jīng)存在過的證據(jù)。死神輕輕嘆了一口氣,小心翼翼的卷起了這幅像素構(gòu)成的畫卷,把它交給后續(xù)的單元進行像素和材質(zhì)操作,然后靜靜地凝望著幾何單元的方向,等待著下一個小世界的到來。 Rasterizer雖然是死神,但絕非嗜殺如命,他僅僅是完成了自己的使命。 產(chǎn)品:GeForce GTX 560 nVIDIA 顯示芯片 ● 死神的煩惱——閉塞Z光照問題
![]() 死神的煩惱——閉塞Z光照問題死神并不是全能的神,他也有自己的煩惱。比如說——自己使命的意義。 除了滿足二維平面輸出對坐標(biāo)變換的要求之外,Rasterizer(光柵化)最大的意義,便在于減輕流水線后續(xù)的無效渲染的壓力。事實上死神每次揮舞鐮刀時,支撐它的除了使命感所帶來的麻木的平靜之外,就只剩下這個了。但現(xiàn)在,死神開始懷疑自己是不是真的可以為后續(xù)單元的工作大幅減輕壓力了。 光柵化操作,是發(fā)生在模型完全建立,并且完成基本光照及對應(yīng)紋理之后的操作環(huán)節(jié)。由于透視固有的視線前后遮蔽問題,建立好的模型存在很多看不到的部分,光柵化過程對Z值得判斷,可以將這些看不到的部分剔除掉,表面上看,極大的減輕了后續(xù)的渲染壓力。 死神是清醒的,他注意到了一個細節(jié)——光柵化操作,是發(fā)生在模型完全建立,并且完成基本光照及對應(yīng)紋理操作之后的操作環(huán)節(jié)。 由于缺乏足夠有效的流水線前Z檢查手段,Z-culling無法有效減輕無效光照操作負擔(dān)的問題,已經(jīng)成了困擾整個光柵化過程的最大難題。光柵化操作確實可以有效的提升后續(xù)的大部分紋理和像素操作的有效率,但對于閉塞Z光照的問題,Rasterizer本身似乎還無能為力,后續(xù)的流水線單元依舊承受著極大地?zé)o效光照操作的負擔(dān)。以生命為代價來達成的目的最終無法完美的實現(xiàn),這讓死神頗有些耿耿于懷?!?/FONT> 好在人們也意識到了問題的存在。為了解決無效光照操作的問題,Deferred Shading技術(shù)出現(xiàn)了,它將光照操作的步驟直接轉(zhuǎn)移到整個流水線后端的MRT(多目標(biāo)渲染)里。雖然這還不能從根本上徹底消滅無效渲染,而且Deferred Shading本身還有諸如運算要求極高等許多問題有待解決,但隨著技術(shù)的進步以及DX11中引入的Compute Shader所提供的運算能力的助益,Deferred Shading已經(jīng)開始越來越多的發(fā)揮自己重要的作用了。
望著新加入的伙伴,死神釋然了。再一次找到自己使命的意義,讓他能夠更加平靜的去面對世界的毀滅以及生命的消逝,因為他知道,自己這么做是有意義的。 產(chǎn)品:GeForce GTX 560 nVIDIA 顯示芯片 ● 死神永生
![]() 死神永生在工作之余,死神也會經(jīng)常打量四周并發(fā)出些許的唏噓,感慨一下這時光飛逝物是人非的世界。
從顯卡出現(xiàn)到今天,風(fēng)風(fēng)雨雨這么多年,整個流水線早已不再是當(dāng)年那個簡單的畫筆了。TSE變成了Geometry,硬件化的T&L單元來了又走,Vertex Shader和Pixel Shader結(jié)合成了Unified Shader,TMU變成了TA,甚至還冒出來了只在CPU中才會出現(xiàn)的Cache……隨著技術(shù)的進步,太多單元被替代,修改甚至取消。 自從圖形渲染工業(yè)出現(xiàn)第一天起就已經(jīng)存在在圖形流水線之中的Rasterization(光柵化),會不會也逃不掉同樣的被替代甚至被取消的命運呢? 我們前面提到過了,Rasterization過程是建立在現(xiàn)代圖形渲染工業(yè)核心的基礎(chǔ)之上的,只要你面前的屏幕依舊是一塊由像素作為基本單位的沒有Z軸顯示能力的二維平面,三維圖形就必須經(jīng)過坐標(biāo)變換才能進行下一步的渲染。 與此同時,光柵化作為現(xiàn)代圖形渲染工業(yè)最核心的過程,已經(jīng)深深的植入了圖形渲染過程的靈魂深處,甚至大多數(shù)人在提到圖形渲染流水線時,都會簡單的稱其為“光柵化流水線”。作為溝通幾何—像素的橋梁,Rasterization已經(jīng)成了一個不可替代的必要階段。如果去掉Rasterization,后續(xù)的材質(zhì)操作和像素操作都將面臨天翻地覆的變化,甚至完全無法進行,整個流水線過程都將面臨改寫的命運。 所以,在可以明確預(yù)見的未來中,死神仍將和現(xiàn)在一樣靜靜地站在流水線的前端,輕輕地將一個又一個的世界壓成沒有厚度的畫面,用凝固生命作為條件讓渲染繼續(xù)下去。 產(chǎn)品:GeForce GTX 560 nVIDIA 顯示芯片 ● 死亡不是終點,它只是新的開始
![]() 死亡不是終點,它只是新的開始在圖形渲染過程中,光柵化是一個非常特殊的環(huán)節(jié),它極其直接而且過程簡單,幾乎只是對立體物體的投影表達,并不像其他單元那樣充滿了各種花俏的細節(jié)和技巧。光柵化的作用也只有為了適應(yīng)屏幕而進行的涉及Z值比對的立體-平面坐標(biāo)變換,以及凍結(jié)幾何外形這兩點而已。唯一特殊的地方,在于經(jīng)過光柵化之后,平面化的幾何物體的外形將不再改變,而且原始的立體幾何模型也將消失。所以從這個意義上來講,原來構(gòu)成立體世界的幾何模型以及立體世界本身,都已經(jīng)死了。 盡管在本篇GPU大百科全書中,我們頻繁面對了死神以及死亡這兩個沉重的話題,甚至還目睹了上一篇大百科全書中剛剛誕生的一個鮮活世界僅僅幾納秒的生命,以及它快速消逝的全過程,但請不要因此而覺得壓抑或沮喪。 關(guān)于死亡,電影《入殮師》中包含了一段經(jīng)典的對白:“棺木合攏之時,便是靈魂遠行的開始。死亡不是終點,而是超越,是通往下一程的起點”。每當(dāng)回味這些伴隨著低沉且和緩優(yōu)美的大提琴一起出現(xiàn)的臺詞時我都在想,平靜、安詳、充滿了敬畏和希望,這應(yīng)該是我們面對生命逝去時所應(yīng)該具有的態(tài)度吧。 死神并不是生命的收割者,他是通往下一段旅程的引路人。對于圖形世界來說,盡管Rasterization(光柵化)終結(jié)了一個世界的生命,但他同時也意味著一段新旅程的開始。因為接下來的流水線中,還會有紋理、像素、混合以及輸出等許多精彩的環(huán)節(jié),等待著這個世界的另一種形態(tài)去經(jīng)歷、去探索。隨著死神輕輕地將二維化的世界交給流水線后續(xù)的單元,一個生命結(jié)束了,而另一個嶄新的生命也隨之誕生了,這個新的生命不僅將擁有一段更加綺麗的經(jīng)歷,而且最終會變得更加美麗。 在下一期GPU大百科全書中,我們將隨著新的生命一起,開始這段全新的旅程,敬請期待吧。 |
|
來自: 網(wǎng)中有你 > 《video》