高級著色語言HLSL入門(7) 摘要:
大多數函數已經重載以使其可以對所有內建類型有意義。例如,abs對所有數值類型有意義,所以它為所有這些數值類型進行了重載。又例如,叉積的叉乘僅對
3D向量有意義,所以它對所有類型的3D向量(比如:int,float,double的3D向量)進行了重載。另一方面,線性插值——lerp,對于數值、2D、3D和4D向量有意義,因此重載了這些類型。
高級著色語言HLSL入門(6) 摘要:
HLSL有一個豐富的內建函數的集合,它們對3D圖形來說非常有用。下表是一個刪減了的列表,注意:要得到更多的參考,可以參看DirectX文檔中內建HLSL函數的完整列表。
高級著色語言HLSL入門(5) 摘要: 為便于參考,這里給出一個HLSL定義的關鍵字列表:
高級著色語言HLSL入門(4) 摘要: HLSL支持下列數值類型(scalar type):
bool—True or false value. Note that HLSL provides the true and false
keywords.
int—32bit signed integer
half—16bit floating-point number
float—32bit floating-point number
double—64bit floating-point number
注意:一些平臺不支持int, half, and double類型,這時我們使用 float類型模擬。
高級著色語言HLSL入門(3) 摘要:
下一個方法就是設置常量的默認值,這些默認值在聲明時初始化。這個方法應該在應用程序建立(setup)期間被調用一次 (called once)。
高級著色語言HLSL入門(2) 摘要:
每個著色器有一個常量表,用來保存它的變量。D3DX庫通過ID3DXConstantTable接口,提供給應用程序訪問著色器的常量表。通過這個接口我們能夠在應用程序中設置著色器源代碼中的變量。
我們現在描述ID3DXConstantTable接口的方法列表的實現,全部的列表請查閱Direct3D文檔。
高級著色語言HLSL入門(1) 摘要:
在我們寫的程序里頂點和像素是很小的對象,它們由GPU來執行,是固定功能管線的一部分。用我們自己寫的著色器程序替換一部分固定功能管線,在繪制效果上我們獲得很大的靈活性。我們不再局限于預定義的"固定"操作。
為了編寫著色器程序,我們需要一種高級著色器語言(High-Level Shading Language ,簡稱HLSL) 。在DirectX
8中,著色器是用低級著色器匯編語言編寫的。幸運的是,我們不必再用匯編語言來寫著色器了,DirectX 9支持一種高級著色器語言來寫。