这是用两个shader来实现,球的shader跟两个胶囊体

代码如下:
胶囊体(先渲染Geometry+1):

Shader "SoulCoder/Mask" {
SubShader {
Tags { "RenderType"="Opaque" "Queue"="Geometry+1"}
ColorMask 0
ZWrite off
Stencil {
Ref 1
Comp always
Pass replace
}

CGINCLUDE
struct appdata {
float4 vertex : POSITION;
};
struct v2f {
float4 pos : SV_POSITION;
};
v2f vert(appdata v) {
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
return o;
}
half4 frag(v2f i) : SV_Target {
return half4(1,1,0,1);
}
ENDCG

Pass {
Cull Front
ZTest Less

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
ENDCG
}
Pass {
Cull Back
ZTest Greater

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
ENDCG
}
}
}

--------------------- 

原文地址:https://www.cnblogs.com/hyhy904/p/11304663.html