關於渲染流水線的幾何變化

2022-07-21 06:06:10 字數 799 閱讀 5668

看了很多資料,總算是把乙個流水線中的幾何變化所涉及到的座標系統和座標含義搞清楚了。

乙個流水線中包含六個座標系統:物體(模型)座標系統,世界座標系統,攝像機座標系統,裁剪座標系統(齊次座標體系統),規範立方體座標系統(cvv),螢幕座標系統。

對應每個座標系統,有六種座標:物體(模型)座標系統座標,世界座標系統座標,攝像機座標系統座標,裁剪座標系統座標(齊次座標),規範立方體座標(cvv),螢幕座標系統座標。

每種座標系統之間的轉化又對應四種矩陣:物體到世界座標系統之間的矩陣,世界到攝像機之間的矩陣,攝像機到裁剪座標系統的矩陣(透視矩陣),cvv座標到螢幕座標系統的矩陣。這裡需要注意的一點時當座標乘以透視矩陣後,進行裁剪,裁剪過後有個一透視除法。經過透視除法(齊次座標轉化成非齊次座標)之後變成了cvv座標。裁剪的作用之一就是避免透視除法出現除零錯誤。透視除法,又稱為投影,和透視矩陣是兩個概念。

cvv座標中,所有座標範圍都是[-1,1]之間,其中將x,y的值對映到螢幕(cvv座標到螢幕座標系統的矩陣),就是相應的畫素位置。z用來表示深度。

(1)物體到世界座標系統之間的矩陣:《3d遊戲開發 數學與物理基礎》中介紹的各種旋轉,平移等等矩陣。

(2)世界到攝像機之間的矩陣:

(3)攝像機到裁剪座標系統矩陣:

關於(2)(3)的帖子,理論推導十分細緻,向作者致敬!!!有點缺憾就是對於cvv及其裁剪介紹的不是十分完善,關於(2)(3)更系統的解釋可以參考《計算機圖形學(opengl版)》第三版,第七章,十分完備,這是整個流水線中最難的兩個矩陣。

這片隨筆中的所有術語參考的是《計算機圖形學(opengl版)》

渲染流水線

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

UnityShader 渲染流水線

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

回顧寫整個渲染流水線

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