zoukankan      html  css  js  c++  java
  • unity shader 剔除指定的颜色

    Shader "MyShader/PaintingBGTransparency" {
    	Properties{
    		_MainTex("Base (RGB)", 2D) = "white" {}
    		_FilterfColor("Ridof (RGB)",Color) = (1,1,1,1)
    	}
    		SubShader{
    			Tags { "RenderType" = "Opaque" }
    			Blend SrcAlpha OneMinusSrcAlpha
    			pass
    			{
    				CGPROGRAM
    
    				#pragma vertex vertext_convert
    				#pragma fragment fragment_convert
    				#include "UnityCG.cginc" 
    
    				sampler2D  _MainTex;
    				sampler2D  _MainTex1;
    				float4  _FilterfColor;
    				struct Inputvrite
    				{
    					float4 vertex : POSITION;
    					float4 texcoord : TEXCOORD0;
    				};
    				struct Inputfragment
    				{
    					float4 pos : SV_POSITION;
    					float4 uv : TEXCOORD0;
    				};
    
    				float ColorLerp(float3 tmp_nowcolor,float3 tmp_FilterfColor)
    				{
    					float3 dis = float3(abs(tmp_nowcolor.x - tmp_FilterfColor.x),abs(tmp_nowcolor.y - tmp_FilterfColor.y),abs(tmp_nowcolor.z - tmp_FilterfColor.z));
    					float dis0 = sqrt(pow(dis.x,2) + pow(dis.y,2) + pow(dis.z,2));
    					float maxdis = sqrt(3);
    					float dis1 = lerp(0,maxdis,dis0);
    					return dis1;
    				}
    
    				Inputfragment vertext_convert(Inputvrite i)
    				{
    					Inputfragment o;
    					o.pos = UnityObjectToClipPos(i.vertex);
    					o.uv = float4(i.texcoord.xy,1,1);
    					return o;
    				}
    
    				float4 fragment_convert(Inputfragment o) : COLOR
    				{
    					float4 c = tex2D(_MainTex,o.uv);
    					c.a *= ColorLerp(c.rgb,_FilterfColor.rgb);
    					return c;
    				}
    
    
    			ENDCG
    			}
    		}
    			FallBack "Diffuse"
    }
    

      

  • 相关阅读:
    Math类操作数据
    java之静态方法与非静态方法
    使用Date和SimpleDateFormat类表示时间
    Java 中基本类型和字符串之间的转换
    Python基础
    生成对抗网络
    机器翻译
    语义角色标注
    个性化推荐
    词向量
  • 原文地址:https://www.cnblogs.com/Jason-c/p/11383901.html
Copyright © 2011-2022 走看看