在Unity的Surface Shader中,自定义光照模型需要按一定格式命名和设置光照模型函数。
一、准备
首先我们来分别新建一个表面着色器和材质,都命名为BasicDiffuse,把着色器赋给材质。
精简shader代码如下,只留一个主贴图功能:
Shader "Custom/BasicDiffuse" {
Properties {
_MainTex("Albedo (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Standard
#pragma target 3.0
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
现在shader代码中与光照模型相关的只有两处地方:
1、指定光照模型Standard
#pragma surface surf Standard