Shader "Custom/PointTransform"
{
Properties
{
_R("R", range(0.5, 10)) = 1
_OX("OX", range(-5, 5)) = 0
_OY("OY", range(-5, 5)) = 0
_height("height",range(0, 1)) = 2
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unityCG.cginc"
float _R;
float _OX;
float _OY;
float _height;
struct v2f
{
float4 pos : POSITION;
float4 color : COLOR0;
};
v2f vert(appdata_base v)
{
float4 wPos = mul(_Object2World, v.vertex);
float2 xy = wPos.xz;
float d = _R - length(xy - float2(_OX, _OY));
d = d < 0 ? 0 : d;
float4 upPos = float4(v.vertex.x, _height * d, v.vertex.z, v.vertex.w);
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, upPos);
o.color = fixed4(upPos.y, upPos.y, upPos.y, 1);
return o;
}
fixed4 frag(v2f IN) : COLOR
{
return IN.color;
}
ENDCG
}
}
FallBack "Diffuse"
}
用四个plane拼成如图所示,可以调节参数,形成自己喜欢的形状