创建Shader
ShaderLab Text 分析:
//Shader 目录/名称
Shader "Unlit/NewUnlitShader"
{
//Shader 界面变量
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
//shader 材质球 可以多个 对应不同平台
SubShader
{
//标签 渲染模式 次序
Tags { "RenderType"="Opaque" }
//双面 //叠加模式
LOD 100
//一次渲染
Pass
{
//CG 程序块
CGPROGRAM
//定义结构
//定义顶点片段程序(改模型) 自定义函数名 vert
#pragma vertex vert
//定义表面渲染程序段 (改颜色) 自定义 表面函数
#pragma fragment frag
//环境雾程序集
#pragma multi_compile_fog
//CG 函数程序合集
#include "UnityCG.cginc"
//模型源数据
struct appdata
{
float4 vertex : POSITION; //顶点坐标
float2 uv : TEXCOORD0; //UV 坐标
};
//定义顶点片段数据结构
struct v2f
{
float2 uv : TEXCOORD0; //输出修改后的UV
UNITY_FOG_COORDS(1) //输出环境雾
float4 vertex : SV_POSITION; //输出修改后的顶点
};
//变量名定义
// 获取变量
sampler2D _MainTex; //颜色贴图
float4 _MainTex_ST; //贴图重复与偏移
//顶点程序块
v2f vert (appdata v)
{
v2f o; //初始化输出变量
o.vertex = UnityObjectToClipPos(v.vertex); //物体顶点转载切空间
o.uv = TRANSFORM_TEX(v.uv, _MainTex); //默认UV进行重复与偏移修改
UNITY_TRANSFER_FOG(o,o.vertex); //输出环境雾颜色
return o; //输出结果
}
//表面程序块
fixed4 frag (v2f i) : SV_Target
{
//设置输出颜色=获取贴图,依据修改后的UV 坐标
fixed4 col = tex2D(_MainTex, i.uv);
// 给颜色添加雾
UNITY_APPLY_FOG(i.fogCoord, col);
//输出颜色
return col;
}
ENDCG
}
}
//当以上全部失效时,备用材质球
FallBack "Diffuse"
}
新建材质球可以看到刚才创建的shader
图文说明:
如果把写Shader比作陶艺应该是这样: