threejs-impl-post-processing

Implements Three.js post-processing pipelines with EffectComposer, passes, and pmndrs/postprocessing.

1|Updated Aug 20, 2023
One-click install
npx skills add https://github.com/imanlangaran/mini-projects --skill threejs-impl-post-processing-imanlangaran
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: threejs-impl-post-processing
Source: https://github.com/imanlangaran/mini-projects/tree/main/react/three-gsap/.claude/skills/threejs-impl-post-processing
Command: npx skills add https://github.com/imanlangaran/mini-projects --skill threejs-impl-post-processing-imanlangaran

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires three, postprocessing, and includes references (resource) components.

What problem does it solve? Adding post-processing effects like bloom, SSAO, or anti-aliasing to a Three.js scene often fails due to mixing the incompatible built-in EffectComposer with pmndrs/postprocessing, wrong pass ordering, missing RenderPass or OutputPass, and forgotten composer resizing. This Skill provides the correct architecture, pass APIs, and anti-patterns to build working post-processing pipelines. ## Core Features & Use Cases - EffectComposer Pipeline Setup: Correct pass ordering with RenderPass first, effect passes in the middle, anti-aliasing after effects, and OutputPass last. - 27+ Pass Reference: Covers UnrealBloomPass, SSAOPass, GTAOPass, OutlinePass, BokehPass, SMAAPass, FXAAPass, custom ShaderPass, and more with constructor signatures and key properties. - pmndrs/postprocessing Integration: Guidance on the merged-effect EffectPass approach for performance-critical and React Three Fiber applications. - Use Case: Add HDR bloom to a glowing emissive object by enabling ACES tone mapping, creating an EffectComposer with RenderPass, UnrealBloomPass, and OutputPass, and calling composer.render() in the animation loop. ## Quick Start Add a bloom effect to my Three.js scene using EffectComposer with the correct pass order and resize handling.

Frequently Asked Questions about threejs-impl-post-processing

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add bloom to a Three.js scene?

Add bloom by creating an EffectComposer with a RenderPass first, then an UnrealBloomPass with strength, radius, and threshold parameters, and an OutputPass last. Enable tone mapping such as ACESFilmicToneMapping on the renderer so HDR values above 1.0 trigger the glow.

What is the correct pass order for Three.js EffectComposer?

RenderPass must be first to render the scene into the buffer, effect passes like bloom or SSAO go in the middle, anti-aliasing passes like SMAA or FXAA go after effects, and OutputPass must be last for tone mapping and color space conversion.

Should I use Three.js EffectComposer or pmndrs/postprocessing?

Use the built-in EffectComposer for simple setups and custom ShaderPass effects, and pmndrs/postprocessing for performance-critical or React Three Fiber apps since it merges effects into a single pass. Never mix the two libraries because their buffer formats are incompatible.

Why is my Three.js bloom effect not visible?

Bloom appears faint or invisible when tone mapping is disabled, because HDR values above 1.0 get clamped before bloom detects them. Set renderer.toneMapping to ACESFilmicToneMapping and raise emissiveIntensity above 1.0 on materials that should glow.

Why are my post-processing effects blurry after resizing the window?

Blurry or misaligned effects occur when only the renderer is resized but the EffectComposer is not. The composer keeps internal render targets at the old resolution, so always call composer.setSize(width, height) alongside renderer.setSize in the resize handler.

Can I use Three.js post-processing passes with the WebGPU renderer?

No, the built-in EffectComposer passes only work with WebGLRenderer. The WebGPU renderer requires the separate node-based PostProcessing class from three/addons/tsl/display, which uses TSL shader graphs instead of GLSL passes.