A RenderPipeline is used to group multiple passes. A common setup includes a ClearPass, a GeometryPass, and one or more EffectPass instances (which render fullscreen Effects).
To use the pipeline:
- Initialize
RenderPipeline with your renderer. - Add passes using
.addPass(). - Update the pipeline size using
.setSize(width, height) during resize events. - Execute the pipeline in your animation loop using
.render(timestamp).
import {
BloomEffect,
ClearPass,
EffectPass,
GeometryPass,
RenderPipeline
} from "postprocessing";
// ... setup renderer, scene, camera ...
const pipeline = new RenderPipeline(renderer);
pipeline.addPass(new ClearPass());
pipeline.addPass(new GeometryPass(scene, camera, { samples: 4 }));
pipeline.addPass(new EffectPass(new BloomEffect()));
function onResize(): void {
const width = container.clientWidth, height = container.clientHeight;
camera.aspect = width / height;
camera.updateProjectionMatrix();
pipeline.setSize(width, height);
}
window.addEventListener("resize", onResize);
onResize();
requestAnimationFrame(function render(timestamp: number): void {
requestAnimationFrame(render);
pipeline.render(timestamp);
});