This is something I’ve been dealing with since UE3 and to date I haven’t found a good solution.

I’m attempting to invert a texture, whether grayscale or RGB (mostly black and white)… and the result is very inaccurate.

Here’s a picture to illustrate:

https://dl.dropboxusercontent.com/u/1997866/_TEMP/oneminustroubles_new.jpg

As you can see, the photoshop result is more representative of what things should look like. A one minus gives a washed out, inaccurate result.

Furthermore, I’ve added some arbitrary multiplies, powers, adds, and clamps… followed by a one minus… and the result is even worse.

Example:

https://dl.dropboxusercontent.com/u/1997866/_TEMP/oneminustroubles.jpg

I tried all sorts of things. I tried using a one minus, a subtract, a linear interpolate with the texture plugged into its alpha channel… I even tried hooking a gradient texture up to the texture via its UV input. All resulted in very inaccurate inversions.

There has to be a better way. I’ve searched google for the answer but to no avail. Some suggest multiplying by a power of 0.55. Some suggest using the an “if” node. I’ve tried them all, but still have come up empty handed.

Is there a more accurate way of doing this? If so, it could unlock some neat tricks.

Historically, the way I’ve dealt with this is inverting in photoshop, then using that inverted texture in editor… but it’s not exactly the best way to do things.

Any help would be appreciated.

Thanks,