- Home /
Is there a way to make a jpeg texture transparent for black?
I have a jpeg image which I am loading onto a plane as a texture. How can I set a certain range of colors on that texture to be transparent with a script? For instance on a grayscale image, how do I set pure black to be transparent?
Thanks,
Dan
Answer by Marnix · Jun 17, 2011 at 06:15 PM
I know this is kind of a workaround, but I don't seem to find a function that does this for you in the Unity Scripting reference. And as to think of it: Unity is not a texture displayer, but it maps textures to objects. So maybe the first one isn't actually a workaround, but the true solution to your conversion problem.
The workaround 1
How about encoding it to a png? There is a function in Texture2D. While doing this, you could think of reading the values of the bytes and check for true black pixels. If so, set the alpha to 0 on that byte.
http://unity3d.com/support/documentation/ScriptReference/Texture2D.EncodeToPNG.html
The workaround 2
How about creating a shader that does this for you? In the pixel shader:
// pseudo code
if(inColor == vec3(0,0,0))
outColor.a = 0;
That would be the only thing that you have to add to a default diffuse shader.
Answer by DaveA · Jun 17, 2011 at 07:18 PM
You can also use Strumpy's Shader Editor to roll your own. Use the jpeg for both color and alpha with a filter to set 0,0,0 to 0 alpha, otherwise 1. Or whatever range you want.
Your answer
Follow this Question
Related Questions
ingame transparency 2 Answers
How to get transparency exported from substance to unity 3 Answers
Assigning UV Map to model at runtime 0 Answers
Hiding sections of arbitrary models that lie one side of a plane 0 Answers
Certain faces appearing transparent, both before and after applying materials 0 Answers