使用ThreeJS将Vec3数组传递到顶点着色器

时间:2019-04-22 17:45:42

标签: javascript three.js glsl shader vertex-shader

如何使用ThreeJS将vec3数据数组传递给顶点着色器?

air_parcel_pos: {
   type: "???",
   value: the array of data
}

1 个答案:

答案 0 :(得分:3)

初始化值必须是与GLSL数据类型相对应的值的数组。

例如

如果统一变量是vec3的数组

uniform vec3 u_array[3];

那么初始化值可以是THREE.Vector3的数组

var uniforms = {
    u_array: {value: [
        new THREE.Vector3(1, 0, 0),
        new THREE.Vector3(0, 1, 0),
        new THREE.Vector3(0, 0, 1)
    ] }
};

var material = new THREE.ShaderMaterial({  
    uniforms: uniforms,
    vertexShader: // ...
    fragmentShader: // ...
});

其他数据类型为Vector2Vector4Colorfloatint的数组可以由值数组设置。