Search Unity

HDRP Color Grading / LUT workflow in HDR context

Discussion in 'High Definition Render Pipeline' started by polyrhythm, Dec 24, 2020.

  1. polyrhythm

    polyrhythm

    Joined:
    Jul 16, 2016
    Posts:
    1
    I've already read https://docs.unity3d.com/Packages/c...inition@7.1/manual/LUT-Authoring-Resolve.html and set up Resolve correctly. I have a couple questions.

    1. Why does Unity export a log image? Normally, log images coming out of cameras is to squeeze the scene's dynamic range into a smaller area so that it can be expanded later in post. But, a render coming straight out of Unity is a big ol' 32 bit EXR - doesn't seem like the log export makes sense in the same way that photographers don't shoot log RAW - they just shoot linear RAW because there's more than enough data there.

    2. It would be nice to have an explicit description of where in the render pipeline this LUT ingestion/color grading is happening. Surely it's pre-tonemap, but if I'm also selecting the "external" tonemap, does that mean Unity no longer does any tonemapping other than what my LUT happens to do? That seems to be messed up because I can't master every single HDR output with my own personal grading setup.

    A more sane approach would seem to be using a static tonemapper like ACES RRT, give a LUT of that to me or let me just use OpenColorIO for viewing in Resolve, and then apply my graded image before the static tonemapper. That way, Unity can still go from the whatever tonemapper they're using, predictably, to any arbitrary HDR output.

    Hoping somebody from engineering can clear up the workflow for me.
    TL;DR - does Unity offer a LUT-based HDR color grading workflow?
     
  2. RobOuellette

    RobOuellette

    Joined:
    Jun 5, 2018
    Posts:
    10
    Would love some clarity on this too as this seems to pertain to the color grading workflow across all pipelines and not just HDRP.

    "External" mode seems to = handling everything yourself within a 3D LUT, but the documentation for this workflow is a bit sprase unless I'm misunderstanding something.

    For instance, this isn't telling the whole story:


    Unity will also handle grading within the wider ACES (AP1? AP0?) gamut if you select the ACES tonemapper. If you wanted to do this externally in Resolve, you'd likely have to handle the minutiae of Unity's ACES transforms yourself but that can be a challenge as that information isn't easily available — so some documentation (+ possibly DCTLs?) there would be very helpful. It makes sense to be grading in a wide working space!

    Still in this case, we're baking into a LUT and I can't imagine you'd want to handle RRT/ODTs in a LUT? I'm not sure how Unity handles ODTs in their internal color pipeline, but it does seem like they should still be handling it (+ ideally RRT / tonemapping operators) even when we grade externally. Otherwise what's the point of an ODT if we're destructively baking a single output display target into our LUTs!

    Would greatly prefer to have Unity handle RRT + ODT in External mode and supply 'view LUTs' that match Unity's tonemapping operators (if possible!)
     
    Last edited: Jul 25, 2021
    XBoxOneDigitaldreams and Ruchir like this.