如果你想自己处理照明,可以写vertex+fragment Shader, 这是Unity中对可编程Shader的一种支持。
Shader "Custom/Shader_VF" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "Queue"="Geometry" "RenderType"="Opaque" "IgnoreProjector"="True" }
Pass {
CGPROGRAM
#pragma vertex vert //声明顶点着色函数
#pragma fragment frag //声明片断着色函数
#include "UnityCG.cginc" //包括外部文件
sampler2D _MainTex;
struct v2f{ //定义一个结构
float4 pos:SV_POSITION;
float2 uv:TEXCOORD0;
};
v2f vert(appdata_full v) //vertex Shader
{
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);//将三维坐标投影到二维窗口中
o.uv = v.texcoord.xy;
return o;
}
float4 frag(v2f i):COLOR //fragment Shader
{
float4 c = tex2D(_MainTex, float2(i.uv));
return c;
}
ENDCG
}
}
FallBack "Diffuse"
}
运行效果