Im working on a game and we just changed the Unity engine to run with linear color space. I am usually making textures in 8bit sRGB.
I've heard that It turns to linear color if I just change it to 32 bit. however It seems impossible to work with, as a lot of wrong stuff is going on on the texture when doing it, Some areas and colors completely change and the texture doesnt look like the original at all. There must be a better way of doing this?
Replies
70% sRGB = 50% LInear or so.
The first part of this isn't necessarily true, though the latter part is. My own mobile Burley-GGX shader required me to manually control gamma correction, because mobile devices don't or didn't support Unity's internal gamma correction. I created a tonemapping manager with an option for the user to toggle in shader gamma correction, or detect it from the Unity settings (which was very buggy).
@ the OP, you need to manage gamma in Unity for what platform you are working not just for the texture settings but for the project settings as well. If you do need to do gamma correction in Photoshop for some reason (don't do this unless you really know what you're doing) you can find a gamma control under "Exposure". Again the transformation is 1/2.2 or 2.2.
I will also add that linearizing sRGB textures in Photoshop will reduce the quality of your textures! It's all around a bad idea.
For the OP. It could be worth it to take a linear icc profile(Elle Stone has a lovely set of free to use icc profiles) and convert to that.
However, game engines like Unity aren't smart enough to read icc profiles. A proper colour management system is a bit too complicated for most engine designers, so they mostly keep themselves to sRGB and Linear. DCC apps like Maya and Blender have OCIO, which isn't icc compatible and generally doesn't tag files but assumes they are linear, and also has a few more space options.
That means that you need to tell Unity whether something is linear or not, which in turn means you don't have to do that in Photoshop. So based on this...
1. Anything that is you painting with colors, so in a PBR workflow, the diffuse/albedo need to have 'Bypass sRGB sampling' turned OFF.(Mipmapping in linear space can be useful here though, the colors get out a little brighter and prettier for algorithms in linear space.)
2. Anything that is you painting with numbers, such as Heightmaps, Glossiness maps, Normal maps, Exr files, Literally anything else in a PBR workflow that has you consult a physical material sheet, needs "Bypass sRGB sampling" turned ON.
The logic is that you are telling Unity to NOT be doing color management on the later, because they are NOT colors, but numbers.
Disclaimer: I have never used Unity, but I am the dev dealing with Krita's color management. I hope this helps.
In general, just let Unity handle the conversion.