---
id: Bbeierle12/Skill-MCP-Claude/postfx-bloom
version: "f6ef252f"
license: MIT
install: manual
updated: 2026-07-27
---
# postfx-bloom — postfx-bloom delivers post-processing bloom effects for 3D rendering pipelines. Configure bloom intensity, threshold, and blur radius to create glowing highlights and atmospheric lighting. Ideal for games and interactive visualizations seeking polished visual enhancement.
Publisher: Bbeierle12 · Stars: 8 · Updated: 2026-07-27
Install (manual): `git clone https://github.com/Bbeierle12/Skill-MCP-Claude`
## SKILL.md
# Post-Processing Bloom
Bloom effects using UnrealBloomPass for luminance-based glow and selective object bloom.
## Quick Start
```bash
npm install three @react-three/fiber @react-three/postprocessing
```
```tsx
import { Canvas } from '@react-three/fiber';
import { EffectComposer, Bloom } from '@react-three/postprocessing';
function Scene() {
return (
);
}
```
## Core Concepts
### How Bloom Works
1. **Threshold** — Pixels brighter than threshold are extracted
2. **Blur** — Extracted pixels are blurred in multiple passes
3. **Composite** — Blurred result is added back to original image
### Key Parameters
| Parameter | Range | Description |
|-----------|-------|-------------|
| `luminanceThreshold` | 0-1 | Brightness cutoff for bloom (lower = more glow) |
| `luminanceSmoothing` | 0-1 | Softness of threshold transition |
| `intensity` | 0-10 | Bloom brightness multiplier |
| `radius` | 0-1 | Blur spread/size |
| `levels` | 1-9 | Blur quality/iterations |
## Patterns
### Cosmic Glow Effect
```tsx
import { EffectComposer, Bloom } from '@react-three/postprocessing';
import { KernelSize } from 'postprocessing';
function CosmicBloom() {
return (
);
}
```
### Neon Cyberpunk Bloom
```tsx
// High-contrast neon with sharp falloff
function NeonBloom() {
return (
);
}
// Emissive material for neon objects
function NeonTube({ color = '#FF00FF' }) {
return (
);
}
```
### Selective Bloom with Layers
```tsx
import { useRef } from 'react';
import { useThree } from '@react-three/fiber';
import { EffectComposer, SelectiveBloom } from '@react-three/postprocessing';
function SelectiveGlow() {
const glowRef = useRef();
return (
<>
{/* Non-blooming object */}
{/* Blooming object */}
>
);
}
```
### Multi-Selection Bloom
```tsx
import { Selection, Select, EffectComposer } from '@react-three/postprocessing';
import { SelectiveBloom } from '@react-three/postprocessing';
function MultiSelectBloom() {
return (
{/* Non-blooming */}
{/* Blooming objects wrapped in Select */}
);
}
```
### Animated Bloom Intensity
```tsx
import { useRef } from 'react';
import { useFrame } from '@react-three/fiber';
import { EffectComposer, Bloom } from '@react-three/postprocessing';
function PulsingBloom() {
const bloomRef = useRef();
useFrame(({ clock }) => {
if (bloomRef.current) {
const pulse = Math.sin(clock.elapsedTime * 2) * 0.5 + 1.5;
bloomRef.current.intensity = pulse;
}
});
return (
);
}
```
### Audio-Reactive Bloom
```tsx
function AudioReactiveBloom({ audioData }) {
const bloomRef = useRef();
useFrame(() => {
if (bloomRef.current && audioData) {
// Map bass frequency (0-255) to bloom intensity (1-4)
const bassLevel = audioData[0] / 255;
bloomRef.current.intensity = 1 + bassLevel * 3;
// Map mid frequencies to threshold
const midLevel = audioData[4] / 255;
bloomRef.current.luminanceThreshold = 0.1 + (1 - midLevel) * 0.3;
}
});
return (
);
}
```
## Emissive Materials
### Standard Emissive Setup
```tsx
// For bloom to work, objects need emissive materials
function GlowingSphere({ color = '#00F5FF', intensity = 2 }) {
return (
);
}
```
### Emissive with Texture
```tsx
import { useTexture } from '@react-three/drei';
function EmissiveTextured() {
const emissiveMap = useTexture('/glow-pattern.png');
return (
);
}
```
### Shader Material with Emissive
```tsx
import { shaderMaterial } from '@react-three/drei';
import { extend } from '@react-three/fiber';
const GlowMaterial = shaderMaterial(
{ uTime: 0, uColor: [0, 0.96, 1], uIntensity: 2.0 },
// Vertex shader
`
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`,
// Fragment shader - outputs HDR values for bloom
`
uniform float uTime;
uniform vec3 uColor;
uniform float uIntensity;
varying vec2 vUv;
void main() {
float pulse = sin(uTime * 2.0) * 0.3 + 0.7;
vec3 glow = uColor * uIntensity * pulse;
gl_FragColor = vec4(glow, 1.0);
}
`
);
extend({ GlowMaterial });
function PulsingGlowMesh() {
const materialRef = useRef();
useFrame(({ clock }) => {
materialRef.current.uTime = clock.elapsedTime;
});
return (
);
}
```
## Performance Optimization
### Resolution Scaling
```tsx
```
### Mobile-Optimized Bloom
```tsx
import { useDetectGPU } from '@react-three/drei';
function AdaptiveBloom() {
const { tier } = useDetectGPU();
const config = tier < 2
? { levels: 3, radius: 0.5, intensity: 1.0 }
: { levels: 5, radius: 0.8, intensity: 1.5 };
return (
);
}
```
## Temporal Collapse Theme
Bloom configuration for the New Year countdown cosmic aesthetic:
```tsx
// Cosmic void with cyan/magenta glow
function TemporalCollapseBloom() {
return (
);
}
// Color palette for emissive materials
const TEMPORAL_COLORS = {
cyan: '#00F5FF',
magenta: '#FF00FF',
gold: '#FFD700',
void: '#050508'
};
// Time digit with glow
function GlowingDigit({ digit, color = TEMPORAL_COLORS.cyan }) {
return (
{digit}
);
}
```
## Troubleshooting
| Issue | Solution |
|-------|----------|
| No bloom visible | Ensure `emissiveIntensity > 1` and `toneMapped={false}` |
| Bloom too subtle | Lower `luminanceThreshold`, increase `intensity` |
| Performance issues | Reduce `levels`, enable `mipmapBlur`, disable multisampling |
| Selective bloom not working | Verify `ref` is passed and object has emissive material |
| Bloom bleeding everywhere | Raise `luminanceThreshold` to isolate bright areas |
## Reference
- See `postfx-composer` for EffectComposer setup patterns
- See `postfx-effects` for combining bloom with other effects
- See `shaders-glsl` for custom emissive shader techniques
[View on SkillFed](https://skillfed.io/Bbeierle12/Skill-MCP-Claude/postfx-bloom) · [View on GitHub](https://github.com/Bbeierle12/Skill-MCP-Claude)