主要介绍函数_Object2World,在shader中将立方体的顶点,变换到世界坐标。
Shader "xxx/ddd"
{
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);
float4 wpos = mul(_Object2World,v.vertex); //转换为世界坐标
if(wpos.x>0) //x>0红色
{
o.color = fixed4(1,0,0,1);
}
else //否则为绿色
{
o.color = fixed4(0,1,0,1);
}
return o;
}
fixed4 frag(v2f indata):COLOR
{
return indata.color;
}
ENDCG
}
}
}
运行程序,移动cube位置,可以看到颜色发生变化。