Shader "Unlit/Shader_1" //shader 路径
{
Properties //在这里写的东西都会呈现在Unity检视面板中,可在外部调节 格式:_Name("显示名称",Type) = defaultValue
{
_MainTex ("Texture", 2D) = "white" {}
}
//一个Shader中可以有多个SubShader ,但是unity会选择第一个可以在相应显卡执行的SubShader来执行,其后面的就会跳过
//渲染状态设置 CullBack 背部剔除 当背部面向摄像机的时候就不会显示
//Cull Front 前面剔除 当正面面向摄像机的时候就不会显示
//Cull Off 剔除关闭 关闭剔除功能
//Ztest Less Greater/LEqual/GEqual/Equal/Always 根据像素在Z轴上的位置来进行处理
//Zwrite On/Off 摄像机近处物体遮挡远处物体
SubShader
{
//设置标签
//Queue 渲染顺序指定
//RenderType 着色器分类
//DisableBatching 批处理开关
//ForceNoShadowCasting 阴影投射
//IgnoreProjector 用于半透明物体不受投射
//CanUseSpriteAtlas 用于2D精灵
//PreviewType Untiy预览用模型
Tags { "RenderType"="Opaque" }
LOD 100
//SubShader中可能有多个Pass,但每个Pass会依次被执行
//也可以调用其他Shader中的Pass 用法:UsePass"MyShader/MYPASS" 调用的pass名必须大写
//Pass中的Tags LightMode 指定Unity中的渲染途径
// RequireOptions 渲染这个Pass需要的条件,如果条件不够则不被渲染
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
v2f vert (appdata v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
// apply fog
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
//FallBack是本shader 中的内容不被支持时,选用那种低级的Shader替换 FallBack“ShaderName”
}
https://onevcat.com/2013/07/shader-tutorial-1/