#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)