1.数据类型

    • float 32位精度 (PC)
    • half 16位精度 +-160000
    • fixed (-2—+2)
    • Integer 整型 表示数组里的索引 (0 1 2 3…)
    • sampler2D 采样二维图片
    • samplerCUBE 采样三维图片

    2.变量
    n=变量

    3.float4数据类型
    GPU是以四维向量为基本单位来计算的。4个浮点数所组成的float4向量是GPU内置的最基本类型。使用GPU对两个float4向量进行计算,与CPU对两个整数或两个浮点数进行计算一样简单,都是只需要一个指令就可以完成。
    HLSH的基本数据类型定义了float、int和bool等非向量类型,但是它们实际上都会被Complier转换成float4的向量,只要把float4向量的其中3个数值忽略,就可以把float4类型作为标量使用。
    使用贴图坐标时,只需要二维向量,HLSL定义了float2类型作为二维向量使用。
    Shader经常会用到矩阵,HLSL有一个内置类型float4x4,它可以用来表示一个44矩阵。float4x4并不是GPU的内置类型,float4x4实际上是由4个float4所组成的数组。其他的还有float3x3、float2x2,分表代表33矩阵、22矩阵。
    Shader也可以声明数组,4
    4矩阵实际上就是一个float4 m[4]的数组。注意,Shader中的所有的变量都使用寄存器,没有其他内存空间可以使用,所以越大的数组会占用越多的寄存器,甚至会超出寄存器的数量限制。
    在使用float4向量中的个别数值时,可以用xyzw或rgba,都可以用来表示四维向量中的数值。但不能把它们混用,例如不能用xyba,把它视为颜色时就用rgba,否则就是用xyzw,不能把这二者混合使用。