JSRUN 用代码说话

Uniform

编辑教程

Uniform

Uniforms 是 GLSL 着色器中的全局变量。

示例

在声明一个 ShaderMaterial 的 Uniform 变量时,该变量被值或对象声明。 When declaring a uniform of a ShaderMaterial, it is declared by value or by object.

uniforms: {
    time: { value: 1.0 },
    resolution: new THREE.Uniform(new THREE.Vector2())
}

Uniform 种类

每个 Uniform 必须包括一个 value 属性。value 的类型必须和下表中 GLSL 的基本类型相对应。

同样,Uniform 的结构体和队列 也是支持的。 GLSL基本类型队列必须要么被显示声明为一个 THREE 对象的队列,要么被声明为一个包含所有对象数据的队列。

这就是说, 队列中的 GLSL 基础类型不能再是一个队列。举例,一个有 5 个 vec2 元素的队列,必须是一个包含 5 个 Vector2 的队列数组, 或包含 10 个 number 的队列。

Uniform 类型

GLSL 类型 JavaScript 类型
int Number
float Number
bool Boolean
bool Number
vec2 THREE.Vector2
vec2 Float32Array (*)
vec2 Array (*)
vec3 THREE.Vector3
vec3 THREE.Color
vec3 Float32Array (*)
vec3 Array (*)
vec4 THREE.Vector4
vec4 THREE.Quaternion
vec4 Float32Array (*)
vec4 Array (*)
mat2 Float32Array (*)
mat2 Array (*)
mat3 THREE.Matrix3
mat3 Float32Array (*)
mat3 Array (*)
mat4 THREE.Matrix4
mat4 Float32Array (*)
mat4 Array (*)
ivec2, bvec2 Float32Array (*)
ivec2, bvec2 Array (*)
ivec3, bvec3 Int32Array (*)
ivec3, bvec3 Array (*)
ivec4, bvec4 Int32Array (*)
ivec4, bvec4 Array (*)
sampler2D THREE.Texture
samplerCube THREE.CubeTexture

(*) 与最内层队列中 GSLS 的类型保持一致。包含队列中所有矢量的元素或矩阵中的元素。

构造函数

Uniform( value : Object )

value -- 包含需要设置 Uniform 数据的对象。 数据类型必须是上述类型中的一种。

属性

.value : Object

当前 uniform 的值。

方法

.clone () : Uniform

返回该 Uniform 的克隆。

如果 Uniform 的 value 属性是一个带 clone() 方法的 Object,则克隆该对象时,value 的 clone() 方法也会被调用,否则克隆时只会使用赋值语句。 队列中的值会在该 Uniform 和 被克隆对象间共享。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟