Techniques for troubleshooting shadow rendering in the Universal Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary (URP).
By adjusting the shadow bias values you can reduce or eliminate such shadow artifacts as shadow acne, shadow detachment (also known as peter-panning), light leaking, and self-shadowing.
In URP, you can set the shadow bias in the URP Asset and on individual lights.
In the URP Asset, the shadow bias settings are in the Shadows section. The values you set here are the default values for all lights in the sceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary.
To set the shadow bias values for a specific light:
In the Shadows section of the Light component, ensure that Shadows Type is set to Soft Shadows or Hard Shadows.
Set the Bias property to Custom. Unity shows the properties Depth and Normal. Use those properties to set the shadow bias values for the current light.
Using high shadow bias values might result in light leaking through meshes. This is where there is a visible gap between the shadow and its caster, and leads to shadow shapes that do not accurately represent their casters.
URP has the per-camera limit on the number of visible lights in the cameraA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
See in Glossary frustum. For example, on mobile platforms, this limit is 1 Main Light and 32 Additional Lights.
In the Forward Rendering PathThe technique that a render pipeline uses to render graphics. Choosing a different rendering path affects how lighting and shading are calculated. Some rendering paths are more suited to different platforms and hardware than others. More info
See in Glossary, there is also the per-object light limit.
If the number of visible lights exceeds the limit, Unity disables some lights. It might disable a real-time shadow-casting light, which causes shadow flickering.
To avoid this issue, ensure that the number of visible lights in the camera frustum does not exceed the limit. You can get the number of visible lights using the cullResults.visibleLights
array of the RenderingData.cullResults API.
The following example shows how to use the cullresults.visibleLights
array:
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
int visibleLightCount = renderingData.cullResults.visibleLights.Length;
}
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.