I've been using Blender for creating maps for real time rendering that contain non-color/linear color data (ambient occlusion, normal maps, light maps). I started wondering about correct conversion from Blender's internal color data to a 8 bit png that would behave as close as possible to the original data. I'm aware that 8 bit pngs aren't ideal for many types of technical maps, but for my uses (glTF) they are required.

I started testing baking ambient occlusion because it is a black and white map and thus quite simple. I stored my initial bake in a 32 bit exr to retain the maximum amount of data. After this I used the compositor's Viewer Node and then displayed that Viewer Node in a UV editor to use the Save As function. I outputted 8 bit RGB png images with different settings to compare their visual look to the original data. Here are some images of the results:

Scene setup

Variations of the ao map

I initially expected that leaving the Save As Render setting would output linear data into the png files without any of the display transforms, but based on this comparison the result which looks the most similar to the 32 bit exr data (in the viewport at least) was the version where the display device was set to None and Save As Render was left on. Could someone explain what Save As Render and leaving it off actually means?



You must log in to answer this question.