示例代码如下:
Shader "Unlit/vf4" { //MVP 几何变换扭曲 SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" //方式一 //输出结构体 struct v2f{ float4 pos:POSITION; fixed4 color:COLOR; }; //vert 中in输入接收到物体传过来的 objPos物体坐标位置 // out将颜色信息 输出到frag中 进行颜色的下一步处理 //vert中可以有多个out输出 但语义不能重复 out float4 pos:POSITION,out float4 col:COLOR0 v2f vert(appdata_base v) { //螺旋丸效果 // float angle2 = length(v.vertex) * _SinTime.w; // float4x4 m={ // float4(cos(angle2),0,sin(angle2),0), // float4(0,1,0,0), // float4(-sin(angle2),0,cos(angle2),0), // float4(0,0,0,1) // }; // v.vertex = mul(m,v.vertex); // float x = cos(angle2) * v.vertex.x - sin(angle2) * v.vertex.z; // float z = cos(angle2) * v.vertex.z + sin(angle2) * v.vertex.x; // v.vertex.x = x; // v.vertex.z = z; //波浪效果 float angle2 = v.vertex.z * _Time.y; float x = (cos(angle2) /16 +0.5) * v.vertex.x; v.vertex.x = x; v2f o; //从自身顶点转换到世界坐标顶点 o.pos = UnityObjectToClipPos(v.vertex); o.color = fixed4(0,1,1,1); return o; } //frag 里in输入 接收vert里传过来的数据 // out输出到游戏物体上 看到最终效果 inout float4 col:COLOR fixed4 frag (v2f info):COLOR //方法函数后跟 :语义 (意思就是给函数返回值定义一个语义) { return info.color; } ENDCG } } }效果图:
