unity shader 之 几何变换--顶点位移




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拼成如图所示,可以调节参数,形成自己喜欢的形状





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值