--- id: Bbeierle12/Skill-MCP-Claude/postfx-effects version: "359aae94" license: MIT install: manual updated: 2026-07-27 --- # postfx-effects — postfx-effects delivers a collection of post-processing filters designed to enhance 3D scene rendering with cinematic quality. Apply bloom, color grading, depth-of-field, and other visual effects to transform raw renders into polished final output. Integrate seamlessly into game engines and real-time graphics pipelines. Publisher: Bbeierle12 · Stars: 8 · Updated: 2026-07-27 Install (manual): `git clone https://github.com/Bbeierle12/Skill-MCP-Claude` ## SKILL.md # Post-Processing Effects Cinematic and stylistic effects using @react-three/postprocessing. ## Quick Start ```bash npm install @react-three/postprocessing postprocessing ``` ```tsx import { Canvas } from '@react-three/fiber'; import { EffectComposer, ChromaticAberration, Vignette, Noise } from '@react-three/postprocessing'; function CinematicScene() { return ( ); } ``` ## Core Effects ### Chromatic Aberration RGB channel separation for lens distortion or glitch effects. ```tsx import { ChromaticAberration } from '@react-three/postprocessing'; import { BlendFunction } from 'postprocessing'; import { Vector2 } from 'three'; // Subtle cinematic fringing function SubtleChromaticAberration() { return ( ); } // Intense glitch effect function GlitchChromaticAberration() { const offsetRef = useRef(); useFrame(({ clock }) => { if (offsetRef.current) { const glitch = Math.random() > 0.95 ? 0.01 : 0.002; offsetRef.current.offset.set(glitch, glitch * 0.5); } }); return ( ); } ``` ### Vignette Darkened edges for focus and cinematic framing. ```tsx import { Vignette } from '@react-three/postprocessing'; // Soft cinematic vignette function CinematicVignette() { return ( ); } // Harsh spotlight effect function SpotlightVignette() { return ; } ``` ### Depth of Field Simulated camera focus with bokeh blur. ```tsx import { DepthOfField } from '@react-three/postprocessing'; // Focus on specific distance function StaticDOF() { return ( ); } // Focus follows target object function TrackingDOF({ targetRef }) { const dofRef = useRef(); const { camera } = useThree(); useFrame(() => { if (targetRef.current && dofRef.current) { const distance = camera.position.distanceTo(targetRef.current.position); dofRef.current.target = distance; } }); return ; } ``` ### Noise / Film Grain ```tsx import { Noise } from '@react-three/postprocessing'; import { BlendFunction } from 'postprocessing'; // Subtle film grain function FilmGrain() { return ; } // Heavy VHS noise function VHSNoise() { return ; } ``` ### Color Grading ```tsx import { HueSaturation, BrightnessContrast } from '@react-three/postprocessing'; // Desaturated cinematic look function CinematicGrade() { return ( <> ); } // Warm sunset mood function SunsetGrade() { return ( <> ); } // Cold sci-fi atmosphere function SciFiGrade() { return ( <> ); } ``` ### LUT (Lookup Table) ```tsx import { LUT } from '@react-three/postprocessing'; import { LookupTexture } from 'postprocessing'; function LUTGrading() { const [lut, setLut] = useState(null); useEffect(() => { LookupTexture.createLookupTexture('/luts/cinematic.cube').then(setLut); }, []); if (!lut) return null; return ; } ``` ### Tone Mapping ```tsx import { ToneMapping } from '@react-three/postprocessing'; import { ToneMappingMode } from 'postprocessing'; function CinematicToneMapping() { return ; } ``` ### Scanlines / CRT Effect ```tsx import { Scanline } from '@react-three/postprocessing'; function CRTScanlines() { return ; } ``` ### God Rays ```tsx import { GodRays } from '@react-three/postprocessing'; function VolumetricLight() { const sunRef = useRef(); return ( <> {sunRef.current && } ); } ``` ## Combining Effects ### Cinematic Stack ```tsx function CinematicStack() { return ( ); } ``` ### Retro VHS Stack ```tsx function VHSStack() { return ( ); } ``` ### Dream Sequence Stack ```tsx function DreamStack() { return ( ); } ``` ## Animated Effects ### Time-Driven Color Shift ```tsx function TimeDrivenEffects() { const hueRef = useRef(); const vignetteRef = useRef(); useFrame(({ clock }) => { const t = clock.elapsedTime; if (hueRef.current) hueRef.current.hue = Math.sin(t * 0.1) * 0.1; if (vignetteRef.current) vignetteRef.current.darkness = 0.4 + Math.sin(t * 2) * 0.1; }); return ( ); } ``` ### Audio-Reactive Effects ```tsx function AudioReactiveEffects({ audioData }) { const chromaRef = useRef(); const vignetteRef = useRef(); useFrame(() => { if (!audioData) return; const bass = audioData[0] / 255; const mid = audioData[4] / 255; if (chromaRef.current) { const offset = 0.001 + bass * 0.005; chromaRef.current.offset.set(offset, offset * 0.5); } if (vignetteRef.current) { vignetteRef.current.darkness = 0.3 + mid * 0.3; } }); return ( ); } ``` ## Temporal Collapse Theme Effects stack for cosmic countdown aesthetic: ```tsx function TemporalCollapseEffects() { const chromaRef = useRef(); useFrame(({ clock }) => { if (chromaRef.current) { const pulse = Math.sin(clock.elapsedTime * 1.5) * 0.001; chromaRef.current.offset.set(0.002 + pulse, 0.001 + pulse * 0.5); } }); return ( ); } ``` ## Performance Tips | Technique | Impact | Solution | |-----------|--------|----------| | Multiple blur effects | High | Combine DOF with bloom carefully | | High DOF resolution | High | Use `height={480}` or lower | | LUT loading | Medium | Preload, cache texture | | Many effects | Medium | Order effects efficiently | ```tsx function OptimizedEffects() { return ( ); } ``` ## Reference - See `postfx-composer` for EffectComposer setup and render targets - See `postfx-bloom` for dedicated bloom techniques - See `postfx-router` for effect selection guidance [View on SkillFed](https://skillfed.io/Bbeierle12/Skill-MCP-Claude/postfx-effects) · [View on GitHub](https://github.com/Bbeierle12/Skill-MCP-Claude)