基本类型
- int 指32位整数
- float 指32位浮点数
- half 指16位浮点数,float的一半
- fixed 指12位定点数,避免了浮点运算从而提升效率
- bool 指布尔类型(但是应避免if等判断语句的使用,尽量使用数值运算代替)
- sampler 指纹理对象类型(如sampler2D对应Unity中一张纹理图片)
string (不被支持,但是有)
向量和矩阵类型
- 向量
基本类型+维度(小于等于4)
举例:float1,float2,float3,float4
float a = 1.0;
float1 a1 = float1(1.0);
float2 a2 = float2(1.0, 2.0);
float3 a3 = float3(1.0, 2.0, 3.0);
float4 a4 = float4(1.0, 2.0, 3.0, 4.0);
- 矩阵
基本类型+维度1+x+维度2(维度也小于等于4,则4x4矩阵为最大矩阵)
举例:fixed1x1,fixed1x2… fixed4x3, fixed4x4
float2x2 mat1 = {{1, 2}, {3, 4}};
fixed2x2 mat2 = {{1, 2}, {3, 4}};
float2x3 mat3 = {1, 2, 3, 4, 5, 6};
fixed2x3 mat4 = {1, 2, 3, 4, 5, 6};
其它
- 数组
声明方式和C语言相同
int a[2] = {1, 2};
float b[10];
- 结构体
struct 结构体名{
…
};
struct v2f{
float4 pos : SV_POSITION;
half2 uv : TEXCOORD0;
};
v2f o;