计算机图形学——什么是渲染管线
什么是渲染管線
渲染管線也叫渲染流水線,一般我們將渲染流程分成3個階段:
-
應(yīng)用階段
應(yīng)用階段的功能通常由CPU負(fù)責(zé)實(shí)現(xiàn),開發(fā)者具有對這個階段的絕對控制權(quán)。應(yīng)用階段開發(fā)者由3個任務(wù):1.準(zhǔn)備好場景數(shù)據(jù)(攝像機(jī),視錐體,模型,光源等)
2.為了提高渲染性能,我們在這里會做一些剔除工作
3.設(shè)置渲染狀態(tài),例如模型的顏色,紋理,使用哪個shader等
這一階段最重要的是輸出渲染所需要的幾何信息 -
幾何階段
幾何階段處理所有和我們要繪制的幾何相關(guān)的事情。決定需要繪制的圖元是什么,怎么樣繪制它們,在哪里繪制它們。這一階段通常在GPU上進(jìn)行。幾何階段會做哪些事情呢,如下圖所示1.頂點(diǎn)著色器:是流水線的第一個階段,它的輸入來自CPU。頂點(diǎn)著色器處理的單位是頂點(diǎn),也就是說,輸入進(jìn)來的每個頂點(diǎn)都會調(diào)用一次頂點(diǎn)著色器。頂點(diǎn)著色器完成2個工作:
(1)坐標(biāo)變換
就是對頂點(diǎn)的坐標(biāo)進(jìn)行某種變換。當(dāng)然,必須要做的變換是將頂點(diǎn)坐標(biāo)從模型空間轉(zhuǎn)換到齊次裁剪 空間。 當(dāng)然我們可以自己加入很多頂點(diǎn)變換,如,模擬水面的頂點(diǎn)擾動,布料模擬的頂點(diǎn)計(jì)算等
(2)逐頂點(diǎn)光照
2.曲面細(xì)分著色器(非必須):
3.幾何著色器(非必須):
4.裁剪:由于我們場景會很大,而攝像機(jī)的視野范圍很有可能不會覆蓋所有的場景物體,不在視野范圍內(nèi)的不需要處理,裁剪就是為了完成這個目的。
5.屏幕映射:將空間坐標(biāo)轉(zhuǎn)換為屏幕坐標(biāo) -
光柵化階段
這一階段會使用幾何階段傳遞的數(shù)據(jù)來產(chǎn)生屏幕上的像素,并渲染出最終的圖像。這一階段也子啊GPU上運(yùn)行。
1.三角形設(shè)置:計(jì)算光柵化一個三角形所需要的網(wǎng)格信息
2.三角形遍歷: 三角形遍歷階段檢查每個像素是否被一個三角形網(wǎng)格所覆蓋。如果被覆蓋的話,就會生成一個片元。
3.片元著色器:片元著色器的輸入是上一個階段對頂點(diǎn)信息插值得到的結(jié)果,更具體來說,是根據(jù)那些從頂點(diǎn)著色器中輸出的數(shù)據(jù)插值得到的。而它的輸出是一個或者多個顏色。這一階段完成很多重要的渲染技術(shù),其中最重要的技術(shù)之一就是紋理采樣。為了在片元著色器中進(jìn)行紋理采樣,我們通常會在頂點(diǎn)著色器階段輸出每個頂點(diǎn)對應(yīng)的紋理坐標(biāo),然后經(jīng)過光柵化階段對三角形網(wǎng)格的3個頂點(diǎn)對應(yīng)的紋理坐標(biāo)進(jìn)行查之后,就可以得到其覆蓋的片元的紋理。
4.逐片元操作:
(1) 決定每個片元的可見性。如深度測試,模板測試等
(2) 對片元進(jìn)行著色
CPU和GPU的通信
渲染流水線的起點(diǎn)是CPU,即應(yīng)用階段,可以分為一下三個階段- 把數(shù)據(jù)加載到現(xiàn)存中
- 設(shè)置渲染狀態(tài)
- 調(diào)用DrawCall
什么是DrawCall,GPU調(diào)用圖像編程接口,如OpenGL中的glDrawElements命令或者DirectX中的DrawIndexedPrimitive命令,以命令GPU進(jìn)行渲染操作。
總結(jié)
參考書籍:Unity Shader 入門精要
總結(jié)
以上是生活随笔為你收集整理的计算机图形学——什么是渲染管线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 廉洁文化 计算机学院,计算机学院“廉洁在
- 下一篇: 监视器的功能,光源分类,TFSF光源斜入