Are shadows realistic at every time of day? At night the moon (and stars) should still light the scene, and clouds/canopy should still shadow that light.
Invisible Moonlight
Our moon was casting shadows nobody could see.
Two separate issues hid them. First, Unity URP shadows only one directional light at a time. When the sun dipped just below the horizon, it kept the shadow map until fully culled, even when the moon was visibly brighter.
Second, our toon shader picked colour bands based on raw light luminance. A full moon has low intensity, so its light fell straight into the darkest band at or below the ambient floor. Lit ground and shaded ground looked identical.
Shading by Visibility
We fixed the handoff and lighting pipeline in two steps:
Light handoff: Our cycle manager now hands the shadow-casting light to whichever directional source is brighter, fading shadow strength down to zero at the crossover point.
Visibility banding: The lighting shader separates light visibility from raw brightness. Banding steps are calculated on pure visibility first. Light intensity is applied afterward using a perceptual square-root curve.
Cloud shadows now drift visibly across moonlit grass, while daytime lighting remains unchanged.
Lifting the Low Sun
Sunrise had the opposite problem.
When the sun sat at 5 degrees above the horizon, flat ground received very low surface illumination. With three toon bands, that low light dropped flat terrain straight to the ambient floor even though the sun was at full intensity. Flat ground at sunrise was darker than full-moon midnight.
We added a grazing lift curve to the terrain shader. A fourth-root adjustment brings low-angle light up into the middle band while leaving shadow edges and midday sun untouched.
// Lift low-angle sunlight before banding so flat ground stays lit at sunrise v = pow(v, 1.0 / (1.0 + 3.0 * _GrazingLift));

