Передача массива Vec3 в Vertex Shader с ThreeJS - PullRequest
1 голос
/ 22 апреля 2019

Как передать массив данных vec3 в вершинный шейдер с помощью ThreeJS?

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

1 Ответ

3 голосов
/ 22 апреля 2019

Значение инициализации должно быть массивом значений, которые соответствуют типу данных 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: // ...
});

Другие типы данных: Vector2, Vector4 или Color.Массив float или int может быть установлен массивом значений.

...