Description

During lookdev, I use a post process material to bring reference images into the engine to compare against my work.  The goal is for the reference image to not be touched by any of the Unreal color pipeline and to look exactly in the viewport (and renders) as it would when viewed straight from the file on disk in an external viewing tool.  I've found that when using sRGB reference images I had to uncheck the sRGB option in the texture in order for the resulting image to look correct in the viewport.  This seems confusing because the image is definitely sRGB encoded.  Using this setup, reference images also look correct in Sequencer renders, HOWEVER, they appear too bright in the new Movie Render Queue renders.

To try to get to the bottom of this I created a test case with a simple post process material (black, 0.5 grey, and white swatches plus a linear gradient) and looked at the output values in the different contexts (viewport, Sequencer render, Movie Render Queue render).

The post process material uses the default "Blendable Location" of "After Tonemapping" to try to be the least effected by unreal on it's way to being displayed.

Here is the PPM, note that the large grey swatch is set at 0.5

[Image Removed]

Here is the viewport output where I use the pixel inspector to measure the 0.5 grey swatch and get a Final Rendered Color of 0.21..., however, visually, the swatch looks correct.

[Image Removed]

Here is the sequencer output, where the 0.5 grey swatch with a file source color 0.5 and looks correct visually. 

[Image Removed]

Here is the Movie Render Queue output where the 0.5 grey swatch has a source file color of 0.73 and looks too bright

[Image Removed]

From these results, I'm thinking (probably incorrectly, sorry Rod):

  1. An sRGB > linear conversion happens somewhere on the way to viewport (0.5 becomes 0.21) that isn't part of the tonemapper (since the post material is set to happen after the tonemapper)
  2. There is a linear to sRGB DISPLAY conversion in the viewport (0.21 inspected value looks like 0.5 grey).
  3. There is a linear to sRGB conversion done by sequence in the render (we get 0.5 out)
  4. Maybe there is a double linear to sRGB of the post material in Movie Render Queue as 0.21 in viewport becomes 0.7... in the file output?

All that said, I see two problems

  1. Movie Render Queue and Sequencer renders of the same input, should give the same output.
  2. This might be a can or worms, but shouldn't a 0.5 input to the emissive color pin of a post process material produce a 0.5 final render color?  This is the behavior that I get from a Surface - Default Lit material.

 

Steps to Reproduce
  1. Create a material with Material Domain = Post Process
  2. Plug 0.5 into the emissive color pin
  3. Apply this material to the Post Process Materials array in a CineCamera
  4. Look through the camera and use Pixel Inspect to sample values
  5. Create a level seqeunce, add a camera cuts track, select your cineCamera and output in Sequencer and Movie Render Queue.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-93427 in the post.

0
Login to Vote

Won't Fix
ComponentUE - Anim - Sequencer
Target Fix4.26
CreatedMay 21, 2020
ResolvedSep 8, 2020
UpdatedJan 13, 2021