- 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