圖形學相關
點積和叉積的物理意義
兩矢量點積,其中一矢量為單位矢量,結果為另一矢量在單位矢量上投影的長度。
兩矢量叉積,其結果為一垂直於兩矢量的新矢量。
GPU的渲染流程
本部分總結來自我對《Unity Shader 入門精要》一書的筆記
https://www.cnblogs.com/errornull/p/10026725.html
應用階段
首先將數據加載到內存中,將網格、紋理加載到顯存中,然后設置渲染狀態,如攝像機、燈光等,最后調用drawcall渲染命令,輸出圖元列表到頂點着色器。
幾何階段
圖元列表中的每個頂點都會調用一次頂點着色器,將頂點變換到齊次裁剪坐標系,得到歸一化的設備坐標NDC。然后對圖元進行裁剪,裁剪后的坐標經過屏幕映射得到屏幕坐標,和z坐標一起構成窗口坐標系。
光柵化階段
通過三角形設置得到三角網格的表示數據,根據數據來檢查每個像素是否被一個三角網格所覆蓋,被覆蓋的話就用三角網格的頂點信息對覆蓋區域的像素進行插值,被覆蓋的像素生成一個片元。然后片元經過片元着色器時會進行紋理采樣,計算出其覆蓋的片元的輸出顏色。
最后進行逐片元操作,又成輸出合並階段,對每一個片元進行模板測試、深度測試和混合,模板測試用來限制渲染區域,深度測試舍棄被遮擋的片元提升性能,合並操作可以實現半透明等效果。最后這些使用顏色緩沖區的顏色值的像素就會顯示到屏幕上。