UniformType 定义了Cesium中的uniform variables的类型。
以下是可用的 UniformType 类型:
| 类型名称 | 描述 |
|---|---|
| INT | 整数类型 |
| FLOAT | 浮点类型 |
| MAT2 | 2x2的矩阵类型 |
| MAT3 | 3x3的矩阵类型 |
| MAT4 | 4x4的矩阵类型 |
| VEC2 | 包含两个浮点类型元素的向量类型 |
| VEC3 | 包含三个浮点类型元素的向量类型 |
| VEC4 | 包含四个浮点类型元素的向量类型 |
| SAMPLER2D | 2D纹理类型 |
| SAMPLER3D | 3D纹理类型 |
| SAMPLERCUBE | 立方体纹理类型 |
以下是使用 UniformType 的示例:
var myShader = new Cesium.Primitive({
type: 'MY_SHADER',
uniforms: {
u_Color: {
name: 'u_Color',
type: Cesium.UniformType.VEC4,
value: new Cesium.Cartesian4(1.0, 0.0, 0.0, 1.0)
},
u_Time: {
name: 'u_Time',
type: Cesium.UniformType.FLOAT,
value: 0.0
},
u_Texture: {
name: 'u_Texture',
type: Cesium.UniformType.SAMPLER2D,
value: myTexture
}
}
});
在这个例子中,我们定义了一个包含了三个uniforms的 Primitive。 其中,u_Color 是一个四元素向量类型,u_Time 是一个浮点类型,u_Texture 是一个2D纹理类型。
UniformType 中的元素必须是确定的。比如 SamplerCube 必须是 CubeMap 纹理类型, Mat2 必须是2x2的矩阵类型,Vec3 必须是3元素向量类型。UniformType 中所有类型名称都必须是大写的。Primitive 中使用 UniformType 时,value 必须是以下类型之一:
NumberFloat32Array, Int32Array 等等。Texture 对象Matrix2, Matrix3, Matrix4, Cartesian2, Cartesian3, Cartesian4 等Cesium对象。