3
我真的很喜欢在threejs示例中找到gpgpu demo。在玩着色器时,试图构建一个粒子模拟器,我很快注意到我不需要手动更新纹理统一来改变粒子的位置。 我开始下载示例代码,并发现以下行似乎是多余的:threejs - gpgpu/rtt示例冗余行
if (!paused) {
simulator.simulate(delta);
birdUniforms.texturePosition.value = simulator.currentPosition;//redundant?
birdUniforms.textureVelocity.value = simulator.currentVelocity;//redundant?
}
现在我不知道还有什么地方这些值设置代替,可能有人用threejs更广泛的理解告诉我在哪里看?虽然我的应用程序工作完美到目前为止,它真的让我感到困惑,我不明白为什么...
编辑:有没有办法找出何时/哪里制服正在更新threejs?试图记录各自材质的制服总是返回null。是否有可能在不使用shadermaterial的情况下更新着色器的制服?
哎!感谢您的回答!事实上,制服可以一起被排除在外。 birdVS-shader内部的两个sampler2D制服仍在从某处进行更新。然而,在SimulationRenderer中,我没有找到引用birdVS Shader的代码。我还发现,更改birdVS Shader内的制服名称完全不会影响功能。或者我没有看到什么? – cacahuananche
我同意你,这是完全奇怪的... – WestLangley
@cacahuananche我也这样做 - 重命名制服的名字。不能为我的生活弄清楚什么是更新这些位置和速度。 birdVS如何知道模拟中的更新? – Jared