- Home /
Question by
amphoterik · Sep 08, 2013 at 01:45 AM ·
shadercgemissive
Shader - Remove Alpha before adding color
Hello, I am new to shaders and I am taking a shot out creating one. My idea is that the model itself would be invisible, but a rim around the model would glow. The problem that I am having is that reducing the alpha to zero makes both the model AND the emission dissapear. How do I make the model dissapear but leave the emmisive? Here is my shader:
SubShader {
Tags { "Queue"="Transparent" "RenderType"="Transparent" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert alpha
struct Input {
float3 viewDir;
float2 uv_Maintex;
};
float4 _RimColor;
float _RimPower;
sampler2D _MainTex;
void surf (Input IN, inout SurfaceOutput o) {
o.Alpha = 0;
half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
o.Emission = _RimColor.rgb * pow(rim, _RimPower);
}
ENDCG
}
Thanks!
Comment
Best Answer
Answer by amphoterik · Sep 08, 2013 at 06:30 PM
I solved it by doing this:
o.Alpha = 0;
half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
o.Emission = _RimColor.rgb * pow(rim, _RimPower);
o.Alpha = pow(rim, _RimPower) * _Opacity;
Your answer
Follow this Question
Related Questions
How to force the compilation of a shader in Unity? 5 Answers
Shader Not Blending Textures on Mobile 1 Answer
Shader error in ... : Syntax error at line 30 1 Answer
CG Programming, Points Lights attenuation and light range 3 Answers
Multiple tex2D commands in fragment shader needed, is there a workaround? 0 Answers