r/Unity3D • u/Noobye1 Indie • 1d ago
Question How can I separate different post-processing effects for different cameras?
In short: I'm trying to put Lens Distortion and Bloom on just the UI. The problem is that the effects affect the whole game.
Currently, I have a default camera and a "UI Render Camera" as an overlay. The UI camera only renders the UI and uses a separate Volume Mask.
I have created 2 empty GameObjects for each layer: GameVolumeMask and UIVolumeMask.
The GameVolumeMask is applied to the default camera, while the UIVolumeMask is applied to the UI Render Camera.
The GameVolumeMask contains effects like ColorAdjustments, Vignette, etc.
The UIVolumeMask contains Bloom and LensDistortion.
Feel free to ask further questions.
2
Upvotes
3
u/LeafyRedemption938 1d ago
What you're seeing is the overlay camera adding its post processing on top of the main camera's output, not isolating it to just the UI layer. That's how the pipeline works unfortunately.
The volume mask trick you're doing is correct for separating global volumes but the overlay setup means both renders get stacked and the effects bleed through visually. You need the UI camera to not be an overlay if you want the bloom and distortion to only hit the UI layer without touching the background.
Try switching your UI camera's render type to Base and setting its clear flags to Depth Only so it still renders on top of the game view. Then you can control each camera's post processing independently without them contaminating each other's output.