- Home /
shader Transparency
Hello all I found a wonderful shader that mixes three colors but I need alpha transparency to work for the .png textures I have searched and tried to code no avail
Any Ideas
     Properties
     {
         _MainTex("Main Tex", 2D) = "tranparent" {}
         _Color("Color", Color) = (1.0, 1.0, 1.0, .0)
         _Color1("Color 1", Color) = (1.0, 0.5, 0.5, .0)
         _Color2("Color 2", Color) = (0.5, 0.5, 1.0, .0)
         _Rim("Rim", Float) = 1.0
         _Shift("Shift", Float) = 1.0
     }
 
     SubShader
     {
         Tags
         {
             "Queue" = "Geometry"
             "PreviewType" = "Sphere"
             "DisableBatching" = "True"
         }
 
         Pass
         {
             CGPROGRAM
             #pragma vertex Vert
             #pragma fragment Frag
 
             sampler2D _MainTex;
             float4    _Color;
             float4    _Color1;
             float4    _Color2;
             float     _Rim;
             float     _Shift;
 
             struct a2v
             {
                 float4 vertex    : POSITION;
                 float2 texcoord0 : TEXCOORD0;
                 float3 normal    : NORMAL;
                 float4 color     : COLOR;
                 
             };
 
             struct v2f
             {
                 float4 vertex : SV_POSITION;
                 float2 uv     : TEXCOORD0;
                 float3 normal : TEXCOORD1;
                 float4 color  : COLOR;
             };
 
             struct f2g
             {
                 float4 color : SV_TARGET;
             };
 
             void Vert(a2v i, out v2f o)
             {
                 o.vertex = UnityObjectToClipPos(i.vertex);
                 o.uv     = i.texcoord0;
                 o.normal = mul((float3x3)UNITY_MATRIX_IT_MV, i.normal);
                 o.color  = i.color * _Color;
                 
             }
 
             void Frag(v2f i, out f2g o)
             {
                 float rim = _Shift - pow(saturate(1.0f - normalize(i.normal).z), _Rim);
 
                 o.color = tex2D(_MainTex, i.uv) * lerp(_Color1, _Color2, rim) * i.color;
             }
             ENDCG
         } // Pass
     } // SubShader
Thanks !
~be
Answer by Namey5 · Mar 28, 2020 at 02:52 AM
 ...
 
 Tags
 {
     "Queue" = "Transparent"    //Set queue to sort transparencies properly
     "PreviewType" = "Sphere"
     "DisableBatching" = "True"
 }
  
 Pass
 {
     //Use regular transparent blending
     Blend SrcAlpha OneMinusSrcAlpha
 
     CGPROGRAM
     #pragma vertex Vert
     #pragma fragment Frag
 
 ...
Depending on what kind of shader it is there are a few ways of going about adding transparency, but for vertex/fragment shaders you can just add the correct alpha-blending tags in the shaderlab pass before the main shader. This is quite possibly the most asked question in regards to shaders in Unity, so if you're looking for more information you can just search for alpha-blending. 
 https://docs.unity3d.com/Manual/SL-Blend.html 
Your answer
 
 
             Follow this Question
Related Questions
How to make my shader have a variable transparency 1 Answer
Silhouette overlay shader 0 Answers
Why does the 3D Text shader show specular at certain angles? 2 Answers
Shader Transparency issues 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                