Gradient + Transparent
Hello. Previously, this did not come across. The gradient shader, add transparency map on the similarity of the standard "Unlit / Transparent". I would be grateful for your help.
Shader "Unlit/LinearGradient"
{
Properties {
_TopColor ("Color1", Color) = (1,1,1,1)
_BottomColor ("Color2", Color) = (1,1,1,1)
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
fixed4 _TopColor;
fixed4 _BottomColor;
struct v2f {
float4 position : SV_POSITION;
fixed4 color : COLOR;
};
v2f vert (appdata_full v)
{
v2f o;
o.position = mul (UNITY_MATRIX_MVP, v.vertex);
o.color = lerp(_TopColor,_BottomColor, v.texcoord.y );
return o;
}
fixed4 frag (v2f i) : SV_Target
{
float4 color = i.color;
color.a = 1;
return color;
}
ENDCG
}
}
}
Answer by Namey5 · May 31, 2016 at 06:30 AM
Shader "Unlit/LinearGradient"
{
Properties{
_TopColor("Color1", Color) = (1,1,1,1)
_BottomColor("Color2", Color) = (1,1,1,1)
_MainTex ("Main Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }
Pass
{
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_ST;
fixed4 _TopColor;
fixed4 _BottomColor;
half _Value;
struct v2f {
float4 position : SV_POSITION;
fixed4 color : COLOR;
float2 uv : TEXCOORD0;
};
v2f vert (appdata_full v)
{
v2f o;
o.position = mul (UNITY_MATRIX_MVP, v.vertex);
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);
o.color = lerp (_TopColor,_BottomColor, v.texcoord.y);
return o;
}
fixed4 frag(v2f i) : SV_Target
{
float4 color;
color.rgb = i.color.rgb;
color.a = tex2D (_MainTex, i.uv).a * i.color.a;
return color;
}
ENDCG
}
}
}
Just change the alpha value for each colour as a multiplication for the texture's alpha.
Ah, ok. I'll fix it for you. I thought you meant you wanted the gradient as transparency.
In Unity editor shader is displayed normally. Android and ios assembly disappears transparency map. What could be the problem?
Try checking the material queue. This is a common bug in Unity 5 that I think may be your problem. At the top of the inspector, there should be a little padlock. Next to that is a down arrow. Click this, then "Debug". Select your material and find the material queue. This should be 3000. If it isn't change it. If it is, I'm not entirely sure on the problem.
Thanks, did not know about this option, partly helped solve the problem.
Your answer
Follow this Question
Related Questions
How can I add alpha channel to this shader and how can I make the object to be transparent ? 1 Answer
A problem with a shader to make a window transparent 0 Answers
vertex shader with alpha channel 0 Answers
Circular Bar Transparent gradient 0 Answers
Transparency using Scene Color node not layering multiple transparent objects over each other 0 Answers