我需要在shader中程序化地生成一个纹理,并在javascript代码中得到它,以便将其应用到一个对象上,由于这个纹理不会随着时间的推移而改变,我想只处理一次。
我认为GPUComputationRenderer可以做到这一点,但我不知道如何实现,以及最小的代码是什么。
我需要在shader中程序化地生成一个纹理,并在我的javascript代码中得到它,以便将它应用到一个对象上。
听起来你只是想执行基本的RTT。在这种情况下,我建议你使用 THREE.WebGLRenderTarget. 这个想法是设置一个简单的场景,有一个全屏四边形和一个自定义的 THREE.ShaderMaterial 包含产生纹理的着色器代码。你不是渲染到屏幕(或默认的framebuffer),而是渲染到渲染目标。在下一步,你可以在实际场景中使用这个渲染目标作为贴图。
请看下面的例子来演示这个工作流程。
https:/threejs.orgexampleswebgl_rtt
GPUComputationRenderer
实际上是为GPGPU设计的,但我认为这对你的使用情况来说是不必要的。