Three.js - 有没有一种简单的方法可以在片段着色器中处理一个纹理,并在javascript代码中使用GPUComputationRenderer将其取回?

问题描述 投票:0回答:1

我需要在shader中程序化地生成一个纹理,并在javascript代码中得到它,以便将其应用到一个对象上,由于这个纹理不会随着时间的推移而改变,我想只处理一次。

我认为GPUComputationRenderer可以做到这一点,但我不知道如何实现,以及最小的代码是什么。

three.js gpu textures fragment-shader fbo
1个回答
0
投票

我需要在shader中程序化地生成一个纹理,并在我的javascript代码中得到它,以便将它应用到一个对象上。

听起来你只是想执行基本的RTT。在这种情况下,我建议你使用 THREE.WebGLRenderTarget. 这个想法是设置一个简单的场景,有一个全屏四边形和一个自定义的 THREE.ShaderMaterial 包含产生纹理的着色器代码。你不是渲染到屏幕(或默认的framebuffer),而是渲染到渲染目标。在下一步,你可以在实际场景中使用这个渲染目标作为贴图。

请看下面的例子来演示这个工作流程。

https:/threejs.orgexampleswebgl_rtt

GPUComputationRenderer 实际上是为GPGPU设计的,但我认为这对你的使用情况来说是不必要的。

© www.soinside.com 2019 - 2024. All rights reserved.