1、顶点颜色变换

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Custom/s_nine" {
 SubShader{
 pass {
 CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"

 float4x4 mvp;
 float4x4 rm;
 float4x4 sm;

 struct v2f {
 float4 pos:POSITION;
 fixed4 color : COLOR;
 };

 v2f vert(appdata_base v) {
 v2f o;
 float4x4 m = mul(sm, UNITY_MATRIX_MVP);
 o.pos = mul(m,v.vertex);
 if (float(v.vertex.x) > 0)
 o.color = fixed4(1, 0, 0, 1);//显示为红色
 else
 o.color = fixed4(0,0,1,1);//显示为蓝色

 return o;
 }

 fixed4 frag(v2f IN) :COLOR{
 return IN.color;
 }
 ENDCG
 }
 }
}

运行结果:中间颜色自动渐变 https://img-blog.csdn.net/20180105054820397 2、改变某个顶点的颜色值

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Custom/s_nine" {
 SubShader{
 pass {
 CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"

 float4x4 mvp;
 float4x4 rm;
 float4x4 sm;

 struct v2f {
 float4 pos:POSITION;
 fixed4 color : COLOR;
 };

 v2f vert(appdata_base v) {
 v2f o;
 float4x4 m = mul(sm, UNITY_MATRIX_MVP);
 o.pos = mul(m,v.vertex);
 if (float(v.vertex.x) == 0.5&&v.vertex.y==0.5&&v.vertex.z==0.5)

 o.color = fixed4(1, 0, 0, 1);//显示为红色
 else
 o.color = fixed4(0,0,1,1);//显示为蓝色

 return o;
 }

 fixed4 frag(v2f IN) :COLOR{
 return IN.color;
 }
 ENDCG
 }
 }
}

https://img-blog.csdn.net/20180105055426226 3、 在不同的位置,颜色不一样 https://img-blog.csdn.net/20180105055828257

https://img-blog.csdn.net/20180105055911575 4、加上时间因子后,颜色的变化

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Custom/s_nine" {
 SubShader{
 pass {
 CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"

 float4x4 mvp;
 float4x4 rm;
 float4x4 sm;

 struct v2f {
 float4 pos:POSITION;
 fixed4 color : COLOR;
 };

 v2f vert(appdata_base v) {
 v2f o;
 float4x4 m = mul(sm, UNITY_MATRIX_MVP);
 o.pos = mul(m,v.vertex);

 if (float(v.vertex.x) == 0.5&&v.vertex.y == 0.5&&v.vertex.z == 0.5)
 o.color = fixed4(_SinTime.w/2+0.5,_CosTime.w/2+0.5,_SinTime.y/2 + 0.5,1);//显示为红色
 else
 o.color = fixed4(0, 0, 1, 1);//显示为蓝色

 return o;
 }

 fixed4 frag(v2f IN) :COLOR{
 return IN.color;
 }
 ENDCG
 }
 }
}

https://img-blog.csdn.net/20180105061629733

https://img-blog.csdn.net/20180105061057729

https://img-blog.csdn.net/20180105061135401

https://img-blog.csdn.net/20180105061209438

https://img-blog.csdn.net/20180105061353504

https://img-blog.csdn.net/20180105061246776

https://img-blog.csdn.net/20180105061319732

https://img-blog.csdn.net/20180105061431124

https://img-blog.csdn.net/20180105061521858 1、在最左边是一个颜色值,在最右边又是另一个颜色值

Shader "Custom/s_ten" {
 SubShader{
 pass {
 CGPROGRAM
 #pragma vertex vert
 #pragma fragment frag
 #include "unitycg.cginc"

 float4x4 mvp;
 float4x4 rm;
 float4x4 sm;

 struct v2f {
 float4 pos:POSITION;
 fixed4 color : COLOR;
 };

 v2f vert(appdata_base v) {
 v2f o;
 o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
//x的坐标值
 float x = o.pos.x / o.pos.w;

 if (x < -1)//在屏幕最左边
 o.color = fixed4(1, 0, 0, 1);//显示为红色
 else if (x >= 1)//在屏幕最右边
 o.color = fixed4(0, 0, 1, 1);//显示为蓝色
 else
 o.color = fixed4(x/2+0.5,x/2+0.5,x/2+0.5,1);

 return o;
 }

 fixed4 frag(v2f IN) :COLOR{
 return IN.color;
 }
 ENDCG
 }
 }

}

在屏幕最左端时显示为一个颜色 https://img-blog.csdn.net/20180105160356637

https://img-blog.csdn.net/20180105160434212

https://img-blog.csdn.net/20180105160503784

https://img-blog.csdn.net/20180105160541661

https://img-blog.csdn.net/20180105160724970 多拷贝几个cube,可以看到灰度变化 https://img-blog.csdn.net/20180105161047644 2、使用plane,显示颜色变换光带 https://img-blog.csdn.net/20180105161945825

https://img-blog.csdn.net/20180105164602740 3、灰度在某个区间之内显示一条光带,在区间之外显示灰度

Shader "Custom/s_ten" {
 SubShader{
 pass {
 CGPROGRAM
 #pragma vertex vert
 #pragma fragment frag
 #include "unitycg.cginc"

 float4x4 mvp;
 float4x4 rm;
 float4x4 sm;

 struct v2f {
 float4 pos:POSITION;
 fixed4 color : COLOR;
 };

 v2f vert(appdata_base v) {
 v2f o;
 o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
//x的坐标值
 float x = o.pos.x / o.pos.w;

 if (x >0 && x<0.1)//在屏幕最左边
 o.color = fixed4(1, 0, 0, 1);//显示为红色
 else
 o.color = fixed4(x/2+0.5,x/2+0.5,x/2+0.5,1);//灰度

 return o;
 }

 fixed4 frag(v2f IN) :COLOR{
 return IN.color;
 }
 ENDCG
 }
 }

}

https://img-blog.csdn.net/20180105164920964 4、随时间推移而变换的光带

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SetFloat : MonoBehaviour {

 private float dis =-1;
 private float r = 0.1f;

// Use this for initialization
 void Start () {

 }

// Update is called once per frame
 void Update () {
 dis += Time.deltaTime*0.1f;
 GetComponent().material.SetFloat("dis", dis);
 GetComponent().material.SetFloat("r", r);
 }
}
Shader "Custom/s_ten" {
 SubShader{
 pass {
 CGPROGRAM
 #pragma vertex vert
 #pragma fragment frag
 #include "unitycg.cginc"

 float dis;
 float r;

 struct v2f {
 float4 pos:POSITION;
 fixed4 color : COLOR;
 };

 v2f vert(appdata_base v) {
 v2f o;
 o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
//x的坐标值
 float x = o.pos.x / o.pos.w;

 if (x >dis && x<dis+r)//在屏幕最左边
 o.color = fixed4(1, 0, 0, 1);//显示为红色
 else
 o.color = fixed4(x/2+0.5,x/2+0.5,x/2+0.5,1);//灰度

 return o;
 }

 fixed4 frag(v2f IN) :COLOR{
 return IN.color;
 }
 ENDCG
 }
 }

}

https://img-blog.csdn.net/20180105165528458

https://img-blog.csdn.net/20180105165536404

https://img-blog.csdn.net/20180105165544038