Unity的渲染流程

2021-10-10 16:31:31 字數 2268 閱讀 4978

unity中座標空間的轉換:

unity的渲染流程:

渲染到裝置螢幕的每一幀畫面都要經歷如下幾個階段:

應用程式階段(cpu):將材質和模型資料傳送給gpu

幾何階段(gpu):進行頂點變換計算

光柵化(gpu):將三角形轉化為片元,並對片元著色。

cpu:準備需要渲染的物件。

把可視的物件,進行遮擋剔除和視椎體剔除,並將渲染物件排序。

設定渲染物件的渲染狀態,包括材質,模型,著色器

傳送drawcall

會為每乙個渲染兌現的每乙個材質生成乙個渲染批次batch,(合批就是將多個材質合成乙個批次)

setpass call是在渲染狀態發生改變時才會被呼叫,和drawcall相伴產生。在某些特定情況也不一定對等,如乙個batch中用到了多個pass,不同的pass,cpu將傳送新的setpass call和drawcall。而在靜態批處理中,由於頂點限制而不能再同一批次處理而被分割的緊鄰的多個批次,因為使用的是相同的渲染設定,所以只產生乙個set pass call

setpass call 是告訴gpu接下來要用到哪些資源,需抓經準備。執行時,會向視訊記憶體中傳入大量的資源資訊,包括紋理。

drawcall 是要求gpu根據頂點資料進行繪製

fbx(裡面包含了uv,頂點位置,法線,切線等資訊)載入到記憶體中,通過mesh render 渲染出來

skindned mesh render : 帶蒙皮的骨骼,把物體的頂點,法線,切線等資訊傳個gpu渲染出來。

mesh filter:將模型資訊傳遞給gpu

mesh render :將頂點等渲染資訊傳遞給gpu

skinned mesh render 和 mesh render 的區別就是,前者用於有蒙皮動畫的mesh, 後者用於靜態的mesh。

渲染管線: 頂點著色器、光柵化、片段著色器(alpha測試、模板測試、深度測試、blend、gbuffer、brondbuffer,framebuffer)、顯示器

頂點著色器:1.計算頂點的顏色;2. 將物體座標系轉換到相機座標系;

每個頂點執行一次頂點著色器,在此階段可以進行透視投影,頂點光照,紋理計算,蒙皮。也可以修改頂點位置生成程式式動畫,例如模擬風吹草動,碧波蕩漾。

光柵化

:將頂點轉換成畫素,一一對應

片段著色器

:將頂點圍起來的畫素著色(執行次數遠大於頂點著色器,盡量將運算放在頂點著色器中。例如:

quad中四個頂點座標為((0,0)

(0,100)(100,100)(100,0)

)頂點著色器執行4次,片段著色器執行10000次)

片段著色器中處理的事情:逐片元操作

紋理取樣 即給quad賦予貼圖或材質球,把紋理畫素付給原來的畫素,把原來的畫素覆蓋掉了

畫素跟燈光進行計算

,alpha測試:挑選合格的alpha畫素顯示。(rgba)

模版測試:  畫素還可以攜帶 模板資訊 達到條件的模板值會顯示出來

深度測試:符合條件的(一般是畫素距離相機的距離)畫素 就通過,不然就丟棄

以上三個測試 決定畫素能否被顯示出來,挑選合格的畫素

blend:將當前 要 渲染的畫素 和 已經渲染出來的畫素混合運算

gbuffer :乙個畫素 存的(rgba 模板值  深度值 )等資訊,只要是審核通過了以後

,gbuffer做的中轉把這些資訊傳給frontbuffer

buffer其實是快取區)float[720*1280*4]陣列存的資訊比較多

front buffer:由gbuffer往front buffer寫完以後,front buffer推向顯示器顯示過程中,front buffer

,此時變成了

framebuffer,

由gbuffer往front buffer寫完以後,framebuffer會交換到後面去變成front buffer

(float[720*1280]

)快取區

framebuffer:

float[720*1280]快取

區其實 front buffer和framebuffer在交替顯示,一幀幀的看著好像在動一樣,所以兩個是相對的

unity 不再渲染區域性 unity 渲染第二步

先不要用 unity shader 提供給你的轉換矩陣,看看螢幕上的圖形,你會學到更多。unity 渲染箴言 假設你 create 了乙個 cube,放在預設的位置,預設的 rotation,預設的 scale,此時,create 乙個你自己的 material,再建立乙個你自己的 unlit sh...

unity的渲染路徑

forward rendering path 前向渲染路徑 deffered rendering path 延遲渲染路徑 vertexlit rendering path 頂點照明渲染路徑 拋棄 標籤名描述 always 不管使用哪種渲染路徑,該pass總會被渲染,但不會計算任何光照 forward...

Unity渲染路徑

unity支援不同的渲染路徑。您應具體取決於你的遊戲內容和目標平台 硬體來選擇使用哪乙個。不同的渲染路徑有不同的特點和效能特點,主要影響燈光和陰影 如果圖形卡不能處理選定的渲染路徑,unity將自動使用乙個較低保真度的設定。因此,在gpu上不能處理延遲照明 deferred lighting 將使用...