| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- #ifndef UI_SOFTMASK_INCLUDED
 
- #define UI_SOFTMASK_INCLUDED
 
- sampler2D _SoftMaskTex;
 
- float _Stencil;
 
- float4x4 _GameVP;
 
- float4x4 _GameTVP;
 
- half4 _MaskInteraction;
 
- float CustomStep(float a, float x)
 
- {
 
- 	return x >= a;
 
- }
 
- fixed Approximately(float4x4 a, float4x4 b)
 
- {
 
- 	float4x4 d = a - b;
 
- 	d = float4x4(
 
- 			abs(d[0]),
 
- 			abs(d[1]),
 
- 			abs(d[2]),
 
- 			abs(d[3])
 
- 		);
 
- 		
 
- 	return step(
 
- 		max(d._m00,max(d._m01,max(d._m02,max(d._m03,
 
- 		max(d._m10,max(d._m11,max(d._m12,max(d._m13,
 
- 		max(d._m20,max(d._m21,max(d._m22,max(d._m23,
 
- 		max(d._m30,max(d._m31,max(d._m32,d._m33))))))))))))))),
 
- 		0.5);
 
- }
 
- #if SOFTMASK_EDITOR
 
- float SoftMaskInternal(float4 clipPos, float4 wpos)
 
- #else
 
- float SoftMaskInternal(float4 clipPos)
 
- #endif
 
- {
 
- 	half2 view = clipPos.xy/_ScreenParams.xy;
 
- 	#if SOFTMASK_EDITOR
 
- 		fixed isSceneView = 1 - Approximately(UNITY_MATRIX_VP, _GameVP);
 
- 		float4 cpos = mul(_GameTVP, mul(UNITY_MATRIX_M, wpos));
 
- 		view = lerp(view, cpos.xy / cpos.w * 0.5 + 0.5, isSceneView);
 
- 		#if UNITY_UV_STARTS_AT_TOP
 
- 			view.y = lerp(view.y, 1 - view.y, CustomStep(0, _ProjectionParams.x));
 
- 		#endif
 
- 	#elif UNITY_UV_STARTS_AT_TOP
 
- 		view.y = lerp(view.y, 1 - view.y, CustomStep(0, _ProjectionParams.x));
 
- 	#endif
 
- 	fixed4 mask = tex2D(_SoftMaskTex, view);
 
- 	half4 alpha = saturate(lerp(fixed4(1, 1, 1, 1), lerp(mask, 1 - mask, _MaskInteraction - 1), _MaskInteraction));
 
- 	#if SOFTMASK_EDITOR
 
- 	alpha *= CustomStep(0, view.x) * CustomStep(view.x, 1) * CustomStep(0, view.y) * CustomStep(view.y, 1);
 
- 	#endif
 
- 	return alpha.x * alpha.y * alpha.z * alpha.w;
 
- }
 
- #if SOFTMASK_EDITOR
 
- 	#define SOFTMASK_EDITOR_ONLY(x) x
 
- 	#define SoftMask(clipPos, worldPosition) SoftMaskInternal(clipPos, worldPosition)
 
- #else
 
- 	#define SOFTMASK_EDITOR_ONLY(x)
 
- 	#define SoftMask(clipPos, worldPosition) SoftMaskInternal(clipPos)
 
- #endif
 
- #endif // UI_SOFTMASK_INCLUDED
 
 
  |