更改位置Three.js / webgl顶点着色器

时间:2015-12-19 23:09:37

标签: javascript opengl-es three.js particle-system

您好我制作了一个粒子系统,使用三个.js它使用普通的JavaScript循环来改变粒子位置,但这很慢。

因此我开始学习如何通过着色器将其传输到GPU。

我有一个问题,我无法改变位置,每个点都保持在同一位置。

var vertexShader = [
        'void main() {',
        '    vec3 newPosition = position.xyz;',
        '    newPosition.y += 10.0;',
        '    gl_PointSize = 1.00;',
        '    gl_Position = projectionMatrix * modelViewMatrix * vec4( newPosition, 1.0 );',
        '}',
    ].join('\n');

为什么

'    newPosition.y += 10.0;',

不改变粒子位置?

我是否需要某种时间变量,我注意到人们似乎有这些? 感谢。

1 个答案:

答案 0 :(得分:0)

我把它弄出来了,position是一个Attribute,我需要将一个制服传递给Shader,这可以用来增加位置属性。

顶点着色器:

var vertexShader = [
        'uniform float time;',
        'void main() {',
        '   vec3 newPos = position;',
        '   newPos.x += time;',
        '   gl_PointSize = 1.00;',
        '   gl_Position = projectionMatrix * modelViewMatrix * vec4( newPos, 1.0 );',
        '}',
    ].join('\n');