从后处理中排除某些对象或(理想情况下)对象层的最佳方法是什么?
例如,我想要使用各种后处理效果(SSAO、倾斜移位等)渲染出复杂的背景场景,然后覆盖另一层 3D 对象,而不对其进行后处理效果。
我想我可以有 2 个完全不同的 WebGL 渲染器(具有透明背景),但我希望这 2 个图层相互集成,因此看起来未处理的图层对象已集成/在已处理的图层对象之上。
如果有帮助的话,我对影响第二层的倾斜移位并不那么大惊小怪 - 我最感兴趣的是确保第二层没有应用 SSAO。
我希望这至少有一定道理。在我陷入兔子洞太深之前,我想在这里问一下,因为可能有一种我不知道的完美方法。 :)
最佳答案
我假设您使用 THREE.EffectComposer
进行后处理。看看the advanced post-processing example以及它如何使用 EffectComposer
中的 MaskPass
(利用模板缓冲区)来限制对背景的某些后处理(模糊)。您还需要将背景对象和前景对象放在不同的场景中。
关于3d - 在 Three.js 中从后处理中排除对象/图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837835/