TL;DR: Unity graphics team, please document the shader part of the new URP. Shader graph is great, but manual shader programming is still a thing, especially for complex shaders, especially on old mobile platforms (where each shader instruction counts, and we all know that the majority of mobile players have a really outdated hardware). ---------------------------- I've read what seems to be every documentation page / blog post about URP available and have found no info on how to write your own custom shaders for the new render-pipeline. Is there a huge tutorial I'm somehow missing? Yeah, there are some comments in the shaders shipped with the URP package itself, but a lot of things are still very unclear. For example, what are the LightMode's of the passes I need to define and what are they used for? I see "Universal2D", "NormalsRendering" and "UniversalForward" in the "Universal Render Pipeline/2D/Sprite-Lit-Default" shader. But it's unclear what exactly these passes do and why are they there. Why do I need Universal2D pass if I already have UniversalForward? How are they different? Why is NormalsRendering there? Is it a separate pass to generate normals for deferred path? If so, where are all the other passes? If not, why would I calculate normals in a separate extra pass, not in a main one? I thought comparing one built-in URP shader to another would clarify this but it actually brought even more questions. If I compare this shader with "Universal Render Pipeline/Lit": What's the DepthOnly pass used for? Why doesn't it have the same NormalsRendering pass the other shader has? Why does neither of them has any pass related to albedo/metallic/roughness rendering for deferred path? Where can I find a full list of lightmodes catched up by URP by default? Which of the classic Unity's built-in variables/macros are available in URP shaders and which aren't? The only thing Google finds on the subject are some links to the same shaders on the github and a few chinese websites. That's it.