3d - 在 Three.js 中从后处理中排除对象/图层

标签 3d three.js shader

从后处理中排除某些对象或(理想情况下)对象层的最佳方法是什么?

例如,我想要使用各种后处理效果(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/

相关文章:

javascript - Three.js 随机点列表

javascript - Three.js 骨骼动画

opengl - 使用 OpenGL/GLSL 的降尺度(下采样)技术实现光晕效果

OpenGL:如何暂停着色器工作

相当于矩阵变换的高质量四元数数学

c++ - 从深度图中绘制表面的 3d

python - 在 Matplotlib 中绘制一个 3d 立方体、一个球体和一个向量

r - 在 R 中绘制 3D 数据

javascript - 旋转相机后 Three.js 天空盒似乎损坏了

opengl - Cocoa 和 OpenGL,如何使用数组设置 GLSL 顶点属性?