关于Unity实现三维物体裁剪功能
将下面的Shader代码粘到工程中
1 Shader "Mocha/Clip" 2 { 3 Properties{ 4 _Color("Color",Color)=(1,1,1,1) 5 _P("p",Range(-0.5,0.51))=0 6 } 7 SubShader{ 8 Pass{ 9 Cull OFF 10 CGPROGRAM 11 #pragma vertex vert 12 #pragma fragment frag 13 #include "UnityCG.cginc" 14 15 float4 _Color; 16 float _P; 17 18 struct a2v{ 19 float4 vertex:POSITION; 20 float4 texcoord:TEXCOORD0; 21 }; 22 struct v2f{ 23 float4 pos:POSITION; 24 float4 uv:TEXCOORD0; 25 }; 26 27 v2f vert(a2v v){ 28 v2f o; 29 o.uv = v.vertex; 30 // o.pos=UnityObjectToClipPos(v.vertex); //Unity5.6之前版本用 31 o.pos=mul(UNITY_MATRIX_MVP, v.vertex); //Unity5.6之后版本用 32 return o; 33 } 34 35 fixed4 frag(v2f i):COLOR{ 36 if(i.uv.y<_P){ 37 discard; 38 } 39 return _Color; 40 } 41 42 ENDCG 43 } 44 } 45 }
新建材质并选择如下参数:
通过控制下图中的“P”值进行剪裁控制,可根据需要调整“P”值大小
但行好事,莫问前程!