使用ThreeJS将Vec3阵列传递到顶点着色器

问题描述 投票:1回答:1

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

air_parcel_pos: {
   type: "???",
   value: the array of data
}
javascript three.js glsl shader vertex-shader
1个回答
3
投票

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

EG

如果统一变量是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: // ...
});

更多数据类型有Vector2Vector4Color。可以通过一组值来设置floatint的数组。

© www.soinside.com 2019 - 2024. All rights reserved.