- Home /
Vertex colour transparency and Beast lightmapping?
I need a basic diffuse shader which uses the vertex colour alpha value for transparency and which can also be lightmapped with Beast lightmapping. Is this possible?
What I'm after after is basically the 'Transparent/Diffuse' shader but with the ability to use vertex colour alpha for transparency instead of (or as well as) the alpha channel of the texture.
Answer by Jde · Jul 17, 2011 at 06:42 PM
I managed to answer my own question with a bit of reading up on shader writing. I've achieved the desired effect by adding a couple of simple lines to the built-in shader 'Transparent/VertexLit'.
I added this line to the 'BindChannels' command wherever there was a lightmap pass...
Bind "Color", color
and I added this line to any non-lightmapped SubShader/Pass...
ColorMaterial AmbientAndDiffuse
Answer by sneftel · Jul 17, 2011 at 02:50 PM
In order for transparency to affect the lightmapping (as opposed to being rendered with lightmapping) you'll need to use the _TransparencyLM
material property to tell Beast about your transparency. see the "Lightmapping In-Depth" documentation for more info.
I don't even need it to affect the lightmapping at this stage. All I need is a shader which allows vertex colour transparency AND can receive lightmaps.
Then you don't need to do anything related to lightmapping. Just write a simple surface shader which pulls alpha from the vertex.
Yeah that's the problem, I don't know how to write shaders (yet). I've been searching for hours and can't find anyone who's solved a similar problem. I'm surprised that no-one has come across this problem before.
Answer by kaleetos · Jul 17, 2011 at 02:34 PM
Should work just fine.
An excerpt from Unity's documentation on lightmapping:
Unity doesn't require you to select special materials to use lightmaps. Any shader from the built-in shaders (and any Surface Shader you write, for that matter) already supports lightmaps out of box, without you having to worry about it - it just works.
The trouble is 'Transparent/Diffuse' doesn't support vertex colour transparency, only transparency from the texture.
Your answer
Follow this Question
Related Questions
vertex color questions! 1 Answer
Transparent glsl shader is still opaque in the lightmap. 0 Answers
Lighting and lightmapping - OpenGL ES 1.1? 3 Answers
lightmap transitions? 1 Answer
Mobile BEAST lightmapping shader/lighting question 0 Answers