模型顶点的变换,将一个平面的中心点处向外进行隆起。 1、shader
Shader "xxx/ddd"{ SubShader { pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "unitycg.cginc" float R; float H; struct xx { float4 pos:POSITION; float4 color:COLOR; }; xx vert(appdata_base data) { float d = R - length(data.vertex.xz); if(d<0) { d = 0; } float4 pos = float4(data.vertex.x, H*d, data.vertex.z,data.vertex.w); xx x; x.pos = mul(UNITY_MATRIX_MVP,pos); x.color = float4(1,0,0,1); return x; } float4 frag(xx x):COLOR { return x.color; } ENDCG } }}2、C#代码,控制隆起的高度和半径
public class SetColorValue : MonoBehaviour { [Range(0,5)] public float R; [Range(0, 5)] public float H; public void Update() { this.GetComponent<Renderer>().material.SetFloat("R", R); this.GetComponent<Renderer>().material.SetFloat("H", H); }}3、新建一个plane,使用此shader和C#脚本,运行程序得到:
新闻热点
疑难解答