Skip to content
Snippets Groups Projects

Completely refactor tone mapping, color spaces, everything

Merged Niklas Haas requested to merge tone_mapping_v3 into master

Supersedes !210 (closed)

Adds an extra commit to completely overhaul pl_color_space, merging it with conventional HDR metadata, nuking light, changing the way SDR curves are handled in libplacebo, and simplifying a lot of stuff.

TODO:

  • Fix 3DLUT inputs (need to ingest black-scaled inputs!) (Edit: Nvm, this already round-trips because we encode in gamma light before feeding the content into the 3DLUT)
  • Use direct GLSL for naive black point compensation
  • Add fallbacks for the old fields (sig_peak etc.)
  • Add automatic tone mapping curve selection heuristics
  • Investigate possibility of black point shift (with the new ICC BPC changes)
  • Add better gamut mapping algorithms this MR is large enough
  • Parse primaries from ICC profile this MR is large enough
  • Properly respect intent needs to be coordinated with downstream first
  • fix PL_GAMUT_DARKEN black clipping
Edited by Niklas Haas

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Niklas Haas marked this merge request as draft

    marked this merge request as draft

  • Niklas Haas added 1 commit

    added 1 commit

    • f759a261 - colorspace: completely refactor pl_color_space

    Compare with previous version

  • Niklas Haas changed the description

    changed the description

  • Niklas Haas added 11 commits

    added 11 commits

    • 00c34554 - tone_mapping: add new tone mapping API
    • 17d13b80 - shaders: tweak LUT selection logic
    • 04839d32 - shaders/colorspace: use new tone mapping API
    • e9dce242 - tests/bench: add HDR tone-mapping benchmark
    • 432e39ef - demos/plplay: switch to new tone mapping API
    • e32353ec - renderer: move peak detection to pl_render_high_quality_params
    • b6fa6d53 - demos/plplay: implement target ICC profile loading
    • 7deb10fa - demos/plplay: fix the 'disable tone mapping' check box
    • ccf9f538 - demos/plplay: enable output color override by default
    • 720e89e4 - demos/plplay: improve HDR level slider scaling
    • 540cc08e - colorspace: completely refactor pl_color_space

    Compare with previous version

  • Niklas Haas changed the description

    changed the description

  • Niklas Haas mentioned in merge request !210 (closed)

    mentioned in merge request !210 (closed)

  • Tested with a low nits frame and it seems plplay loses some contrast.
    Comparison with madVR/master/refactor: https://slow.pics/c/sxx9pMOn

    In the refactor image, the clouds are pretty flat.

    File: https://0x0.st/orY4.hevc
    edit: Fixed the ST2086 metadata, so now BT.2390 is nearly identical and BT.2446 is brighter.

    Edited by quietvoid
  • Niklas Haas added 9 commits

    added 9 commits

    • c70552e5 - shaders/colorspace: use new tone mapping API
    • 8bd3a304 - tests/bench: add HDR tone-mapping benchmark
    • 20c007ca - demos/plplay: switch to new tone mapping API
    • 0f1a8570 - renderer: move peak detection to pl_render_high_quality_params
    • 8aa243ba - demos/plplay: implement target ICC profile loading
    • ff6e544b - demos/plplay: fix the 'disable tone mapping' check box
    • 3104debd - demos/plplay: enable output color override by default
    • bcce21aa - demos/plplay: improve HDR level slider scaling
    • 0be1f63c - colorspace: completely refactor pl_color_space

    Compare with previous version

  • Niklas Haas changed the description

    changed the description

  • Niklas Haas marked the checklist item Use direct GLSL for naive black point compensation as completed

    marked the checklist item Use direct GLSL for naive black point compensation as completed

  • Niklas Haas added 15 commits

    added 15 commits

    • 0be1f63c...9d506423 - 2 commits from branch master
    • 7d6c8e1c - shaders/colorspace: simplify gamut clipping logic
    • 8cd22944 - shaders/colorspace: disable gamut clipping by default
    • e58d132d - tone_mapping: add new tone mapping API
    • 0c0c51ab - shaders: tweak LUT selection logic
    • e1e5c125 - shaders/colorspace: use new tone mapping API
    • 4da63a96 - tests/bench: add HDR tone-mapping benchmark
    • afce55a5 - demos/plplay: switch to new tone mapping API
    • 90dbe03e - renderer: move peak detection to pl_render_high_quality_params
    • 5be32a0e - demos/plplay: implement target ICC profile loading
    • 38e4b860 - demos/plplay: fix the 'disable tone mapping' check box
    • 8edb6196 - demos/plplay: enable output color override by default
    • a3c1a011 - demos/plplay: improve HDR level slider scaling
    • 6c75a52d - colorspace: completely refactor pl_color_space

    Compare with previous version

  • Niklas Haas marked the checklist item Add fallbacks for the old fields (sig_peak etc.) as completed

    marked the checklist item Add fallbacks for the old fields (sig_peak etc.) as completed

  • Niklas Haas added 11 commits

    added 11 commits

    • b6f8e7e9 - tone_mapping: add new tone mapping API
    • 2192dafb - shaders: tweak LUT selection logic
    • 73344933 - shaders/colorspace: use new tone mapping API
    • e5c598d5 - tests/bench: add HDR tone-mapping benchmark
    • 26387ab2 - demos/plplay: switch to new tone mapping API
    • b9ae20ca - renderer: move peak detection to pl_render_high_quality_params
    • 0845f7cf - demos/plplay: implement target ICC profile loading
    • 1622face - demos/plplay: fix the 'disable tone mapping' check box
    • 3065c6a9 - demos/plplay: enable output color override by default
    • cc9aa1d8 - demos/plplay: improve HDR level slider scaling
    • 95217422 - colorspace: completely refactor pl_color_space

    Compare with previous version

  • Niklas Haas added 11 commits

    added 11 commits

    • 9c537166 - tone_mapping: add new tone mapping API
    • a1f27450 - shaders: tweak LUT selection logic
    • ef455ad3 - shaders/colorspace: use new tone mapping API
    • 7c022105 - tests/bench: add HDR tone-mapping benchmark
    • 7f2c58b8 - demos/plplay: switch to new tone mapping API
    • 6a2e5085 - renderer: move peak detection to pl_render_high_quality_params
    • 27419e49 - demos/plplay: implement target ICC profile loading
    • cd19140c - demos/plplay: fix the 'disable tone mapping' check box
    • fc146540 - demos/plplay: enable output color override by default
    • 665bbbe5 - demos/plplay: improve HDR level slider scaling
    • f1e08e77 - colorspace: completely refactor pl_color_space

    Compare with previous version

  • Niklas Haas added 11 commits

    added 11 commits

    • f9a910b5 - tone_mapping: add new tone mapping API
    • 396b3349 - shaders: tweak LUT selection logic
    • fbadd3f4 - shaders/colorspace: use new tone mapping API
    • 2e987400 - tests/bench: add HDR tone-mapping benchmark
    • f864ef5d - demos/plplay: switch to new tone mapping API
    • 35b80853 - renderer: move peak detection to pl_render_high_quality_params
    • da829009 - demos/plplay: implement target ICC profile loading
    • 16c110ae - demos/plplay: fix the 'disable tone mapping' check box
    • d7f43e86 - demos/plplay: enable output color override by default
    • 3d3227ee - demos/plplay: improve HDR level slider scaling
    • bcef8159 - colorspace: completely refactor pl_color_space

    Compare with previous version

  • Niklas Haas marked the checklist item Add automatic tone mapping curve selection heuristics as completed

    marked the checklist item Add automatic tone mapping curve selection heuristics as completed

  • Niklas Haas added 10 commits

    added 10 commits

    • 0369eeb3 - shaders/colorspace: use new tone mapping API
    • f5a66a56 - tests/bench: add HDR tone-mapping benchmark
    • dfc6dd6d - demos/plplay: switch to new tone mapping API
    • 9076ed4d - renderer: move peak detection to pl_render_high_quality_params
    • ab42ab91 - demos/plplay: implement target ICC profile loading
    • 7cdf6876 - demos/plplay: fix the 'disable tone mapping' check box
    • 3e87409e - demos/plplay: enable output color override by default
    • 030c7cb0 - demos/plplay: improve HDR level slider scaling
    • 9cfd789f - colorspace: completely refactor pl_color_space
    • d6f3d078 - (WIP) refactor gamut handling options

    Compare with previous version

  • Niklas Haas changed the description

    changed the description

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading