- Home /
 
               Question by 
               DizzyTornado · Dec 14, 2018 at 04:34 AM · 
                shaderlightingshaderstransparency  
              
 
              How to make my shader have a variable transparency
Basicaly I found this shader online. I want to add the ability for it to be transparent. I don't know much about shaders, but the parts I labeled with a "//" or a "//Addition" are areas where I have added onto the code. However this does not give errors, but it is still not transparent. Any help is greatly appreciated.
 Shader "4ik0/FakeWindow/FakeWindowDetail" 
 {
     Properties 
     {
         _Color ("Color Tint", Color) = (1,1,1,1)
         //Addition
         _Transparency("Transparency", Range(0,1)) = 0.25
         _MainTex ("Outside Window (RGB) Alpha (A)", 2D) = "white" {}
         _Detail("Detail (RGB) Alpha (A)", 2D) = "black" {}
         _BumpMap("Bumpmap (RGB)", 2D) = "bump" {}
         _Glossiness ("Smoothness", Range(0,1)) = 0.5
         _EmissionColor("Emission Color", Color) = (0,0,0)
         _EmissionMap("Emission Texture", 2D) = "white" {}
         _Metallic ("Metallic", Range(0,1)) = 0.0
         _Scale("Simulated Distance", Range(0, 1)) = 0.1
     }
 
     SubShader 
         {
         Tags{ "RenderType" = "Transparent" "Queue" = "Transparent" }
         LOD 200
         Cull Off
             //
             ZWrite Off
             Blend SrcAlpha OneMinusSrcAlpha
 
         CGPROGRAM
         // Physically based Standard lighting model, and enable shadows on all light types
         #pragma surface surf Standard fullforwardshadows
             //
         #pragma surface surf Lambert alpha
 
         // Use shader model 3.0 target, to get nicer looking lighting
         #pragma target 3.0
 
         sampler2D _MainTex;
         sampler2D _Detail;
         sampler2D _BumpMap;
         half _Scale;
         half _Glossiness;
         half _Metallic;
         half4 _EmissionColor;
         sampler2D _EmissionMap;
         fixed4 _Color;
         //Addition
         float _Transparency;
 
         struct Input 
         {
             float2 uv_MainTex;
             float2 uv_Detail;
             float2 uv_BumpMap;
             float2 uv_EmissionMap;
             half3 viewDir;
         };
 
         void surf (Input IN, inout SurfaceOutputStandard o) 
         {
             half4 bump = tex2D(_BumpMap, IN.uv_BumpMap);
             half3 norm = UnpackNormal(bump);
             half scale = (1 - _Scale);
             half coeff = dot(abs(normalize(IN.viewDir)), norm);
             half3 offset = (IN.viewDir + norm) * scale / 2 * (2 - coeff);
             half2 uv = half2(IN.uv_MainTex.x * _Scale + scale / 2 - offset.x, IN.uv_MainTex.y * _Scale + scale / 2 - offset.y);
             half4 color = tex2D (_MainTex, uv) * _Color;
             half4 emiss = tex2D(_EmissionMap, IN.uv_EmissionMap) * _EmissionColor;
             half4 detail = tex2D(_Detail, IN.uv_Detail) * _Color;
             o.Normal = norm;
             o.Albedo = lerp(color.rgb * pow(coeff, 2), detail, detail.a);
             o.Metallic = _Metallic;
             o.Emission = emiss;
             o.Smoothness = _Glossiness;
             //Transparency
             o.Alpha = _Transparency;
             o.Alpha = tex2D(_MainTex, IN.uv_MainTex).a * _Transparency;    
         }
         ENDCG
     }
     FallBack "Diffuse"
 }
 
               Comment
              
 
               
              Answer by dan_wipf · Dec 14, 2018 at 09:36 AM
ok what you want to do is following:
add to this line alpha:blend
 #pragma surface surf Standard fullforwardshadows alpha:blend
delete this line:
 #pragma surface surf Lambert alpha
replace both o.Alpha lines with one of this:
 //from Transparent to Opaque
 o.Alpha = color.a - _Transparency;
 //or from Opaque to Transparent
 o.Alpha = color.a * _Transparency; 
this should give you normal transparenycontroll by _Transparency. Keep in mind, the color alpha value must still be 0 for full Transparent Window.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
               
 
			 
                