Пользовательский шейдер в URP не обновляется

#c# #unity3d #shader

#c# #unity3d #шейдер

Вопрос:

Я использовал пользовательский шейдер в версии Unity 2018, где был LWRP, и теперь я обновился до последней версии Unity с URP, и я больше не могу использовать этот шейдер. Все это розовое. Я даже пытался перейти к настройкам и обновленным материалам проекта, но он выдает ошибку There's no upgrader to convert Custom/OnTop shader to selected pipeline . Как я могу повторно использовать этот шейдер в URP?

 Shader "Custom/OnTop" {
Properties {
    _Color ("Color", Color) = (1,1,1,1)
    _MainTex ("Albedo (RGB)", 2D) = "white" {}
    _Glossiness ("Smoothness", Range(0,1)) = 0.5
    _Metallic ("Metallic", Range(0,1)) = 0.0
    [NoScaleOffset] _EmissionMap ("Emission", 2D) = "black" {}
        //_Emission ("Emission", Color) = (0, 0, 0)
        [HDR] _EmissionColor ("Emission Color", Color) = (0,0,0)
}
SubShader {
           Tags {"Queue" = "Transparent" "RenderType"="Transparent" }
 
    Blend SrcAlpha OneMinusSrcAlpha
    LOD 200
    ZWrite Off 
    CGPROGRAM

    #pragma surface surf Standard fullforwardshadows alpha:fade

    #pragma target 3.0

    sampler2D _MainTex;

    struct Input {
        float2 uv_MainTex;
    };

    half _Glossiness;
    half _Metallic;
    fixed4 _Color;
    sampler2D _EmissionMap;
    fixed4 _EmissionColor;

    UNITY_INSTANCING_BUFFER_START(Props)
        // put more per-instance properties here
    UNITY_INSTANCING_BUFFER_END(Props)

    void surf (Input IN, inout SurfaceOutputStandard o) {
        // Albedo comes from a texture tinted by color
        fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
        o.Albedo = c.rgb;
        // Metallic and smoothness come from slider variables
        o.Metallic = _Metallic;
        o.Smoothness = _Glossiness;
        o.Alpha = c.a;
         o.Emission = tex2D(_EmissionMap, IN.uv_MainTex) * _EmissionColor;
                
                 c.rgb  = o.Emission.rgb;
    }
    ENDCG
}
FallBack "Diffuse"
}
  

Ответ №1:

Попробуйте изменить

 [NoScaleOffset] _EmissionMap ("Emission", 2D) = "black" {}
//_Emission ("Emission", Color) = (0, 0, 0)
[HDR] _EmissionColor ("Emission Color", Color) = (0,0,0)
  

Для

 _EmissionMap ("Emission", 2D) = "black" {}
//_Emission ("Emission", Color) = (0, 0, 0)
_EmissionColor ("Emission Color", Color) = (0,0,0)