1.Shader1.0的Alpha测试
Shader "Hidden/AlphaTestShader1.0"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_AlphaTest("Alpha值",float) = 0
}
SubShader
{
AlphaTest Greater [_AlphaTest]
Pass
{
SetTexture[_MainTex]
{
combine texture
}
}
}
}
2.Shader2.0
2.1 轮廓自发光
两个Pass,一个渲染原本的贴图,一个渲染颜色,将顶点的xy方向扩大。
Shader "Custom/OutLine2.0"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_TestColor("轮廓自发光颜色",Color)=(1,1,1,1)
_Width("轮廓宽度",Float)=1.1
}
SubShader
{
// No culling or depth
//Cull Off ZWrite Off ZTest Always//后期屏蔽的
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
float _Width;/*****************************/
v2f vert (appdata v)
{
v2f o;
v.vertex.xy *= _Width;/*********************/
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
sampler2D _MainTex;
Vector _TestColor;/************************/
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv);
// just invert the colors
//col.rgb = 1 - col.rgb;
return fixed4(_TestColor);/*********************/
//return col;
}
ENDCG
}
Pass
{
ZTest Always
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
sampler2D _MainTex;
fixed4 frag(v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv);
// just invert the colors
//col.rgb = 1 - col.rgb;//后期屏蔽的
return col;
}
ENDCG
}
}
}
2.2 Alpha测试
Shader "Hidden/AlphaTestShader2.0"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_AlphaValue("Alpha值",float)=0
}
SubShader
{
// No culling or depth
//Cull Off ZWrite Off ZTest Always
Blend SrcAlpha OneMinusSrcAlpha//打开Alpha通道
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
sampler2D _MainTex;
float _AlphaValue;
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv);
if (col.a < _AlphaValue)
{
return fixed4(0, 0, 0, 0);
}
else
{
return col;
}
}
ENDCG
}
}
}
3.Shader2.0 的UV动画
3.1 UV滚动(流动)
Shader "Custom/River"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_SpeedY("Y向流动速度",Range(0,10))=1.0
_SpeedX("X向流动速度",Range(0,20)) = 0
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
sampler2D _MainTex;
float _SpeedY;/*增***********************/
float _SpeedX;/*增***********************/
fixed4 frag (v2f i) : SV_Target
{
float2 tempUV = i.uv;/*增***********************/
tempUV.x += _Time.x*_SpeedX;/*增***********************/
tempUV.y += _Time.y*_SpeedY;/*增***********************/
fixed4 col = tex2D(_MainTex, tempUV);/*改***********************/
return col;
}
ENDCG
}
}
}
3.2 UV波动(wave)
Shader "Custom/Wave"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_Arange("波动幅度",float) = 1
_Frenquncy("波动频率",float)=0.5
_Speed("波动速度", float) = 0.5
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment fr