SubShader | |
{ | |
// 标签项 可选 key = value | |
Tags | |
{ | |
"Queue" = "Transparent" // 渲染顺序 | |
"RenderType" = "Opaque" // 着色器替换功能 | |
"DisableBatching" = "True" // 是否进行合批 | |
"ForceNoShadowCasting" = "True" // 是否投射阴影 | |
"IgnoreProjector" = "True" // 受不受 Projector 的影响,通常用于透明物体 | |
"CanUseSpriteAltas" = "False" // 是否用于图片的 Shader,通常用于 UI | |
"PreviewType" = "Plane" // 用于 Shader 面板预览的类型 | |
} | |
// Render 设置 可选 | |
//Cull off/back/front // 选择渲染那个面 | |
//ZTest Always/Less Greater/LEqual/GEqual/Equal/NotEqual // 深度测试 | |
//Zwrite off/on // 深度写入 | |
//Blend SrcFactor DstFactor // 混合 | |
//LOD 100 // 不同情况下使用不同的 LOD,达到性能提升 | |
// 必须 | |
Pass | |
{ | |
//Name "Default" // Pass 通道名称 | |
// Tags 还可以在每个 Pass 通道里面进行定义,属性重复以外层的为准 | |
Tags | |
{ | |
"LightMode" = "ForwardBase" // 定义该 Pass 通道在 Unity 渲染流水中的角色 | |
//"RequireOptions" = "SoftVegetation" // 满足某些条件时才渲染该 Pass 通道 | |
} | |
// Render 设置 可以在每个 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 | |
} | |
} |