渲染流水線 應用階段詳解

2021-10-03 20:23:07 字數 1052 閱讀 1515

由乙個三維場景出發,渲染一張二維影象

計算機從一系列的頂點資料,紋理等資訊出發,把這些資訊最終轉換成一張人眼可見的影象。由c、gpu共同完成

分為下面三個階段:

應用主導,開發者在此階段有絕對控制權

負責實現:cpu

階段任務:輸出渲染圖元

具體階段:

資料準備渲染所需的資料都需要從硬碟載入到系統記憶體中,紋理、網格等資料又被載入到顯示卡的儲存空間-視訊記憶體中(顯示卡對視訊記憶體的訪問更快,且大多數顯示卡對記憶體沒有訪問許可權)

渲染資料(頂點位置資訊、法線方向、頂點顏色、紋理座標)載入到視訊記憶體中,記憶體中的資料就可以移除了,但一些資料cpu仍需要訪問(用於碰撞檢測的網格資料),所以我們不希望這部分資料被移除,因為從硬碟載入到記憶體的過程很耗時。

粗粒度剔除

設定渲染狀態什麼叫渲染狀態?---這些狀態定義了場景彙總的網格是怎樣被渲染的

沒有更改渲染狀態則所有的網格都將使用同一種渲染狀態

包括不限於它使用的材質(漫反射、高光反射顏色)、紋理、shader等

此階段最重要的輸出是渲染所需要的幾何資訊--渲染圖元(點、線、三角麵等)

通知draw call 

發起方cpu,接收方gpu

這個命令僅僅會指向乙個需要被渲染的圖元列表,不在包含任何材質資訊,已完成

給定乙個dc時,gpu根據渲染狀態(材質、紋理、著色器)和所有輸入的頂點資料來進行計算,最終輸出螢幕上的畫素,計算過程為後面的幾何階段和光柵化階段

渲染流水線

應用階段 cpu準備資料,skinmeshrender,meshfilter,meshrender 頂點資料,三角形資料,法線資料,切線資料,渲染設定指令,紋理資料,uv資料 由cpu傳送給gpu,即一次drawcall 幾何階段 頂點變換,計算頂點顏色 如逐頂點光照 齊次裁剪空間,透視除法,歸一化...

UnityShader 渲染流水線

渲染具體流程 幾何階段 光柵化階段 渲染流水線的最終目的在於生成或者說是渲染一張紋理,即我們在螢幕上看到的所有效果。它的輸入是乙個虛擬攝像機 一些光源 一些shader以及紋理等。渲染流程分為3個階段 應用階段 幾何階段 光柵化階段。圖中,綠色表示該階段是完全可程式設計控制的,黃色表示可以配置但不是...

回顧寫整個渲染流水線

手寫的cpu光柵化渲染流水線做了要三周,到今天終於算是完工了,共有三次大的版本,一次是頂點變化,匯入的3ds模型的頂點變換到世界座標系下,然後變換到攝影機座標系下,最後通過投影變換和視口變換變換到螢幕上。看似過程很明確,而且整個過程其實就是設定幾個矩陣,並且設定矩陣的幾個引數就差不多了,可是因為數學...