Selective Bloom RendererFeature 자체 구현
ChosenPros
- Per-layer isolation possible, direct control of RT / pixel cost
Cons
- Maintenance is on us, must keep up with URP version upgrades

URP Bloom isolated per layer — RT memory reduced 90% + pixel processing reduced 35–40%
Pros
Cons
Pros
Cons
Why Selective Bloom RendererFeature 자체 구현: Since the requirement "Bloom only on effects" is clear, the full-screen mip-chain structure is overkill. The minimal pipeline that fits: render only the BloomFX layer to a separate RT via LayerMask → 2-pass blur → Additive composite.

The LayerMask filter culls anything outside the BloomFX layer. Downsample steps (downsampleSteps) are adjustable 0~3 in the inspector.
3-tap × V/H separable blur. Iterations expand the radius. Two RTs ping-pong to minimize memory.
The offset vector (_BlurOffset) is computed once in the vertex shader and passed via V2F → reduces fragment cost.
_HighlightIntensity controls peak intensity (squared curve)_WhiteOut makes only very bright regions burn out to white (white-hot)Comparison at 1080p
| Item | URP Default Bloom | Selective Bloom |
|---|---|---|
| Pixel throughput | ~4.0M | ~2.6M (−35%) |
| Blur sample count | 9-tap dual filter | 3-tap × 2-pass = 6-tap |
| RT count | 6+ (mip chain) | 2 (ping-pong) |
| RT memory | ~5–10 MB | ~0.5 MB (−90%) |
| Composite scope | full screen | limited to BloomFX layer |
| Downsample steps | 5+ fixed | 0~3, adjustable in inspector |
| Material parameters | a subset like Threshold·Intensity | Threshold·Highlight·WhiteOut·blur weights and more directly exposed |
Tradeoffs
URP default Bloom is tuned for cinematic and console scenarios where the whole screen emits light. For mobile scenarios that only need effect emission, this pipeline is overkill, and a custom RendererFeature with layer isolation and a minimal-pass structure is a better fit.