tonemapping

 

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.

tonemapping

 

 

tonemapping

 

 

tonemapping

 

 

tonemapping

 

 

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

srg 和aces都  大约  是它的子集

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

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

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

 

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

tonemapping

 

 

tonemapping

 

 

tonemapping

 

 tonemapping

 

 ue的tonemap

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

 

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

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

 

按照unity来看

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

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

Rec709

Rec2020

 

 

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

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

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

估计各份文档都是这么说的。。所以当时没写错

 

tonemapping

上一篇:改变函数内this指向方法——call、apply、bind


下一篇:Android连载19-广播机制之网络状态显示