CG中的基本數據類型 :
float --> 32位浮點數據,一個符號位。
half --> 16位浮點數據。
fixed --> 12位定點數,被所有的fragment profiles支持。
int --> 32位整型數據。
bool --> true or false 三目運算 : col = b ? fixed(1,0,0,1) : fixed4(0,1,0,1)
sampler* --> 分爲6類 :sampler、sampler1D、sampler2D、sampler3D、samplerCUBE、samplerRECT。DirectX profiles不支持samplerRECT類型
CG中不支持string類型
float --> float2 --> float3 --> float4
half --> half2 --> half3 --> half4
fixed --> fixed2 --> fixed3 --> fixed4
swizzle操作 :
例 :
float2 fl2 = float2(1,0);
float3 fl3 = float3(1,0,1);
float4 fl4 = float4(1,1,0,1);
float4 fl = float4(fl2,0,1) / float4(fl3.xy,0,1) / float4(fl3.xyzz) / float4(fl3.xyzx) /float4(fl3.xxxx) / float4(fl4.xyzw) / float4(fl4.rgba) ;
可以正序,也可以反序。但是隻能以xyzw 或者 rgba 兩種順序其中的一種來進行swizzle操作
爲類型指定類型別名 :
使用關鍵字typedef
typedef float4 FL4; --> 下文的所有float4都可以用FL4來代替
定義宏 :
#define M float4(1,0,0,1);
矩陣 :
float2x2 M2x2 = {1,0,0,1} // 2x2階矩陣
float2x4 M2x2 = { {1,0,1,1} , {1,1,1,1} } //2x4階矩陣
col = M2x4[0] //將矩陣的第一行賦值給col變量
數組 :
float arr[4] = {1,0,0,1}
col = float4(arr[1] , arr[2] , arr[3] , arr[4]); // 用數組賦值,必須將數組中的元素對應賦值給一個分量,切忌 " col = arr ",這是錯誤的操作