转自:http://blog.csdn.net/ykmzy/article/details/51366396
mask组件通过对StencilMaterial.Add方法得查看我们知道该方法在对目标材质得_StencilOp,_StencilComp等等属性进行操作,这样操作后才可以实现它得模板裁剪。我们自定义的Shader一般没有这几个属性,所以我们在自己的shader中添加如下代码便可以实现自定义材质得正确Mask了
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
............................................................................
Stencil {
Ref [_Stencil]
Comp [_StencilComp]
Pass [_StencilOp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
}
然后在shader面板调一调_StencilComp属性就可以实现遮罩了
本文详细解析了Unity中Mask组件的实现原理,通过StencilMaterial.Add方法对目标材质的_StencilOp,_StencilComp等属性进行操作,从而实现模板裁剪效果。文章提供了自定义Shader实现正确Mask的方法,只需在Shader中添加特定代码并调整_StencilComp属性即可。

1364

被折叠的 条评论
为什么被折叠?



