【发布时间】:2018-04-11 11:46:34
【问题描述】:
我需要使用我的自定义着色器对之前在纹理 A(作为渲染目标)上渲染的场景进行后处理,并将结果保存到纹理 B(输入:纹理 A,输出:纹理 B)。因此,我不需要场景和相机。我觉得这太简单了,连三个.js 的类都懒得管了,比如 EffectComposer、Shaderpass、CopyShader、TexturePass 等等。
那么,如何以简单的方式设置这种类似计算的后处理?
【问题讨论】:
我需要使用我的自定义着色器对之前在纹理 A(作为渲染目标)上渲染的场景进行后处理,并将结果保存到纹理 B(输入:纹理 A,输出:纹理 B)。因此,我不需要场景和相机。我觉得这太简单了,连三个.js 的类都懒得管了,比如 EffectComposer、Shaderpass、CopyShader、TexturePass 等等。
那么,如何以简单的方式设置这种类似计算的后处理?
【问题讨论】:
我为您创建了一个小提琴,它显示了没有EffectComposer 的基本后处理效果。这段代码背后的想法是使用WebGLRenderTarget 的实例。
首先,将场景绘制到此渲染目标中。在下一步中,您将此渲染目标用作使用正交相机渲染的平面的纹理。渲染循环中的代码如下所示:
renderer.clear();
renderer.render( scene, camera, renderTarget );
renderer.render( sceneFX, cameraFX );
这个平面对应的材质就是你自定义的shader。我使用了官方 repo 中的亮度着色器。
因此,我不需要场景和相机。
请按照示例中的方式进行操作。这就是图书馆的预期方式。
演示:https://jsfiddle.net/f2Lommf5/5149/
three.js R91
【讨论】: