Shader "RR/Shader1"
{
Properties
{
//属性
_Color("Color Tint",Color) = (1.0,1.0,1.0,1.0)
}
SubShader
{
//设置渲染状态和标签
Pass
{
//开始CG代码
CGPROGRAM
//代码的编译指定
#pragma vertex vert22
#pragma fragment frag22
//与我们属性里定义的color一致
fixed4 _Color;
struct a2v
{
//告诉unity,这个属性就是模型的顶点输入
float4 vertex:POSITION;
//告诉unity,这个属性就是模型的法线输入
float4 normal:NORMAL;
//告诉unity,这个属性就是纹理的输入
float4 texcoor:TEXCOORD0;
};
struct v2f
{
float4 pos:SV_POSITION;
fixed3 color:COLOR;
};
//POSITION,语义 网格输入的顶点数据
v2f vert22(a2v v)
{
v2f o;
o.pos= UnityObjectToClipPos(v.vertex);
v.vertex.xyz += v.normal * 1;
o.color = v.normal*0.5 + fixed3(0.5, 0.5, 0.5);
//return mul(UNITY_MATRIX_MVP,V); unity5.6的写法
return o;
}
fixed4 frag22(v2f i):SV_Target
{
fixed3 c = i.color;
c *= _Color.rgb;
return fixed4(c.color,1.0);
}
//结束CG代码的编译指令
ENDCG
}
//其他Pass
}
FallBack "Diffuse"
}
1.创建一个新的shader输入上面代码
2.创建一个material,选择上面的shader
3.创建一个Cube,把材质换成我们的material,颜色调成白色,即可完成彩虹效果。
效果:
每个面的颜色都不一样