1. 程式人生 > >Shader 入門筆記(二) CPU和GPU之間的通信

Shader 入門筆記(二) CPU和GPU之間的通信

draw drawcall 進行 時間 包含 spa 入門 光柵 著色器

渲染流水線的起點是CPU,即應用階段。

  1)把數據加載到顯存中

  2)設置渲染狀態,通俗說這些狀態定義了場景中的網格是怎樣被渲染的。

  3)調用DrawCall,一個命令,CPU通知GPU。(這個命令僅僅會指向一個需要被渲染的圖元列表,並不會包含材質信息,因為在上一階段已經完成)

CPU流水線  GPU從CPU那裏得到渲染命令後,就會進行一系列流水線操作,最終把圖元渲染到屏幕上。

   幾何階段:

        頂點著色器/曲面細分著色器/幾何著色器

        裁剪(Clipping):將不在視野範圍內的頂點裁減掉,這階段可配置的,但是不可編程。

        屏幕映射:負責把每個圖元的坐標轉換到屏幕坐標系中。 該階段不可配置,編程。

   光柵化階段:

        三角形設置:計算光柵化一個三角形網格鎖需要的信息。 不可編程,不可配置。

        三角形遍歷:會檢查每個像素是否被一個三角形鎖覆蓋。如果被覆蓋,就會生成一個片元(fragment)。而這樣一個找到哪些被三角形網格覆蓋的過程就是三角形遍歷。不可編程,不可配置。

        片元著色器:可編程著色器。在DirectX中,片元著色器被稱為像素著色器。

        逐片元操作:最後一步。在DieectX中,稱為輸出合並階段。

CG語言    

    根據平臺不同,編譯成相應的中間語言。 CG語言的跨平臺型很大原因取決於跟微軟合作。   

DrawCall 優化 ,可以理解為,1000個1k的文件復制和一個1000k的文件復制。顯然是一個文件復制的快。

如果DrawCall數量太多,CPU就會把大量時間浪費在提交DrawCall上,造成CPU過載。

        

    

Shader 入門筆記(二) CPU和GPU之間的通信