1.一样的,新建一个矩形mesh
Shader中使用一个向量并对其中的每个元素应用余弦函数,你可以将向量作为属性传递给Shader,并在Shader内部使用向量操作来计算余弦值
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.color = v.color;
// 应用余弦函数
float3 cosine = cos(_Vector.xyz);
o.color.rgb = cosine;
return o;
}
上面相当于 float3 cosine(cos(_Vector.x),cos(_Vector.y),cos(_Vector.z));
相当于
float3 cos(float3 vec)
{
float x = math::cos(vec.x);
float y = math::cos(vec.y);
float z = math::cos(vec.z);
return float3(x,y,z);
}
2.新建shader和材质
Shader "Custom/quadCol2"
{
Properties
{
_Color("Main Color",Color) = (1,1,1,1)
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
float4 _Color;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed3 col = 0.5 + 0.5 * cos(_Time + i.uv.xyx + fixed3(0,2,4));
return fixed4(col,1);
}
ENDCG
}
}
}
效果如下: