Shader编程 实现物体达到边界改变颜色
上代码
Shader "Custom/Test02" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
}
SubShader {
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct v2f{
float4 pos:POSITION;
fixed4 color:COLOR;
};
v2f vert(appdata_base v)
{
v2f o;
//获取需要渲染的定点位置
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
//获取物体屏幕位置
float x = o.pos.x/o.pos.w;
//v.vertex自身坐标转化成世界空间坐标系
//float4 oWoldPos = mul(unity_ObjectToWorld,v.vertex);
if(x<=-1)
{
o.color=float4(1,0,0,1);
}
else if(x>=1)
{
o.color=float4(0,0,1,1);
}
else
{
//过度颜色
o.color=float4(x/2+0.5,x/2+0.5,x/2+0.5,1);
}
return o;
}
fixed4 frag(in v2f o):COLOR
{
return o.color;
}
ENDCG
}
}
//FallBack "Diffuse"
}