【问题标题】:Passing Vec3 Array to Vertex Shader with ThreeJS使用 ThreeJS 将 Vec3 数组传递给顶点着色器
【发布时间】:2019-09-11 21:31:12
【问题描述】:
如何使用 ThreeJS 将 vec3 数据数组传递给顶点着色器?
air_parcel_pos: {
type: "???",
value: the array of data
}
【问题讨论】:
标签:
javascript
three.js
glsl
shader
vertex-shader
【解决方案1】:
初始化值必须是对应于 GLSL 数据类型的值数组。
例如
如果uniform变量是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: // ...
});
其他数据类型为Vector2、Vector4 或Color。 float 或 int 的数组可以由值数组设置。