Has RenderTexture color management changed in Unity 2018?

To capture 360 video from Unity, we use a heavily modified version of eVRydayVR’s free (now defunct) 360 Panorama Capture script, which renders a variable number of slices around the viewer to achieve perfect stitching of near and far objects.

Under-the-hood, this script captures slices using a conventional Camera.Render() into an ARGB32 RenderTexture - however, the stitching of slices is performed in a Compute Shader, so the RenderTexture must be converted to a Compute Buffer. The compute buffer is then copied directly into a System.Drawing.Bitmap to be saved out as an image file.

In previous versions of Unity, when working in the Linear colour space, we had to perform our own gamma correction at the Texture-to-Buffer copy stage to produce accurate color reproduction. This worked well up to and including Unity 2017.

However, with Unity 2018, suddenly our renders are appearing darkened, as if they’ve been ‘linearized’ twice - but gamma-correcting them twice doesn’t appear to be the correct solution. Has color-encoding of ARGB32 data changed in Unity 2018? And if so, is there a new function for accurate gamma correction of the raw data?

This also appears to be happening in the UnityTechnologies GenericFrameRecorder

Is there any fix for this? playing with the exposure in photoshop is the only way i can fix it.

switching to gamma does give strange results as mentioned above…

im still using Unity 2018.2.14f1 so this maybe fixed in more recent builds?