如何将一组对象作为制服传递给Three.js中的自定义着色器

时间:2017-03-30 02:12:55

标签: three.js

我想将一组Javascript对象传递给我用+this->height编写的自定义着色器,但仍然无法弄清楚如何实现这一点。

具体来说,我想手动执行与THREE.RawShaderMaterial相同的操作。我目前通过使用Three.js的功能来实现这一目标:

THREE.PointLightSource

假设我有

var matrixUniforms = {

    projectionMat: { value: new THREE.Matrix4() },

    modelViewMat: { value: new THREE.Matrix4() },

    normalMat: { value: new THREE.Matrix3() },

};

var material = new THREE.RawShaderMaterial( {

    uniforms: THREE.UniformsUtils.merge( [

        matrixUniforms,

        THREE.UniformsLib[ "lights" ],

    ] ),

    vertexShader: $( "#" + vShader ).text(),

    fragmentShader: $( "#" + fShader ).text(),

    lights: true,

} );

如何将其添加到var pointLights = [ { position: new THREE.Vector3(0,0,0), color: new THREE.Vector3(1,1,1) }, { position: new THREE.Vector3(10,10,10), color: new THREE.Vector3(2,2,2) } ]; 的制服中?有没有简单的方法来传递具有相同属性的对象数组?我可能已经找到了旧版本的Three.js的解决方案,但找不到使用最新版本(r84)的方法。

编辑: 我找到了this threadthis thread。但是,它似乎没有在任何地方记录......

0 个答案:

没有答案