GPU和CPU的渲染和渲染管道出圖原理

下面這圖是的們的講解例圖:兩者的渲染差距;

左邊爲GPU,右邊爲CPU。

GPU具有高並行結構:高並行結構就是可以並行處理邏輯運算或者圖形數據。(就相當於田徑比賽,你跑你的,我跑我的,都是獨立的,互不干擾)。

先看右邊CPU的圖 一個超大的Control(控制器)和一個超大的Cache(寄存器/緩衝區)。還有四個ALU( 邏輯運算單元);

而左邊的GPU的圖 Control和Cache很小,但是有非常多的ALU。

很明顯,CPU主要的都是控制器和緩衝區,而ALU很少,那麼它處理大量的邏輯運算與圖形數據時就會比較慢。
而GPU則不一樣,他主要的都是ALU,所以它最突出的優勢便是處理大量的邏輯運算與圖形數據。

GPU採用的是流式並行計算模式

可以對每個數據進行獨立的並行計算,簡而言之就是“對數據的獨立運算。
既流內的任意元素的計算,不依賴於其他同類型數據。(這句話的意思看GPU的舉例)

舉例:任務畫一百張圖。
CPU一個人畫,但他只有兩雙手,所以他可以同時拿兩支筆在一分鐘內畫好兩張圖鬼畫符,那麼畫完一百張要花費50分鐘。

而GPU卻有100隻手(不要問我怎麼人可以有一百隻手在身上。你信不信我打你,所以GPU可以同時拿一百隻筆畫畫,那麼他畫完一百張圖,只需要一分鐘。

每一張畫,都是一隻手畫的,跟其他的九十九隻手沒有關係,互不聯繫,互不干擾。

當然,流內的任意元素的計算,不依賴於其他同類型數據。這句話也是缺點。
因爲他不依賴於其他同類型數據。所以他不知道別的數據。Control(控制器)處理數據之間的聯繫。但是看GPU的上面的那圖片,GPU的Control非常少,所以處理交互運算能力會很弱。
舉例子彈打到人身上的交互運算、車撞到欄杆的交互運算。

渲染

一個3D遊戲畫面是怎麼呈現的呢?看下圖。
在這裏插入圖片描述
這個應該很清晰明瞭了。中間有個渲染管道(就是那個黑圖),把他看成一個機器,你只管扔東西進去,他就會給你做染色呈現等等操作。畫面就是這樣出現的。

那麼接下來,我們看看這個渲染管道的內部。
在這裏插入圖片描述
頂點處理:在渲染管線中,將每個頂點的頂點的座標,顏色,光照和紋理座標等基本信息設定好,然後將頂點數據作爲輸入傳遞給頂點着色器。,每個頂點都獨立的被執行。(圖中的立方體有八個頂點,圓柱的那個圓周是由大量的頂點圍繞組成的);
面處理:面組裝: 將點連線得到的組成物體的平面。如果屏幕的大小裝不下物體的時候,會對物體進行截取, 將屏幕外的面進行剔除, 只渲染屏幕內部的東西。(圖中的立方體只能看到三個面,剩下三個面看不見就是被剔除了,不渲染)
光柵化光柵化的本質是座標變換、幾何離散化。看不懂?那看下面一句。
光柵化,就是將幾何信息轉換成一個個的柵格組成的圖像的過程。還看不懂?那再看下面一句。
每一個美術模型由頂點和頂點構成的三角面來確定。將3D模型繪製到屏幕上時,根據每個三角面的三個頂點,將這個三角面所覆蓋的每一個像素(柵格)進行填充的過程,就叫做光柵化。還看不懂?那再看下面圖。
在這裏插入圖片描述
再往回看字面意思。再不懂,就看多幾遍。如果還不懂,咱們就還是別看了,當個低層UI拼圖仔吧。

像素處理:對每個像素區域進行着色、對像素貼上貼圖。這個應該不用解釋吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章