一、Shader編程語(yǔ)言基礎(chǔ)
一、CG語(yǔ)言基礎(chǔ)知識(shí)
1、內(nèi)置元類型:
Float :32位浮點(diǎn)型
Half :16位浮點(diǎn)型
Int :32位整型
Fixed:12位定點(diǎn)形
Bool :布爾值
Sampler:紋理對(duì)象的句柄
2、CG提供內(nèi)置的向量數(shù)據(jù)類型(build-in vector data types)
float1、float4,
bool2, bool3,
float1x1
float2x3
類型轉(zhuǎn)換跟C是一樣的,用強(qiáng)制轉(zhuǎn)化。
類型定義的時(shí)候可以在常量后跟后綴,如2.0f,1.0h,3x。目前值有f,h,x(fixed)三種。
注意:向量最長(zhǎng)不能超過(guò)4元,即在Cg程序中可以聲明float1、float2、float3、float4類型的數(shù)組變量,但是不能聲明超過(guò)4元的向量,例如:
float5 array ;// 編譯報(bào)錯(cuò)
向量初始化方式一般為:
float4 array = float4(1.0, 2.0, 3.0, 4.0);
較長(zhǎng)的向量還可以通過(guò)較短的向量進(jìn)行構(gòu)建:
float2 a = float2(1.0, 1.0);
float4 b = float4(a, 0.0, 0.0);
此外,Cg還提供矩陣數(shù)據(jù)類型,不過(guò)最大的維數(shù)不能超過(guò)4*4階。例如:
float1x1 matrix1; // 等價(jià)于 float matirx1; x 是字符,并不是乘號(hào)!
float2x3 matrix2; // 表示2*3 階矩陣,包含6 個(gè) float 類型數(shù)據(jù)
float4x2 matrix3;// 表示 4*2 階矩陣,包含 8 個(gè) float 類型數(shù)據(jù)
float4x4 matrix4 ;// 表示4*4 階矩陣,這是最大的維數(shù)
矩陣的初始化方式為:
float2x3 matrix5 = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
3、支持的類型:
數(shù)組:
float a[10];
float4 b[10];
數(shù)組的定義:
float a[10]; // 聲明了一個(gè)數(shù)組,包含10 個(gè) float 類型數(shù)據(jù)
float4 b[10]; // 聲明了一個(gè)數(shù)組,包含10 個(gè) float4 類型向量數(shù)據(jù)
float a[4] = {1.0, 2.0, 3.0, 4.0}; // 初始化一個(gè)數(shù)組
int length = a.length; //獲取長(zhǎng)度,上面兩個(gè)返回都是10
?
float b[2][3] = { { }, { } };
int length1 = b.length; // length1 = 2;
int length2 = b[0].length; // length = 3;
結(jié)構(gòu)
以struct開始,緊跟名字,內(nèi)容用 ' { } ' 包住。不要忘記最后的分號(hào)。
結(jié)構(gòu)中可以帶function,是C++中的用法。
結(jié)構(gòu)不支持繼承。