Nothing has necessarily changed about the shaders themselves (Unity has switched focus from CG to HLSL, although the syntax and functionality is basically identical), but shaders made for the built-in pipeline are automatically disabled by the newer render pipelines. This is because the internal lighting process is completely different, and as such shaders themselves need to handle lighting differently. The main thing to note is that whilst the built-in pipeline uses separate shader passes for every light that touches an object, the URP does all lighting and shading in a single pass using arrays. As such, different variables are used to hold light data, so if the old shaders were supported they wouldn’t receive any lighting. On top of that, because most of the shading libraries have been rewritten, a lot of conventions (particularly in regards to naming) Unity used to use have changed.
It’s definitely possible to write custom shaders for the URP, but it takes a lot of patience and will to learn how the new systems work as there isn’t any documentation so far. I would suggest de-abstracting the main Lit shader by going through its include files, mainly “Lighting.hlsl” and “LitForwardPass.hlsl”. If you just want a basic shader to compile and not worry about lighting, you can add the subshader tag;
You need these because SRPs render objects on a per-pass basis, and as such they only support passes that have specific tags. As far as geometry shaders and shader graph go, I doubt that Unity will ever support them considering surface shaders still don’t.
@niuage Hey! Did you manage to convert this shader? Can you share? I also ran into problems yesterday while trying to convert this shader.,@niuage Hey! Did you manage to convert this shader? Can you share it? I also ran into problems yesterday while trying to convert this shader to urp.