本篇研究 暴走武侠 效果。直接贴代码
Shader "Cg shader with single texture" {
Properties {
_MainTex ("Texture Image", 2D) = "white" {}
_MainTex1 ("Texture Image", 2D) = "white" {}}
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment fraguniform sampler2D _MainTex;
uniform sampler2D _MainTex1;struct vertexInput {
fixed4 vertex : POSITION;//根据最近对移动平台的性能研究 ,建议一般用fix类型
fixed4 texcoord : TEXCOORD0;
fixed4 texcoord1 : TEXCOORD1;
fixed4 clor : COLOR;
};
struct vertexOutput {
fixed4 pos : SV_POSITION;
fixed4 tex : TEXCOORD0;
fixed4 tex1 : TEXCOORD1;
fixed4 cor :COLOR;
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;output.tex =mul(UNITY_MATRIX_TEXTURE0,input.texcoord).xyzw;
output.tex1 =input.texcoord1;
output.cor = input.clor;
output.pos = mul(UNITY_MATRIX_MVP, input.vertex);
return output;
}
fixed4 frag(vertexOutput input) : COLOR
{
fixed4 color1 = input.cor;
{
fixed4 texture1 = tex2D(_MainTex, fixed2(input.tex));
fixed4 prea = input.cor;
color1 = texture1.rgba;
}
{
fixed4 texture2 = tex2D(_MainTex1, fixed2(input.tex1));
fixed4 prea = color1;
color1.rgb = (texture2.rgb +prea.rgb);
color1.a = texture2.a;
}if(color1.a<=0.01)//采用这种方式实现透明效果
{
discard;
}
return color1;
}
ENDCG
}
}
}
扣得暴走武侠的图:
效果图:
需要在C#中添加如下代码 控制刀光的频率:
void Update ()
{
t+=Time.deltaTime;
renderer.material.SetTextureOffset("_MainTex",new Vector2(1-t,0));
if(t>=1)
{
t = 0;
}
}