threejs-postprocessing

Implements Three.js post-processing effects using EffectComposer, bloom, DOF, and custom screen-space shaders.

Updated Apr 6, 2026
One-click install
npx skills add https://github.com/capella-hotel-group/capella-hotel-group-poc --skill threejs-postprocessing-capella-hotel-group
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: threejs-postprocessing
Source: https://github.com/capella-hotel-group/capella-hotel-group-poc/tree/main/.github/skills/threejs-postprocessing
Command: npx skills add https://github.com/capella-hotel-group/capella-hotel-group-poc --skill threejs-postprocessing-capella-hotel-group

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires three.

What problem does it solve? Adding visual effects like bloom, depth of field, anti-aliasing, and color grading to a Three.js scene requires correctly wiring EffectComposer passes, managing render order, and handling resize events, which is error-prone without reference patterns. ## Core Features & Use Cases - EffectComposer Setup: Configure RenderPass chains with correct ordering, renderToScreen handling, and resize logic. - Built-in Effects: Ready-to-use patterns for UnrealBloomPass, selective bloom, FXAA/SMAA, SSAO, BokehPass depth of field, film grain, vignette, glitch, halftone, outline, and pixelation. - Custom ShaderPass: Templates for writing custom screen-space shaders such as wave distortion, invert colors, and chromatic aberration. - Use Case: When building a 3D product showcase that needs glowing highlights and cinematic depth of field, use this Skill to assemble a composer chain with bloom, vignette, gamma correction, and FXAA in the correct pass order. ## Quick Start Add an UnrealBloomPass glow effect to my existing Three.js scene using EffectComposer with proper resize handling.

Frequently Asked Questions about threejs-postprocessing

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

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

Add bloom with UnrealBloomPass inside an EffectComposer chain. Create the composer, add a RenderPass first, then add UnrealBloomPass with strength, radius, and threshold parameters, and call composer.render() instead of renderer.render() in the animation loop.

How to apply bloom only to specific objects in Three.js?▼

Selective bloom uses THREE.Layers to mark glowing objects, then darkens non-blooming meshes with a black material before rendering the bloom pass. After the composer renders, restore the original materials and render the final scene on top.

FXAA vs SMAA in Three.js post-processing, which should I use?▼

FXAA is cheaper and applied as a ShaderPass with a resolution uniform, making it suitable for most cases. SMAA produces higher-quality edges via SMAAPass but costs more; both should be placed last in the composer chain before output.

Why is my Three.js post-processing not rendering after adding EffectComposer?▼

The most common cause is still calling renderer.render() instead of composer.render() in the animation loop. Also verify the first pass is a RenderPass and that composer.setSize() is called on window resize alongside camera updates.

How do I write a custom shader pass for Three.js post-processing?▼

Define a shader object with a tDiffuse uniform, vertex shader, and fragment shader, then wrap it in ShaderPass and add it to the composer. Update custom uniforms like time each frame through pass.uniforms in the animation loop.

How do I fix post-processing effects breaking on window resize?▼

On resize, update the camera aspect, call renderer.setSize and composer.setSize, then refresh pass-specific uniforms such as the FXAA resolution value and bloom pass resolution. Skipping these updates causes stretched or misaligned effects.