1 2 CPU與GPU間通訊

2021-08-02 04:51:33 字數 1024 閱讀 4609

渲染流水線的起點是cpu,即應用階段。該階段大致可分為以下3個階段:

所有渲染所需的資料都需要從硬碟(hdd)中載入到系統記憶體(ram)中,然後,網格和紋理等資料又被載入到顯示卡上的儲存空間–視訊記憶體(vram)中

這是因為:顯示卡對於視訊記憶體的訪問速度更快,而且大多數顯示卡對於ram沒有直接的訪問權利。

例:

:真實渲染需要載入到視訊記憶體中的資料往往比上圖複雜多,例如:頂點的法線位置資訊、法線方向、頂點顏色、紋理座標等。

當把資料載入到視訊記憶體中後,ram中的資料就可以移除了。但對於一些資料來說,cpu仍需要訪問他們(例如,我們希望cpu可以訪問網格資料來進行碰撞檢測),那麼我們可能就不希望這些資料被移除,因為從硬碟載入到ram的過程是十分耗時的。

渲染狀態:這些狀態定義了場景中的網格是怎樣被渲染的。

例如:使用哪個頂點著色器/片元著色器、光源屬性、材質等。

如果我們沒有更改渲染狀態,那麼所有的網格都將使用同一種渲染狀態。

下圖顯示了當使用同一渲染狀態時,渲染3個不同網格的結果。

準備好這些以後,cpu就需要呼叫乙個渲染命令–drawcall來告訴gpu,資料已經準備好,可以按照設定開始渲染了。

draw call就是乙個命令,發起方是cpu,接收方是gpu。

這個命令僅僅會指向乙個需要被渲染的圖元列表,而不會再包含任何材質資訊–因為我們已經在上一階段完成了。(渲染圖元可以是點、線、三角麵等)

過程如下圖:

當給定乙個draw call時,就會進入下一節的gpu流水線:

gpu就會進入根據渲染狀態(例如材質、紋理、著色器等)和所有輸入的頂點資料來進行計算,最終輸出成螢幕上顯示的那些漂亮的畫素。

CPU和GPU之間的通訊

渲染流水線的起點是cpu,即應用階段。大致可分為下面三個階段 1.把資料載入到視訊記憶體 2.設定渲染狀態 3.呼叫drawcall 1.把資料載入到視訊記憶體 所有渲染所需要的資料都需要從硬碟 hard disk drive,hdd 中載入到系統記憶體 random access memory,r...

GPU與CPU簡單區別

gpu的運算速度取決於僱了多少小學生,cpu的運算速度取決於請了多麼厲害的教授。教授處理複雜任務的能力是碾壓小學生的,但是對於沒那麼複雜的任務,還是頂不住人多。當然現在的gpu也能做一些稍微複雜的工作了,相當於公升級成初中生高中生的水平。但還需要cpu來把資料喂到嘴邊才能開始幹活,究竟還是靠cpu來...

組成 GPU與CPU的比較

不管是cpu還是gpu都是很高速的裝置,然而從主存中取資料會很慢很慢,為了充分利用高速裝置,二者都使用了快取,程式設計一定要考慮的是電腦程式的區域性性 locality 的基本屬性 時間區域性性與空間區域性性。多核時代和gpu並行運算時代來臨,另外乙個影響程式執行的速度的關鍵因素 快取一致性 cac...