使用对UI 文件添加Shader时,要在添加的数据前加一个[PerRendererData],这个的主要作用是比如有两个物体同时使用这个Shader,添加这个之后可以分别在每个物体上自己修改面板中的参数,而不是改一个shader,其他都跟着改,这样做的好处就是极大地降低性能消耗(如使用图2这个东西时)。 图1 图2 图3 2. UI组件中的调色 ...
使用Unity 默认的Mask在某些情况下会出现锯齿,还有一种方案就是使用Shader,使用Shader能够很好的解决锯齿问题,但是会增加一些计算量,在对性能不是很严苛要求的情况下,不失为一种好的解决方案。效果图如下: Shader代码如下: Shader "UI/HexIcon" { Properties...
2.mask图可分为24个区域,非编号区域为黑色 3.设置区域值 1<<区域1| 1 <<区域2 这种形式点亮需要的区域,这样就点亮区域1,区域2 Shader "UI/MaskAreaAlpha" { Properties { _MainTex("Texture", 2D) = "white" {} _Mask("遮罩", 2D) = "white" {} _Area("区域",Int) = 0 _Color("Tint", C...
Shader"UI/MaskAreaAlpha"{Properties{_MainTex("Texture",2D)="white"{}_Mask("遮罩",2D)="white"{}_Area("区域",Int)=0_Color("Tint",Color)=(1,1,1,1)_StencilComp("Stencil Comparison",Float)=8_Stencil("Stencil ID",Float)=0_StencilOp("Stencil Operation",Float)=0_StencilWriteMask("Sten...
在你的 shader 中加入这2段代码,剩下的部分照旧。这时我们再把这个 shader 赋给 ugui 组件的时候,就发现 mask 组件可以正确的剔除被我们更换过材质球的组件了。 其实mask的主要功能,计算都在ui组件上了,加上这2段以后,我们就可以正确的接受外部传入进来的mask相关参数了,剩下的就是把它们剔除掉就好了。
原理就是把Mask的裁切区域传给粒子特效Shader,当超出这个区域那么直接让它完全透明即可。粒子特效的源生shader大家可以去unity官网下载,我在这里把需要修改的地方标注给大家。 //add 注释中的内容就是我做修改的地方。 1 2 3 4 5 6 7 8 9 10 11
原理就是把Mask的裁切区域传给粒子特效Shader,当超出这个区域那么直接让它完全透明即可。粒子特效的源生shader大家可以去unity官网下载,我在这里把需要修改的地方标注给大家。 //add 注释中的内容就是我做修改的地方。 1 2 3 4 5 6 7 8 9 10 11
Shader "ShaderPath/MaskShader"//shader的选择路径 { Properties//该Shader可控的属性 { _MainTex ("MainTex", 2D) = "white" {}//纹理贴图 _BumpTex ("BumpTex", 2D) = "white" {}//法线纹理贴图 _MaskTex ("MaskTex", 2D) = "white" {}//遮罩纹理 ...
添加完后可以查看shader变量里会有这个几个,这样才可以成功的添加Stencil信息。 5.png 裁切过的.gif 如果你做到这步你的粒子还是没有正确的被裁切,需要在粒子中选择Render里的Masking选择 Visible inside Mask 6 如果上一步操作后你还是没有看到你的粒子显示在正确的区域内,你可以设置粒子的sort值。
Simple UIMask shader by luluco250 I have no idea why this was never ported back to ReShade 3.0 from 2.0, but if you missed it, here it is. It doesn't feature the auto mask from the original shader. It does feature a new multi-channnel masking feature. UI masks can now...