threejs-postprocessing

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

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

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 configuring EffectComposer pass chains, which is error-prone and poorly documented across many scattered examples. ## Core Features & Use Cases - EffectComposer Setup: Configure render passes, handle window resize, and chain multiple effects in the correct order. - Built-in Effects: Ready-to-use code for bloom (including selective bloom), FXAA/SMAA anti-aliasing, SSAO, depth of field, film grain, vignette, glitch, halftone, outline, and pixelation. - Custom ShaderPass: Templates for writing custom screen-space shaders such as wave distortion, color inversion, and chromatic aberration. - Use Case: You are building a WebGL product showcase and want glowing highlights on emissive materials plus a subtle vignette and FXAA; this Skill provides the complete composer chain with resize handling. ## Quick Start Add a bloom effect with FXAA anti-aliasing to my Three.js scene using EffectComposer and make it handle window resizing.

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 in Three.js?

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

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

Use selective bloom by assigning glowing objects to a dedicated layer, darkening all non-bloomed meshes with a black material during the bloom pass, then restoring materials and rendering the final scene on top.

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

FXAA is cheaper and works as a single ShaderPass with a resolution uniform, making it suitable for most cases. SMAA produces higher-quality edges but costs more; use SMAAPass when visual quality matters more than performance.

Why is my Three.js post-processing not rendering anything?

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

How do I write a custom shader pass in Three.js?

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

How to improve Three.js post-processing performance?

Limit the number of passes, render bloom at half resolution, disable unused passes via the enabled flag, and prefer FXAA over MSAA. Skip expensive effects like SSAO on mobile devices detected via user agent.