File Output node incorrect results?

I am getting inconsistent results from the File Output Node when using .png.

Here is a render (a Fresnel output) that is manually saved out. It matches how it appears in the image viewer. BW, 8bit .png:

Now, here’s the same thing outputted through a File Output node set on BW, 8bit, .png:

These are the exact same settings, but the version that came from the File Output node is darkened.

If the file output node is set on BW and 16bit, then it works correct. But then the file is 4x the size for no reason. 8bit ought to be sufficient.

Anyone know what could be going on? Is this just a bug, or am I not understanding something? (2.93).

Is one of them using alpha while the other is not?

This could be because of disabled color management upon export.
You can check in the file output node side panel node properties, if “Save as Render” is enabled. If not enable it and test render again.

1 Like

None of them use alpha.

I’ve tested it, and Save as Render makes no difference.

It is because Blender currently sets all byte images to sRGB by default when they load.

  # Internal scene linear space
  scene_linear: Linear
  rendering: Linear

  # Default color space for byte image
  default_byte: sRGB

  # Default color space for float images
  default_float: Linear

  # Default color space sequencer is working in
  default_sequencer: sRGB

  # Distribution of colors in color picker
  color_picking: sRGB

  # Non-color data
  data: Non-Color

Blender then converts those sRGB pixels values to its scene_linear working space.

But Fresnel isn’t a color, its data. You have to set the Color Space to Non-Color in order to tell Blender to keep its hands off of the pixel values, you want them as they are.

2 Likes

Ah, that does seem to work. But, why is it different for the 16bit .png? And why is it different for versions I save out manually, as opposed to the file output node?