Threejs后处理
所谓 threejs 后期处理,就像 ps 一样,对 threejs 的渲染结果进行后期处理,比如添加发光效果。
EffectComposer
EffectComposer 文件用于提供 EffectComposer 对象,以便添加后期处理步骤
RenderPass
RenderPass 文件用于在EffectComposer 对象上添加渲染通道,如果没有通道,我们的场景就不会被渲染
Threejs所有后处理通道
名称 | 描述 |
---|---|
AdaptiveToneMappingPass | 该通道可以根据场景的光照度自动调节场景的亮度。 |
BloomPass | 该通道通过增强场景中明亮的区域来模拟真实世界中的摄像机。 |
BokehPass | 该通道可以实现类似大光圈镜头的景深效果。 |
ClearPass | 该通道清空当前纹理缓存。 |
CubeTexturePass | 用于渲染天空盒。 |
DotScreenPass | 将黑点图层应用于屏幕的原始图片上。 |
FilmPass | 通过扫描线和失真来模拟电视屏幕效果。 |
GlitchPass | 随机在屏幕上显示电脉冲。 |
HalftonePass | 用于模拟传统印刷术的半色调效果。 |
MaskPass | 在图片上显示掩码,后续通道只会影响到掩码区域。 |
OutlinePass | 勾勒出场景中的物体轮廓。 |
RenderPass | 在当前场景和摄像机的基础上渲染出一个新场景。 |
SAOPass | 实现实时环境光遮挡效果。 |
SMAAPass | 全屏反锯齿效果。 |
SSAARenderPass | 使用另一种算法实现全屏反锯齿效果。 |
SSAOPass | 使用另一种算法实现实时环境光遮挡效果 |
SavePass | 该通道执行时会赋值当前渲染结果,在后续步骤中可以使用。实际应用中用处不大。 |
ShaderPass | 自定义着色器通道,可以传入自定义着色器作为参数,以生成一个高级、自定义的后期处理通道。 |
TAARenderPass | 也是一个全屏反锯齿效果。 |
TexturePass | 将合成器的当前状态保存为纹理,然后将其作为参数传入到其他的 EffectComposer 组合器中。 |
UnrealBloomPass | 该通道与 Bloom 类似,但是它实现的效果更接近于 Unreal3D 引擎的 Bloom 效果。 |
OutlinePass 示例
typescript
// 省略scene、camera、renderer的定义
const mesh = new Mesh(new BoxGeometry(100, 100, 100), new MeshLambertMaterial({ color: "white" }));
scene.add(mesh);
const composer = new EffectComposer(renderer);
const renderPass = new RenderPass(scene, camera);
composer.addPass(renderPass);
const outlinePass = new OutlinePass(new Vector2(window.innerWidth, window.innerHeight), scene, camera);
outlinePass.selectedObjects = [mesh];
outlinePass.edgeThickness = 4;
outlinePass.edgeStrength = 6;
outlinePass.pulsePeriod = 2;
outlinePass.visibleEdgeColor.set(0xFFFF00);
composer.addPass(outlinePass);
引用
十八、Three.js后期处理与自定义着色器
1. 后处理(发光描边OutlinePass) | Three.js中文网
Comments | 0条评论