您的位置:首页 > 其它

屏幕坐标设置颜色变化(根据透视x坐标实现一个红色光带)

2016-04-15 09:52 597 查看
Shader "Custom/test1" {

SubShader {
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag

#include "unitycg.cginc"

float4x4 mvp;
float dir;
float r;

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

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

//透视除法
o.pos.x = o.pos.x/o.pos.w;
o.pos.y = o.pos.y/o.pos.w;

//根据x的屏幕坐标设置颜色的变化

float X = o.pos.x;
if(X>dir&&X<dir+r)
o.col = float4(1,0,0,1);
else
o.col = float4(X/2+0.5,X/2+0.5,X/2+0.5,1);
return o;
}

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

}

using UnityEngine;
using System.Collections;

public class setFloat : MonoBehaviour {

private float dir=-1;
private float r=0.1f;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

dir+=Time.deltaTime;
GetComponent<Renderer>().material.SetFloat("dir",dir);
GetComponent<Renderer>().material.SetFloat("r",r);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: