Shader基礎知識

頂點着色器輸入結構體中常用語義

頂點着色器輸出結構體中常用語義

片元着色器輸出時常用語義

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 {  };
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章