Three.js threejs-gpgpu/rtt示例冗余线路
我真的很喜欢在三个JS示例中找到的。在使用着色器时,尝试构建“细胞中的粒子”模拟器,我很快注意到我不需要手动更新纹理制服来更改粒子的位置。 我继续下载示例代码,发现以下几行似乎是多余的:Three.js threejs-gpgpu/rtt示例冗余线路,three.js,webgl,shader,gpgpu,Three.js,Webgl,Shader,Gpgpu,我真的很喜欢在三个JS示例中找到的。在使用着色器时,尝试构建“细胞中的粒子”模拟器,我很快注意到我不需要手动更新纹理制服来更改粒子的位置。 我继续下载示例代码,发现以下几行似乎是多余的: if (!paused) { simulator.simulate( delta ); birdUniforms.texturePosition.value = simulator.currentPosition;//redundant?
if (!paused) {
simulator.simulate( delta );
birdUniforms.texturePosition.value = simulator.currentPosition;//redundant?
birdUniforms.textureVelocity.value = simulator.currentVelocity;//redundant?
}
现在我想知道这些值是在哪里设置的,有没有对threejs有更广泛了解的人能告诉我应该在哪里查找?虽然到目前为止我的应用程序运行得很好,但我真的不明白为什么
编辑:有没有办法找出在threejs中更新制服的时间/地点?尝试记录相应材质的制服总是返回null。甚至可以在不使用shadermaterial的情况下更新着色器的制服吗?似乎在某一点上对该示例进行了重构,以将一些GPGPU实现细节隐藏在
SimulationRenderer
中,尤其是乒乓球,并且在主体中还有一些剩余代码。事实上,birdUniforms
并没有被使用
也许你可以改进这个例子
three.js r.66嘿!谢谢你的回答!事实上,制服可以放在一起。不过,birdVS着色器中的两个sampler2D制服仍在某处更新。然而,在SimulationRenderer中,我没有找到引用birdVS着色器的代码。我还发现,在birdVS着色器中更改制服的名称根本不会影响其功能,这让我感到困惑。还是我没看到什么?@cacahuananche我也看到了——给制服重新命名。我一辈子都搞不清楚是什么在更新这些位置和速度。鸟人究竟是如何知道模拟中的更新的?