替换unity自身的mask遮罩

简介: 新建材质球,设置图,新建image,赋值材质球即可Shader "ImageEffect/MaskIcon"{ Properties { [PerRendererData] _MainTex("Sprite Tex...

新建材质球,设置图,新建image,赋值材质球即可


Shader "ImageEffect/MaskIcon"
{
    Properties
    {
        [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
    _Mask("Base (RGB)", 2D) = "white" {}


    _Color("Tint", Color) = (1,1,1,1)
        _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
        _ColorMask("Color Mask", Float) = 15
        [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip("Use Alpha Clip", Float) = 0
    }

        SubShader
    {
        Tags
    {
        "Queue" = "Transparent"
        "IgnoreProjector" = "True"
        "RenderType" = "Transparent"
        "PreviewType" = "Plane"
        "CanUseSpriteAtlas" = "True"
    }

        Stencil
    {
        Ref[_Stencil]
        Comp[_StencilComp]
        Pass[_StencilOp]
        ReadMask[_StencilReadMask]
        WriteMask[_StencilWriteMask]
    }

        Cull Off
        Lighting Off
        ZWrite Off
        ZTest[unity_GUIZTestMode]
        Blend SrcAlpha OneMinusSrcAlpha
        ColorMask[_ColorMask]

        Pass
    {
        CGPROGRAM
#pragma vertex vert
#pragma fragment frag

#include "UnityCG.cginc"
#include "UnityUI.cginc"

#pragma multi_compile __ UNITY_UI_ALPHACLIP

        struct a2v
    {
        fixed2 uv : TEXCOORD0;
        half4 vertex : POSITION;
        float4 color    : COLOR;
    };

    fixed4 _Color;

    struct v2f
    {
        fixed2 uv : TEXCOORD0;
        half4 vertex : SV_POSITION;
        float4 color    : COLOR;
    };

    sampler2D _MainTex;
    sampler2D _Mask;

    v2f vert(a2v i)
    {
        v2f o;
        o.vertex = mul(UNITY_MATRIX_MVP, i.vertex);
        o.uv = i.uv;

        o.color = i.color * _Color;
        return o;
    }

    fixed4 frag(v2f i) : COLOR
    {
        half4 color = tex2D(_MainTex, i.uv) * i.color;
        half4 mask = tex2D(_Mask, i.uv);
        color.a *= mask.a;
        return color;
    }
        ENDCG
    }
    }
}
相关文章
|
图形学
unity3d UI特效处理,image置灰shader
新建材质,材质指定该shader,然后将材质球拖拽到image上面,效果就显示出来了 图片.png Shader "UI/ImageGreyShader" { Properties { [PerRendere...
3109 0
|
图形学
unity3d置灰image图片shader
新建材质球,赋值该shader,将材质球复制到image上即可置灰image Shader "UIEffect/ImageGray" { Properties { [PerRendererData] _MainTex("...
1442 0
|
6月前
Cocos Creator3.8 项目实战(三)去除scrollview背景色和label 对齐方式设置无效问题解决
Cocos Creator3.8 项目实战(三)去除scrollview背景色和label 对齐方式设置无效问题解决
|
9月前
|
计算机视觉 C++
【OpenCV • c++】滑动条的创建和使用
【OpenCV • c++】滑动条的创建和使用
128 0
|
定位技术
egret纹理填充模式(上下填充)
egret纹理填充模式(上下填充)
egret纹理填充模式(上下填充)
|
iOS开发
iOS 去除 TabBarItem的图片默认颜色
iOS 去除 TabBarItem的图片默认颜色
104 0
|
前端开发
一篇文章带你了解SVG 蒙版(Mask)
一篇文章带你了解SVG 蒙版(Mask)
442 0
一篇文章带你了解SVG 蒙版(Mask)
|
图形学
【Unity3D Shader】学习笔记-渐变映射①
Gradient-Map(渐变映射)常用于Color Gradient颜色分级、颜色校正等。本篇主要用于将图像中的灰度范围映射到指定的渐变填充色中,通过渐变映射图来制作不同的效果。 通过修改不同的渐变映射纹理就可以获得不同的效果,好的的效果就需要根据场景制作特定的映射纹理进行调效果,Shader代码相对简单,在片段着色器中进行效果处理,
512 0
【Unity3D Shader】学习笔记-渐变映射①
|
前端开发 Android开发
【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )(一)
【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )(一)
362 0
|
Android开发
【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )(二)
【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )(二)
247 0
【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )(二)