学习自:https://zhuanlan.zhihu.com/p/47880664
Shader "Unlit/NewUnlitShader"//名称路径,可修改 前加Hidden可隐藏路径选项
{
//属性
Properties
{
_Color("Color",Color) = (1,1,1,1)
}
//【shader核心算法实现的地方。可以有多个subshader,但是只能加载一个】
SubShader
{
//【进行一次模型渲染】
Pass
{
CGPROGRAM
#pragma vertex vert//声明顶点着色器
#pragma fragment frag//声明片段着色器
fixed4 _Color;//属性中的变量要再次声明 float half fixed都是浮点数
float4 vert(float4 vertex:POSITION) :SV_POSITION{
return UnityObjectToClipPos(vertex);//将顶点坐标转换到裁剪坐标
}
float4 frag() :SV_TARGET{
return _Color;
}
ENDCG
}
}
}
【注意】
1.标记
POSITION语义是用于顶点着色器,用来指定模型的顶点位置,是在变换前的顶点的本地空间坐标。SV_POSITION语义则用于像素着色器,用来标识经过顶点着色器变换之后的顶点坐标。SV_TARGET是系统值,表示该函数返回的是用于下一个阶段输出的颜色值,也就是我们最终输出到显示器上的值。
2.着色器执行次数
片元着色器与图形像素个数有关,顶点着色器与图形定点数有关。从执行次数上来看,顶点着色器的执行次数一般小于片元着色器,因此比较消耗时间的算法可以在这里面进行。