Due to the wide variety of use cases, target platforms, renderers, and features used in projects, certain URP configurations can result in a large number of shaderA program that runs on the GPU. More info
See in Glossary variants. That can lead to long compilation times.
Long shader compilation time affects both player build time and the time for a 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 render in the Editor.
The per-camera visible light limit value affects the compilation time for each Lit and Complex Lit shader variant. 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, on desktop platforms, that limit is 256.
This section describes how to reduce the shader compilation time by changing the default maximum per-camera visible light count.
Note: This instruction describes a workaround for a limitation in the URP design. This limitation will be mitigated in one of the future Unity versions.
The Universal Render Pipeline Config package contains the settings that define the number of maximum visible light. The following instructions describe how to change those settings.
Note: If you upgrade the Unity version of your project, repeat this procedure.
In your project folder, copy the URP Config Package folder from /Library/PackageCache/com.unity.render-pipelines.universal-config
to /Packages/com.unity.render-pipelines.universal-config
.
Open the file /com.unity.render-pipelines.universal-config/Runtime/ShaderConfig.cs.hlsl
.
The file contains multiple definitions that start with MAX_VISIBLE_LIGHT_COUNT
and end with the target platform name. Change the value in brackets to a suitable maximum in-frustum per-camera light count for your project, for example, MAX_VISIBLE_LIGHT_COUNT_DESKTOP (32)
.
For the Forward+ Rendering Path, the value includes the Main Light. For the Forward Rendering Path, the value does not include the Main Light.
Open the file /com.unity.render-pipelines.universal-config/Runtime/ShaderConfig.cs
.
The file contains multiple definitions that start with k_MaxVisibleLightCount
and end with the platform name. Change the value so that it matches the value set in the ShaderConfig.cs.hlsl
file, for example k_MaxVisibleLightCountDesktop = 32;
.
Save the edited files and restart the Unity Editor. Unity automatically configures your project and shaders to use the new configuration.
Now the Player build time should be shorter due to the reduced compilation time for each shader variant.
Note: After you copy the package source code into the Packages
folder, this package code becomes embedded in your project and is no longer part of a Unity install. If you upgrade the Unity version later, Unity doesn’t update the embedded packageAn embedded package is a mutable package that you store under the Packages
directory at the root of a Unity project. This differs from most packages which you download from a package server and are immutable. More info
See in Glossary source automatically. You need to apply the changes to the source code manually. For more information about embedded packages, refer to Embedded dependencies.
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.