我真的很喜欢在三个例子中发现的gpgpu demo。在玩着色器时,尝试构建一个粒子模拟器,我很快就注意到我不需要手动更新纹理制服来改变粒子的位置。 我继续下载示例代码,发现以下几行似乎是多余的:
if (!paused) {
simulator.simulate( delta );
birdUniforms.texturePosition.value = simulator.currentPosition;//redundant?
birdUniforms.textureVelocity.value = simulator.currentVelocity;//redundant?
}
现在我想知道这些值设置在哪里,有更广泛了解threejs的人能告诉我在哪里看吗?虽然到目前为止我的应用程序运行良好,但我真的很烦我不明白为什么......
编辑:有没有办法找出在threejs内更新制服的时间/地点?尝试记录相应材料的制服总是返回null。是否可以在不使用着色材料的情况下更新着色器的制服?答案 0 :(得分:0)
看来,示例在某一点被重构,以隐藏SimulationRenderer
内部的一些GPGPU实现细节 - 特别是ping-ponging - 并且主体中有一些遗留代码。实际上,birdUniforms
未被使用。
也许你可以改进这个例子。
three.js r.66