// shader名字
Shader "Unlit/001"
{
// 属性块
Properties
{
// 变量名 (unity面板显示的名字 类型) = 默认值
_MainTex ("_MainTex", 2D) = "white" {} // 2d图片类型
_Int("Int",Int) = 2 // 整数类型
_Float("Float",float) = 1.5 // 浮点类型
_Range("Range",Range(0.0,2.0)) = 1.0 // 范围类型 限制数的范围
_Color("Color",Color) = (0,0,0,0) // 颜色类型
_Vector("Vector",Vector) = (1,2,3,4) // 四维数类型 例如矩阵会用到
_Cube("Cube",Cube) = "white" {} // Cube类型 一般天空盒会用
_3D("3D",3D) = "black" {} // 3D类型
}
// 可以包含多个,unity会根据平台自动选择第一个能运行的subshader
// 如果都不能运行,会调用FallBack
SubShader
{
// 标签 可选 key=value
Tags
{
// 渲染顺序
"Queue"="Transparent"
// 渲染类型 着色器替换功能
"RenderType"="Opaque"
// 是否进行合批
"DisableBathching"="True"
// 是否投射阴影
"ForceNoShadowCasting"="True"
// 是否受Projector影响,通常用于透明物体
"IgnoreProjector"="True"
// 是否用于图片的shader,通常用于UI
"CanUseSpriteAltas"="False"
// 用作shader面板预览的类型
"PreviewType"="Plane"
}
// 渲染设置 可选,也可以写在pass通道里
// Cull off/back/front 裁剪 off正反两面都渲染,back背面切掉渲染前面,front前面切掉渲染背面
// ZTest Always // 深度测试 Always(总是)|Less Greater(小于)|LEqual(小于等于,默认)|GEqual(大于等于)|Equal(等)|NotEqual(不等)
// ZWrite off // 深度写入 off/on
// Blend SrcFactor DstFactor // 混合
// LOD 100 // 不同情况下使用不同的LOD达到性能提升
// 必须
Pass
{
// Name "Default" // pass通道名称 可复用,复用时必须全大写
//可以在每个pass通道里定义,如果外面也有,用外面的
Tags
{
"LightMode"="ForwardBase" // 定义该pass通道在unity渲染流水中的角色
//"RequrireOptions"="SoftVegetation" // 满足某些条件时才渲染该pass通道
}
// CG语言所写的代码,主要是顶点片元着色器
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 = UnityObjectToClipPos(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 Off
}