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 ",这是错误的操作