Unity--Shader(二)

一、Shader编程语言基础

一、CG语言基础知识
1、内置元类型:

Float :32位浮点型
Half :16位浮点型
Int :32位整型
Fixed:12位定点形
Bool :布尔值
Sampler:纹理对象的句柄

2、CG提供内置的向量数据类型(build-in vector data types)

float1、float4,
bool2, bool3,
float1x1
float2x3
类型转换跟C是一样的,用强制转化。
类型定义的时候可以在常量后跟后缀,如2.0f,1.0h,3x。目前值有f,h,x(fixed)三种。

注意:向量最长不能超过4元,即在Cg程序中可以声明float1、float2、float3、float4类型的数组变量,但是不能声明超过4元的向量,例如:

float5 array ;// 编译报错

向量初始化方式一般为:

float4 array = float4(1.0, 2.0, 3.0, 4.0);

较长的向量还可以通过较短的向量进行构建:

float2 a = float2(1.0, 1.0);

float4 b = float4(a, 0.0, 0.0);

此外,Cg还提供矩阵数据类型,不过最大的维数不能超过4*4阶。例如:

float1x1 matrix1; // 等价于 float matirx1; x 是字符,并不是乘号!

float2x3 matrix2; // 表示2*3 阶矩阵,包含6 个 float 类型数据

float4x2 matrix3;// 表示 4*2 阶矩阵,包含 8 个 float 类型数据

float4x4 matrix4 ;// 表示4*4 阶矩阵,这是最大的维数

矩阵的初始化方式为:

float2x3 matrix5 = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};

3、支持的类型:

数组:
float a[10];
float4 b[10];

数组的定义:

float a[10]; // 声明了一个数组,包含10 个 float 类型数据
float4 b[10]; // 声明了一个数组,包含10 个 float4 类型向量数据
float a[4] = {1.0, 2.0, 3.0, 4.0}; // 初始化一个数组
int length = a.length; //获取长度,上面两个返回都是10

float b[2][3] = { { }, { } };
int length1 = b.length; // length1 = 2;
int length2 = b[0].length; // length = 3;

结构
以struct开始,紧跟名字,内容用 ' { } ' 包住。不要忘记最后的分号。
结构中可以带function,是C++中的用法。
结构不支持继承。

你可能感兴趣的:(Unity--Shader(二))