The purpose of this tutorial is to show a way of setting up realistic HDRI-based lighting for an exterior diorama scene and then taking steps to stylize the lighting. I will be using Unity with the Unified Rendering Pipeline for this example.
The environment art assets are from a free set of assets by Chicago Game Monster on the Unity Asset Store. I have done some modest changes to the shaders and geometry to make them URP compatible and light a bit better.

This journey will take us from simple editor lighting

To realistic HDRI-based lighting

And then to a version of stylized lighting

Scene Set Up
Make sure your geometry is properly set up to receive baked lighting.
1. Create lightmap UVs or have Unity create the lightmap UVs when you import your models.
2. Set all your meshes to be static objects.
3. Mesh lighting settings:
a. Cast Shadows: TWO SIDED
b. Static Shadow Caster TRUE
c. Contribute Global Illumination TRUE
d. Receive Global Illumination LIGHTMAPS
Lighting Look
Pick a sun angle and HDRI panorama to be the base of your lighting.
The lighting look I wanted for this image was a warm-toned desert sunrise, with the sun glinting off the gold materials. I wanted some clouds in the scene to allow the sun and skylight to soften/open the shadows. I picked an image that was near to sunrise and dawn to give me some leeway to push pinks and purples into the scene.
I use PolyHaven as my source for high quality HDRI skies. For this scene I chose Klippad Sunrise 2 by Greg Zaal.
Light Angle
I felt the warmth of the sunrise could be better felt if the sun was in the frame, and that more shadows in the scene would allow me to play up the color in the shadows. I also wanted the shadows to be cast over the torches, so it would be easier to see the light they cast in the environment.
Sky and Sky Light Shaders
Create the sky shaders needed to render and align the sky.
At this point two sky shaders are needed, a procedural sky to observe the position of the sun in the sky and the HDRI panoramic sky for the background.
Create a skybox shader that uses a procedural sky, and assign the directional light to this shader. With the procedural shader applied, you can see your sun's azimuth and how far you've cheated the zenith. In this image, the sun is at a very high angle to be considered morning, but without the sun this high, our whole scene would be in shadow.
Now create and assign the Visible Sky shader with the panoramic HDRI assigned to it, and adjust the skybox shader rotation so it matches the azimuth of the sunlight from your directional light. You will probably have to dim your skybox exposure in order to clearly see the sun location.
Tonemapping, Sky Brightness and Bloom
Create the perceived brightness of the scene.
The HDRI skybox is our "ground truth" for lighting. The settings for the skybox and post processing will determine how bright the scene feels.
Before adjusting the exposure of the sky, set the sky Tint Color to white. It's gray by default, which means that the skylight is already being underexposed by being multiplied against that gray. (You don't *have* to do this, but I prefer not to have additional multipliers on my light colors, since it makes it harder to manage intensity values)
Adjust the exposure of your sky to be how bright you'd like it to be in your scene. This is essentially adjusting the exposure in the lighting instead of in the camera, which you might do in other rendering pipelines.
Create a Volume with a post process definition, assigning overrides for the Tonemapping (ACES) and the Bloom. 
I am partial to the ACES tonemapper, since it's an industry standard and adds some nice contrast to the lighting.
The bloom post process effect creates the illusion of overbright or overexposed areas in the scene. This is key in helping the viewer understand how bright the scene is. If the threshold of the bloom is low enough, you can get some bloom off the brighter parts of the clouds as well as the sun. How the bloom is tuned is somewhat subjective, but it should feel real.

Back to Top