Vertex Shader & Pixel Shader 介紹

 

1.          固定功能的圖形處理流水線( fixed function graphics pipeline

能夠實現 Vertex  Shader Pixel  Shader 的顯卡的圖形處理流水線被稱作爲是可編程的,相對而言,在此之前的圖形處理流水線被稱作爲是固定功能( fixed function , 下面是 OpenGL 圖形處理的一個簡圖:

              完整的 OpenGL 圖形處理流水線爲稱作爲 OpenGL 機器( OpenGL machine ,在 OpenGL 參考手冊上可以找到這份框架圖),就像一個電路圖一樣,上面有許許多多的開關,我們可以打開或者閉合這些開關,還可以設置圖中各個處理單元的參數以控制處理的方法,但是無論如何整個系統的功能已經確定下來了,你只有使用或者不使用某些功能和控制某些功能的具體執行方法的權利而無法實現自己定製的功能,所以這樣的圖形處理流水線被稱作爲是固定功能的。(有實力的顯卡廠商在自己的 OpenGL 實現中添加了許多 OpenGL 擴展實現了一些標準 OpenGL 規範所沒有的功能,現在有了可編程的圖形流水線,一般用戶也有機會實現一些自己定製的功能。)

 

2.          Vertex  Shader  & Pixel  Shader

雖然實現 Vertex  Shader Pixel  Shader 功能的圖形流水線被稱作爲是可編程的,但是實際上可編程的只有流水線的一部分,正如 VertexShader  Pixel  Shader 的字面意思一樣,現在可編程的部分只有處理頂點的和處理象素的單元。

Vertex  Shader    Pixel  Shader 在不同的文檔裏面有不同的叫法, Nvidia 在自己的 OpenGL 擴展中把 Vertex  Shader 叫做 VertexProgram 、把 Pixel  Shader 叫做 Texture  Shader 3Dlabs 在自己提出一份 OpenGL 2.0 的提議裏面把這兩者分別叫做 VertexShader Fragment (片元) Shader 。拋開叫法的差異,實際上的功能都是差不多的,下面的一段話對這種狀況作了一個完美的解釋:

     Shader  or Program?  Shader  has been used as the preferred name as this fits in with common usage in RenderMan and DX8. There is some argument that shading has connotations of being a color operation so doesn't fit with a  vertex  operation. RenderMan doesn't make this distinction, nor does DX8. It seems wise to go along with the common usage of  shader  as a general term for a program which operates on some part of a graphics pipeline.

    ( Shader  還是   Program ,在 RenderMan DX8 中,通常情況下傾向於使用 Shader 這個名字。這個叫法有一些爭議,因爲 Shading 蘊涵地表示爲進行了相關的顏色操作而不適合用來描述頂點操作。但是在 RenderMan DX8 中並沒有理會這種區別。所以跟隨通常的叫法,把 Shader 作爲在圖形處理流水線某些部分起作用的 program 的一般術語似乎是一個明智的做法。)

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