这章是在上章Minimal Shader的基础上建立起来的,本章是创建一个颜色按照位置变化显示色谱的立方体,效果如下图。
创建方法:1、按照上节的步骤建立一个最小Shader,将Shader命名为Shader1.2,Material命名为Material1.2
2、双击打开shader1.2脚本文件,更改内容如下:
Shader "Cg shader for RGB cube" {
//通过位置信息变化更改颜色变化
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//创建一个vertex输出的结构体,结构体记录位置信息和颜色信息
struct vertexOutput {
float4 pos : SV_POSITION;
float4 col : TEXCOORD0;
};
//实现Vertex和Fragment Shader之间的通信
vertexOutput vert(float4 vertexPos : POSITION)
{
vertexOutput output;
output.pos = mul (UNITY_MATRIX_MVP, vertexPos);
output.col = vertexPos + float4(0.5,0.5,0.5,0.0); //颜色属性的值=位置属性的值,实现颜色随位置变化渐变效果。
//unity中vertex position属性的取值范围是-0.5~+0.5,而color属性取值范围是0.0~1.0,若想正常输出需将 坐标x,y,z各增加0.5
//就如vertexPos + float4(0.5,0.5,0.5,0.0)这种形式
return output;
}
//将vertex的输出值作为frag的输入参数,返回颜色信息
float4 frag(vertexOutput input) : COLOR
{
return input.col;
}
ENDCG
}
}
}
保存shader1.2
3、选择GameObject > Create Other > Cube创建一个游戏对象——立方体,然后将建立好的Material1.2拖放至立方体上,大家就可以看到一个渐变的立方体了。