US2S3L2——基础数据类型

基础数据类型

  • uint​:32为无符号整形

  • int​:32位整形

  • float​:32位浮点数,符号:f

  • half​:16位浮点数,符号:h

  • fixed​:12位浮点数,Shader最常用的浮点数类型,不需要加后缀

  • bool​:布尔类型

  • string​:字符串

  • sampler​:纹理对象句柄

    下面都是用于处理纹理(Texture)数据的数据类型,他们的主要区别是纹理的维度和类型

    • sampler​: 通用的纹理采样器,可以用于处理各种不同维度和类型的纹理
    • sampler1D​:用于一维纹理,通常用于对一维纹理进行采样,例如从左到右的渐变色
    • sampler2D​:用于二维纹理,最常见的纹理类型之一。它用于处理二维图像纹理,例如贴图
    • sampler3D​:用于三维纹理,通常用于体积纹理,例如体积渲染
    • samplerCUBE​:用于立方体纹理,通常用于处理环境映射等需要立方体贴图的情况
    • samplerRECT​:用于处理矩形纹理,通常用于一些非标准的纹理映射需求
1
2
3
4
5
6
7
8
9
10
11
uint ui = 12;
int i = -3;

float f = 1.2f;
half h = 1.2h;
fixed fix = 3.2;

bool b = true;
string str = "123";

sampler sam;

基础复合数据类型

  • 数组

    声明和C#中类似,与C语言一致

    • 一维

      1
      int arrayi[4] = { 1, 2, 3, 4 }

      注意!CG中无法通过 数组.length​ 去获取数组长度,
      我们只能自己去声明变量来记录数组长度,例如声明 int arrayfLength = 4;
      来记录数组长度,之后可以用该变量来遍历数组

    • 二维

      1
      2
      3
      int arrayii[3][3] = { {1,2,3}, 
      {4,5,6},
      {7,8,9} }
  • 结构体

    和C#基本一样,但是没有访问修饰符,如public​这些
    **结构体声明结束加分号**​ ; ​,一般在函数外声明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    struct Test
    {
    int i;
    float f;
    bool b;
    };

    v2f vert (appdata v)
    {
    v2f o;

    Test t;
    t.i = 1;
    t.f = 1.2f;
    t.b = false;

    return o;
    }