zoukankan      html  css  js  c++  java
  • tonemapping

    tone mapping operator就是这样一个映射曲线  输入0-正无穷 输出0-1  (上图例子 aces 曲线 可以处理负值 输出也是 0-2.2

    曲线包含三部分

    •  “shoulder” which is meant to map larger luminance values to values approaching 1, but this convergence is typically asymptotic.
    • A “foot”, which is mean to control how the lower ranges of luminance are displayed. The foot is not as common or necessary as the shoulder, but it can help prevent darker portions of the image from being too dark.
    • A linear or mostly linear portion, controls how your “mid tones” scale.

     

     光谱轨迹 第三张是真实世界的光谱轨迹

    srg 和aces都  大约  是它的子集

    tonemap就是做hdr相关转换的 在游戏最后做tonemap可以从hdr映射回ldr ---适应ldr显示器  可以选aces曲线回去 也可以自己调曲线 总之都是为了从0-正无穷到0-1 

    图一就是aces映射曲线看起来的样子

    最简单的从0-正无穷 映射到0-1的方法是  color/(color+1)但这个曲线不好看 

    其余的颜色变化是用colorgrading来调的 白平衡 饱和度之类的

     

     ue的tonemap

    这篇paper里有他们整个的后处理管线

    看来我对LUT那里的理解有问题 这几位大佬的意思是说 LUT是在LDR空间做的 (在photoshop里把映射关系 用一张图表示出来 把这张图在游戏里使用)

    也就是说LUT是做colorgrading的 而已。。这种方法没有办法在hdr的设备上显示,也没有办法得到更广阔的色域gamut (which is about hdr

    按照unity来看

    它把colorgrading作为一个更宽的定义 包含tone 包含其它的色温什么的

    ue把colorgrading和tonemapping当俩并列的概念来看

    Rec709

    Rec2020

    有关global

    和local这个事情也略复杂

    https://bartwronski.com/2016/08/29/localized-tonemapping/

    这事和曝光有关

     ue的人有提到 他们做的是静态的 tonemap不会因为你走到洞里和在户外  洞里洞外 不会用不同的tone曲线

    和这个功能有点类似的是自动曝光unity里面有 切换的瞬间会变下

    https://www.youtube.com/watch?v=A-wectYNfRQ

    https://bruop.github.io/tonemapping/

    https://knarkowicz.wordpress.com/2016/08/31/hdr-display-first-steps/

    https://bartwronski.com/2016/08/29/localized-tonemapping/

    https://docs.unrealengine.com/en-US/Engine/Rendering/PostProcessEffects/ColorGrading/index.html

    https://docs.unity3d.com/550/Documentation/Manual/script-Tonemapping.html

    https://gpuopen.com/wp-content/uploads/2016/03/GdcVdrLottes.pdf  这套应该是比ue要好的tonemap管线了

    哎呀 原来我做讲座的时候一直都是在讲tonemap是来做hdr做ldr映射的 但后来自己忘记是这样了。。。还以为讲座的时候没这么讲 讲错了呢

    估计各份文档都是这么说的。。所以当时没写错。。我得再写个好点的hdr的讲座。。。

    对应camera的exposure值和 bloom  还有hdr的rt 这些都要做对 不是单一的最后一步后处理

    链接里面一堆宝贝呀

    下面这图在我眼里就跟wavefront在我眼里似的  好美 但不怎么懂 希望过段时间就能懂 这篇写的好乱是要整理的

    我知道这个是啥意思了 用3bits存这些空间的颜色 产生的band 也是他们离散情况下一个光谱轨迹

    每一栏 横坐标是red 纵坐标是green green是大格子的来源 因为3bits 所以大概7个格子

    这里就像LUT图 去掉蓝色 降维简化。。。

    因为标准LUT是线性空间 所以 这些格子是等高的  谢谢Jin先生

    从这图 可以看出 rec709和srgb和gamma2.2的区别了

    这东西 叫色板 swatch

    下面的问题是 为什么dither能在3bits下就做那么好。。

    好美

    srgb 和rec709 啥区别 TF函数不同

    linear为什么不是直的。。。

    这张图是各个空间显示出来的transfer function的曲线示意图

    transfer function 可以是比如srgb的gamma的transfer 分段函数

    线性被display pow2.2 decode了一次 所以了向下弯 感谢文先生

    发白那个问题是这样的

    desaturate

     

     https://www.lightspace.lightillusion.com/uhdtv.html

    各种显示器

    https://luminous-landscape.com/whats-a-stop-a-quick-look/

    stop

     荷花。。。。

     

     

     

     这张也好美

    这里有个容易错的地方

    各个空间之间是用matrix 来转来转去的

    但hdr到ldr是 s型的 matrix转不出来 是非线性的变换 对不同区域 mid highlight dark 转的比例不一样 所以是不能用matrix的

    gamma的encode decode用的是这套理论的TF 分段函数 也不是matrix做的 近0处线性偏移处理 为了模拟光污染。。

    为什么 luminance =rgb的加权

    因为人眼三种感受器 总能量是这三种cell对光谱的三种stimulus的加权,而这些颜色空间都是为了quantify这件事的

  • 相关阅读:
    java面向对象
    Mysql 用户管理
    Mysql备份数据库
    Java方法&面向对象习题
    Mysql 用户管理
    java 方法笔记
    事物与存储过程
    多表操作
    视图 sql语句
    mongodb
  • 原文地址:https://www.cnblogs.com/minggoddess/p/13171628.html
Copyright © 2011-2022 走看看