美文网首页
Unity--Shader(二)

Unity--Shader(二)

作者: Lamzz | 来源:发表于2016-12-19 00:07 被阅读28次

    一、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(二)

          本文链接:https://www.haomeiwen.com/subject/jjizmttx.html