x


specular shader alpha not working?

The effect I'm trying to achieve is a glass-like surface off of which any specular highlight is more "opaque" than the base material alpha. From what I can see, the built-in transparent specular shader thinks it's doing this, but I've pulled out my own copy to demonstrate how it seems not to be...

 fixed4 LightingCustomSpecular (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten) {
 fixed3 h = normalize (lightDir + viewDir);

 fixed diff = max (0, dot (s.Normal, lightDir));

 float nh = max (0, dot (s.Normal, h));
 float spec = pow (nh, s.Specular*128.0) * s.Gloss;

 fixed4 c;
 c.rgb = (s.Albedo * _LightColor0.rgb * diff + _LightColor0.rgb * _SpecColor.rgb * spec) * (atten * 2);
 c.a = 1.0;//s.Alpha + _LightColor0.a * _SpecColor.a * spec * atten;
 return c;
   }

Note where the output c.a is set straight to 1.0 rather than the intended base alpha + additional shininess. When rendered, the object still comes out at the 20% opacity of the input base color. When I force the alpha output of the surface initializer

 void surf (Input IN, inout SurfaceOutput o) {
 fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
 o.Albedo = tex.rgb * _Color.rgb;
 o.Gloss = tex.a;
 o.Alpha = tex.a * _Color.a;
 o.Specular = _Shininess;
   }

to 1.0 (o.Alpha = 1.0;//tex.a * _Color.a;), of course the object renders full opaque, showing the shader as a whole is connected properly.

Any idea, then, why the alpha output of the lighting model function is not being honored? I thought it might just be postmultiplying the base alpha somehow, but a forced alpha of 1.0 in surf() and 0.5 in LightingCustomSpecular still renders as 1.0 opaque, so that's not the problem either...

more ▼

asked Jun 02, 2011 at 09:07 PM

sean gravatar image

sean
326 30 25 32

(comments are locked)
10|3000 characters needed characters left

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x3155
x522
x108
x3

asked: Jun 02, 2011 at 09:07 PM

Seen: 1638 times

Last Updated: Jun 02, 2011 at 09:08 PM