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?



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.

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.

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.