本次分享Imagination GPU 的3D 圖像處理負載流程。
總的分為兩個階段
第一階段:Geometry Processing Phase(幾何處理階段)是渲染管線中的一個關鍵環節,主要負責對三維幾何數據進行處理和變換,以便后續在屏幕上進行顯示。
1.Input Assembly 輸入裝配。讀取原始圖元
2.Vertex Shading 頂點著色。對單個頂點輸入運行shader
3.Geometry Shading 幾何著色。對所有原始數據(點,線,三角形)進行著色
4.ViewPort Transformation 視角轉換。用于將標準化設備坐標映射到屏幕或窗口的實際像素坐標
5.Perspective Divide 透視除法。將3D物體投影到2D屏幕。越遠的物體看起來越小。
6.Early Primitive culling 早期圖元刪除。刪除不可見圖元
7.Cliping 裁剪。對于處于視窗邊界的圖元裁剪成多個圖元
8.Stream Out 流輸出。將幾何處理的結果了連續輸出
9.Generate Tiled Display Lists 生成塊顯示列表。
第二階段:Fragment Processing Phase(片段處理階段)?是圖形渲染管線(Graphics Rendering Pipeline)中的一個關鍵階段,主要負責處理光柵化后的片段(Fragment),最終生成像素顏色并寫入幀緩沖區(Framebuffer)。
1. Fetch Tiled Display List 獲取塊顯示列表。
2.Fetch Geometry Data 獲取幾何數據。讀取頂點數據
3.Depth Biasing 深度偏置。這是由于浮點數精度限制導致兩個或多個圖元在深度值上過于接近,從而在渲染時產生閃爍或不穩定的現象。為了解決這個問題,可以使用?Z-bias(深度偏移)?技術。
4.Rasterisation 光柵化。給像素著色器提供圖元并且確定如何調用著色器。
5.Hidden Surface Removal 隱藏表面消除。用于確定在三維場景中哪些物體或物體部分是可見的,哪些被其他物體遮擋而不可見。其目的是確保最終渲染的圖像中只顯示可見的表面,從而避免視覺錯誤。
6.Depth Test and Stencil Test 深度測試和模板測試。決定是否渲染該片段。
-
深度測試:基于深度值決定片段是否可見,用于處理遮擋關系。
-
模板測試:基于模板值決定片段是否保留,用于實現遮罩、描邊等效果。
7.Texture Fetch 紋理獲取。采樣像素著色需要的紋理數據。紋理采樣是圖形渲染中的核心操作,用于從紋理中獲取數據并應用到渲染的物體表面。通過合理使用紋理采樣技術,可以實現豐富的視覺效果和高效的渲染性能。
8.Pixel shading 像素著色。
9.Colour Bending 顏色混合。混合一個或者多個像素形成最終的像素