• Shader笔记——9.简单灰色效果+遮罩


    简单的图片灰色效果+Mask遮罩处理

    Shader "Custom/ImgGrayEffect"
    {
        Properties
        {
            _MainTex ("Texture", 2D) = "white" {}
    		_Color("Tint", Color) = (1,1,1,1)
    		//MASK SUPPORT ADD
    		_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
    		//MASK SUPPORT END
        }
        SubShader
        {
    		Tags
    		{
    			"Queue" = "Transparent"
    			"IgnoreProjector" = "True"
    			"RenderType" = "Transparent"
    			"PreviewType" = "Plane"
    			"CanUseSpriteAtlas" = "True"
    		}
    
    		//MASK SUPPORT ADD
            Stencil
            {
                Ref [_Stencil]
                Comp [_StencilComp]
                Pass [_StencilOp] 
                ReadMask [_StencilReadMask]
                WriteMask [_StencilWriteMask]
            }
            ColorMask [_ColorMask]
            //MASK SUPPORT END
    
    		Blend SrcAlpha OneMinusSrcAlpha
            Pass
            {
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
    
                #include "UnityCG.cginc"
    
                struct appdata
                {
    				float4 vertex   : POSITION;
    				float4 color    : COLOR;
    				float2 texcoord : TEXCOORD0;
                };
    
    			struct v2f
    			{
    				float4 vertex   : SV_POSITION;
    				fixed4 color : COLOR;
    				half2 texcoord  : TEXCOORD0;
    			};
    
    			sampler2D _MainTex;
    
    			fixed4 _Color;
    
    			v2f vert(appdata IN)
    			{
    				v2f OUT;
    				OUT.vertex = UnityObjectToClipPos(IN.vertex);
    				OUT.texcoord = IN.texcoord;
    #ifdef UNITY_HALF_TEXEL_OFFSET     
    				OUT.vertex.xy -= (_ScreenParams.zw - 1.0);
    #endif     
    				OUT.color = IN.color * _Color;
    				return OUT;
    			}
    
    			fixed4 frag(v2f IN) : SV_Target
    			{
    				half4 color = tex2D(_MainTex, IN.texcoord) * IN.color;
    				float grey = dot(color.rgb, fixed3(0.299, 0.587, 0.114));
    				return half4(grey,grey,grey,color.a);
    			}
                ENDCG
            }
        }
    }
    
    
    
  • 相关阅读:
    排序-计数-优化版
    排序-计数-基础版
    排序-归并
    Unity战斗模块之角色继承设计---1.1
    Unity中保存和读取数据的类---PlayerPrefs
    《计算机图形学》 第一章 基础知识--02向量(二维)
    《计算机图形学》 第一章 基础知识--01下载和安装DirectX,配置VS编辑器
    第四章 002-条件语句
    第四章 001-复合语句
    第三章 004-运算符
  • 原文地址:https://www.cnblogs.com/sylvan/p/15375511.html
Copyright © 2020-2023  润新知