基本数据类型
高精度: float
高精度浮点值;一般是32位(就像是普通编程语言中的浮点数)
完全浮点精度通常用于世界空间位置,文理坐标或者涉及复杂函数(如三角学或幂/指数)的标量计算
中精度:half
中精度浮点值;一般为16位(范围为-60000到+60000,精度为3位小数)
half精度是有用的对于短矢量,方向,物体空间位置,高动态范的颜色
低精度:fixed
低精度fixed值,一般为11位,位置为-2.0到+2.0,精度为1/256.
fixed精度是有用的对于常规颜色(通常储存在常规文理)和执行简单的操作.
整数数据类型
整数(int数据类型)通常用作循环计数器或数组索引.为此,他们通常可以在各种平台上很好的工作.
根据平台的不同,GPU可能不支持整数类型.例如Direct3D 9和OpenGL ES 2.0 gpu只对浮点数据进行操作,而看起来很简单的整数表达式(设计位或逻辑操作)可能会使用相当复杂的浮点数书序指令进行模拟.
Direct3D 11、OpenGL ES 3、Metal和其他现代平台都对整数数据类型提供了适当的支持,因此使用唯一和位掩蔽可以正常工作.
Texture/Sampler types
通常你在你的HLSL代码中声明纹理如下:
sampler2D _MainTex;
samplerCUBE _Cubemap;
对于一动平台,这些转换为"低精度采样器",即纹理中期望有低精度的数据.如果你知道你的纹理包含HDR颜色,你可能想要使用半精度采样器:
sampler2D_half _MainTex;
sample