Post Processing in URP for Unity 2020
Post processing is where we can really create the “atmosphere” of our game or our scene in addition to adding making our scenes look more life-like.
For reference, I’ve previously written a Post Processing Primer article that digs into Post Processing from Unity’s documentation in greater detail:
The first thing I’m going to do is create a Global Volume.
Then I need to create a new Volume Profile which we can see is automatically generated and stored in our Scenes > Control Room folder.
Before we do anything with our Post Processing Profile, we need to make sure it is on and applied to our scene!
We just select our Main Camera > Camera Component > Rendering and toggle on Post Processing.
I’m going to go ahead and turn FXAA anti-aliasing on as well.
The Bloom effect makes bright areas in your image glow. To do this, it creates fringes of light that extend from bright…
If we want to utilize Bloom in our scene, we’ll need to first add it to our Global Volume Profile as shown above.
One of the key settings of bloom is the intensity.
As you can see here it has a strong effect to how the emissive lighting is rendered.
Make a mental note that the intensity of the Emission map will play a large role in how the intensity of the bloom effect will be applied.
Notice that in the earlier gif the red floor lights changes were very apparent, but the sci fi tanks hardly changed at all.
That is due to the intensity setting on the emission map of the material for these game objects.
I wouldn’t recommend taking the emission color picker intensity all the way up.
Above 0, you probably want 3 at most.
Adjusting scatter makes the room feel like it has atmosphere…literally.
You see, air isn’t clear, because it has dust particles and what not floating about which can catch light sources.
Scatter helps our scene visualize that.
You can really spend some time tweaking just the emissions, materials, and bloom in your scene!
I settled on these settings for the Global Volume bloom and spent quite some time going through each material that had emissive and tweaking the intensity.
I also ended up creating 2 new lights on my platform since I couldn’t get the emissive on the platform floor lights to do much to their surroundings.
One light omits the scifi tanks, and casts broad amounts of red light around the platform.
The other creates a minor red highlight on the scifi tanks.
With just the one light, I could not light enough of the room / platform and avoid a huge red glare on the main scifi tank.
As you can see, bloom has a massive impact on your scene!
There are several color related components you can play around with.
For me, I just wanted to add a little more contrast to my scene.
Adding Local Post Processing Volumes
In order to create our local post processing volumes, we’ll need to do some initial setup first.
On Main Camera, add the Post Process Layer component.
If like me, when you first try to add the component you find that nothing comes up, that is because you need to add the full Post Processing package to your project.
Open up your package manager, scroll down to Post Processing and click it.
Instead of a remove button, you should see an “Install” button or similar.
Click install and then try adding the Post Process Layer component to your Main Camera.
Adding a new Post Process Layer
For our Post Process layer component to work, we need to create a layer for Post Processing and assign it to our Post Process Layer component on Main Camera.
We’ll create our new volume and name it appropriately.
NOTE: Do not set the PlatformVolume layer to Post Processing, leave it as default.
Next we need to create a profile for our volume.
Just to test out my new local volume is having an effect, I’ll add even more bloom.
Before we can test it out, we need to resize and reposition our volume to cover the area we desire.
At this point, playing around with the platform volume I got inspired by the vignette component.
Why not have a vignette effect happen whenever the player approaches something I want them to interact with?
So I disabled the platform volume, and created a new “PlayerActionVolume” and added Vignette to it.
It might be tough to see as a gif, but the effect really gives the player some feedback that they are somewhere they are supposed to do something.
The vignetting is not so strong that it slams the player in the face with its presence, but the player will notice it at least on a subconscious level.
I feel like this sort of mechanic is really good game design.
Or not, you decide!
Building on this idea, I added Color Adjustments to increase the Post exposure a bit and saturate the scene a bit.
Nothing to harsh that the player will think, “wtf was that”, but just a subtle add to the vignette.
I’m pretty happy with it.
I duplicated my PlayerActionVolume gameobject in the hierarchy and moved new copy to a different terminal.
I resized it as well.
In my hypothetical game, there would be 2 terminals that the player can interact with and I’ve used local volumes to bolster their chances of noticing them.
Back to Global Volume
These are the settings I ended up with for my Global Volume after adding the Lift Gamme Gain component.
This component can really set a mood and help you highlight the colors you like or create that “atmosphere” effect you desire.
I’m going to temporarily disable my current global volume and create two alternate global volumes.
One will simulate a “colder” room and the other a “warmer” room.
As shown above, my preferred global volume is disabled and I’ve created the new Global volumes as well as their associated Profiles.
And that’s it, I’ve disabled my cold and warm global volumes and returned to my preferred global volume.
Time to github this and get some grub!