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
}
}
}
在屏幕最左端时显示为一个颜色
多拷贝几个cube,可以看到灰度变化
2、使用plane,显示颜色变换光带
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
}
}
}
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<Renderer>().material.SetFloat("dis", dis);
GetComponent<Renderer>().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
}
}
}