3 2多紋理效果的畫素著色器

2021-08-22 06:52:23 字數 1322 閱讀 3099

3.2

多紋理效果的畫素著色器

下面是畫素著色器的**,該**儲存於ps.txt

中,該畫素著色器根據輸入的兩套紋理座標對對應的紋理貼圖進行取樣,根據一定比例scalar

混合後輸出畫素顏色。 //

全域性變數 //

儲存顏色混合的比例值s

,其中

= s

= 1-s

vector scalar;

//紋理

texture tex0;

texture tex1;

//紋理取樣器

sampler samp0 =

sampler_state

;sampler samp1 =

sampler_state;//

輸入兩套紋理座標

struct ps_input;//

輸出畫素顏色

struct ps_output;//

入口函式

ps_output ps_main(ps_input input)

整個程式很容易理解,程式中涉及到著色器的紋理和取樣,是我們第一次接觸的內容,下面給於說明。

3.2.1

hlsl取樣器和紋理

和vector

、matrix

一樣,取樣器sample

和紋理texture

也是hlsl

語言的一種型別,hlsl

著色器使用取樣器對指定紋理進行取樣,得到取樣後的顏色值以供處理。

它們的用法如下: //

宣告乙個紋理變數

texture g_texture; //

定義取樣器

sampler g_samp =

sampler_state ;

//呼叫hlsl

內建函式tex2d

取得顏色值,引數一為取樣器,引數二為紋理座標

vector color = tex2d(g_samp, uvcoords);

更多hlsl

取樣器和紋理的內容請參見directx

文件。

以上是本例用到的畫素著色器,在接下來的應用程式中,我們將給三個著色器全域性變數賦值: ²

scalar

儲存顏色混合的比例值s

,其中scalar.x = s, scalar.y = 1-s; ²

samp0

第一層紋理取樣器; ²

samp1

第二層紋理取樣器;

畫素著色器的輸入結構中我們設定了乙個頂點對應兩套紋理座標,讀者可以留意一下應用程式中對應的頂點格式的定義。

著色器(Shader)之畫素著色器

畫素著色器實際上就是對每乙個畫素進行光柵化的處理期間,在gpu上運算的一段程式。不同與頂點著色器,畫素著色器不會以軟體的形式來模擬畫素著色器。畫素著色器實質上是取代了固定功能流水線中多重紋理的環節,而且賦予了我們訪問單個畫素以及訪問每乙個畫素紋理座標的能力 多重紋理就是我們同時啟用多層紋理,然後規定...

Unity著色器紋理動畫

unity中shader可以採用cg來書寫.此文演示了如何利用紋理座標來分段街區紋理.正常的紋理座標範圍 0.1 座標超出此範圍可以用多種方式來處理,如wrap,clamp,mirror等.假設紋理分為n段,則,每段對應的紋理座標為 0.1 n index 1 n 使用此規則就可以將紋理分段來擷取了...

顯示卡不支援畫素著色器?

按計畫該發出畫素著色器ps 的內容,無奈家裡的電腦配置太低,顯示卡竟然不支援ps。家裡的顯示卡型號nvidia getforce4 mx 440 又看到網上某牛人如是說 nvidia 曾經推出市場上銷量最好的gf4 mx440 agp 8x 它和高階的gf4 ti 的本質區別就是它僅僅支援verte...