頂點著色器與片元著色器

2022-04-02 04:22:40 字數 1607 閱讀 3275

頂點著色器

在管線中的位置:1號(這圖作的跟病毒似的)

可以替代下面這些傳統的操作:

頂點變換

法線變化及規範化

紋理座標生成

紋理座標變換

光照彩色材質應用

頂點著色器可以用來指定一系列完全通用的、並將應用於各個頂點及相關資料上的操作。理解這點很重要。

頂點著色器不會取代一次需要多個頂點的情況或者需要拓撲情況的影象操作。

頂點著色器資料的輸入與輸出:

屬性變數(attribute variables):在頂點著色器中定義的變數可能被限定為「屬性變數」。這些變數代表了非常頻繁的從應用程式傳遞到頂點處理器的值。

屬性變數有兩種:內建和自定義的。內建的如:gl_color、gl_normal和gl_vertex等。

一致變數(uniform variables):用來將資料值從應用程式傳遞到頂點處理器或片元處理器。它可以作為著色器的形參。

一致變數有兩種:內建的和自定義的。內建的以gl_開頭的可以用來訪問當前的opengl狀態。

特殊的輸出變數:gl_position(頂點座標在裁剪空間中的位置),這個是必須要輸出的。

易變數:(varying variables):從頂點處理器傳遞資料到片元處理器。頂點著色器可以使用使用者自定義的易變數向片元著色器傳遞任何需要執行插值的資料:顏色、法線(對於各個片元的光照計算非常有用)、紋理座標、模型座標和其他任          意值。

易變數有兩種:內建的和自定義的。內建的易變數包括為標準的opengl顏色以及紋理座標值定義的變數。

頂點處理器的輸出(特殊的輸出變數以及使用者自定義的和內建的易變數)將被傳送到後續的處理階段。

片元著色器

在第一幅圖的2號位置。

可替代一下傳統的操作:

在插值得到的值上的操作

紋理訪問

應用紋理

霧化顏色彙總

還可以執行各種各樣的計算。片元著色器不能更改片元的x/y的位置。片元著色器不會取代同時需要幾個片元的情況的圖形操作。片元著色器不會取代在opengl畫素處理管道的後端發生的固定功能操作,例如:覆蓋、畫素所有權測試、剪下、**、alpha測試、深度測試、模板測試、alpha混合、邏輯操作、抖動和平面遮蔽等。

片元著色器的資料輸入與輸出:

片元著色器的一大優點是可以任意多次的訪問紋理記憶體,並可以任意方式結合所讀取的值。片元著色器可以隨意的從乙個單獨的紋理著色器讀取多個值或從多個紋理中讀取多個值。一次紋理訪問的結果和可以作為另一次紋理訪問的基礎(及從屬紋理讀取,dependent texture read)。這種從屬讀取可能的數量沒什麼固有的限制。因此可以在片元著色器中實現管線衍射演算法。

對於各個片元來說,片元著色器可以計算顏色和深度(這些值可以寫入特殊的輸出變數gl_fragcolor和gl_fragdepth)或者完全丟棄片元。

頂點著色器 片段著色器

一 著色器 著色器只是一種把輸入轉化為輸出的程式。著色器也是一種非常獨立的程式,因為它們之間不能相互通訊 它們之間唯一的溝通只有通過輸入和輸出。在最簡配置下,至少都得有兩個著色器 乙個叫頂點著色器 vertex shader 它將作用於每個頂點上 另乙個叫片段著色器 fragment shader ...

著色器(Shader)之頂點著色器

頂點著色器其實就是我們自己編寫的一段在gpu中執行的程式,有了頂點著色器,我們就可以從固定的功能流水線中代替一些模組,從而獲得更多的頂點操作的靈活性。對於頂點位置進行操作的的能力具有廣泛的應該場合 織物模擬 粒子系統的點尺寸處理等。可程式設計流水線中的頂點結構比固定的流水線具有更加豐富的資料。首先我...

HLSL頂點著色器

1.在文字檔案裡編寫頂點著色器 hlsl語言 2.編譯著色器 d3dxcompileshaderfromfile 3.建立頂點著色器 createvertexshader 4.獲取hlsl語言中變數控制代碼 getconstantbyname 5.根據控制代碼給hlsl語言中的變數傳值 id3dxc...