【问题标题】: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: // ...
});

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

【讨论】:

  • 谢谢,您的回答扩大了我的理解。
猜你喜欢
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
相关资源
最近更新 更多