本文共 978 字,大约阅读时间需要 3 分钟。
这章是在上章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拖放至立方体上,大家就可以看到一个渐变的立方体了。