//shaderlab的书写建议使用: VS2015 + ShaderlabVS-0.6这个插件,这个插件要装在VS2015才有效,能高亮+代码提示,能提示一些,不是很智能,目前还不知道有没有更好的工具。
SubShader
{
pass
{
CGPROGRAM
#pragma vertex vert#pragma fragment frag
#include "UnityCG.cginc"
//结构体后一定要加 ; 号
struct v2f
{
float4 pos:POSITION;
float4 uv:TEXCOORD;
float4 col:COLOR;
};
//appdata_base 这个结构体定义在UnityCG.cginc中,UnityCG.cginc路径在\Unity5.0\Editor\Data\CGIncludes
v2f vert(appdata_base v)
{
v2f o;
//相乘函数 因为本身顶点是本地坐标系,需要和本地到投影坐标系相乘,得到顶点投影坐标系。就是在相机中的位置。
o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
o.uv=v.texcoord;
//因为normal值是-1到1 Color值是0-1 这样计算下来就能把normal值的XYZ转化成颜色值的XYZ。
o.col.xyz=v.normal*0.5+0.5;
//因为颜色是四维向量,W值是透明度,需要手动写。1是不透明。
o.col.w=1;
return o;
}
//函数后加:COLOR是为了指明hal4的语义,因为系统不知道half4是具体是什么。具体可以参见HLSL的变量类型。
half4 frag(v2f i):COLOR
{
half4 c =i.col;
return c;
}
ENDCG
}
}
}