【发布时间】:2014-10-04 15:07:57
【问题描述】:
我已经在网上搜索了一段时间,但还没有找到正确的答案。 找到了 THREE.js 使用的统一类型列表,我认为下面的代码应该是正确的。在最后一行,我定义了一个统一的 Vector2 数组。
uniforms: {
"center": { type: "v2", value: new THREE.Vector2( 0.5, 0.5 ) },
"aspectRatio": { type: "f", value: null },
"radius": { type: "f", value: 0.1 },
"pointList": { type: "v2v", value: [] },
},
在我的 js 脚本中,我按如下方式传递此数组。我猜这也应该可行:
// Add effects
effect = new THREE.ShaderPass( THREE.MetaBalls2D );
effect.renderToScreen = true;
effect.uniforms[ 'aspectRatio' ].value = window.innerWidth/window.innerHeight;
effect.uniforms[ 'pointList' ].value = pointList //is an array of THREE.Vector2;
composer.addPass( effect );
我现在的问题是,如何从 Fragmentsshader 访问这个统一变量(在本例中为 pointList)?
【问题讨论】:
标签: javascript arrays three.js glsl shader