頂點着色器輸入結構體中常用語義
頂點着色器輸出結構體中常用語義
片元着色器輸出時常用語義
Cg數據類型
1,基本數據類型:Cg支持7種基本的數據類型,分別是:
float, 32 位浮點數據,一個符號位。浮點數據類型被所有的 profile 支持
half,16 爲浮點數據
int,32 位整形數據,有些 profile 會將 int 類型作爲 float 類型使用
fixed,12 位定點數,被所有的 fragment profiles 所支持
bool,布爾數據,通常用於 if 和條件操作符( ?: ) ,布爾數據類型被所有的profiles 支持
simpler*, 紋理對象的句柄( the handle to a texture object ) ,分爲 6 類:
sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, 和 samplerRECT 。DirectX profiles 不支持 samplerRECT 類型, 除此之外這些類型被所有的 pixelprofiles 和 NV40 vertex program profile 所支持( CgUsersManual 30 頁) 。由此可見,在不遠的未來,頂點程序也將廣泛支持紋理操作
string,字符類型,該類型不被當前存在的 profile 所支持,實際上也沒有必要在 Cg 程序中用到字符類型,但是你可以通過 Cg runtime API 聲明該類型變量,並賦值;因此,該類型變量可以保存 Cg 文件的信息。
前6種類型爲常用類型,string類型幾乎不使用。此外,Cg還提供了內置的向量數據類型 (built-in vector data types) ,內置的向量數據類型基於基礎數據類型。 例如: float4, 表示 float 類型的 4 元向量; bool4, 表示 bool類型 4 元向量。
2.數組
數組數據類型在Cg中的作用:作爲函數的形參,用於大量數據的傳遞,例如:頂點參數數組、光照參數數據等。
一維數組:
float a[10];//聲明瞭一個數組,包含 10 個 float 類型數據
float a[4] = {1.0, 2.0, 3.0, 4.0}; //初始化一個數組
int length = a.length;//獲取數組長度
多維數組:
float b[2][3] = {{0.0, 0.0, 0.0},{1.0, 1.0, 1.0}};
int length1 = b.length; // length1 值爲 2
int length2 = b[0].length; // length2 值爲 3
3,結構體
結構體的聲明以關鍵字 struct 開始,然後緊跟結構體的名字,接下來是一個大括號,並以分號結尾(不要忘了分號) 。大括號中是結構體的定義,分爲兩大類:成員變量和成員函數。
struct v2f { };