[gdc17]寒霜引擎的HDR渲染探索

这里写图片描述
https://www.ea.com/frostbite/news/high-dynamic-range-color-grading-and-display-in-frostbite
gdc17上面,dice带来的关于HDR渲染的一些探索,尤其是建立的适用sdr和hdr输出设备的管线,值得我们借鉴。

这篇文章对于其他的开发者来说可以直接使用的东西偏少,但是其中的很多探索依旧是颇有收获的。
将近100页的ppt。。。

HDR 电视/video
这里促使dice进一步探索一个比较直接的原因,就是现在正在热起来的HDR电视和video。
hdr-high dynamic range,带来更好的亮度和色域,让电视&显示器更真实;
他们一般输出的格式是:

  • hdr10
  • dolby vision==这其实是一个dolby的品牌,同时也是一个hdr格式

简言之,不像之前就是一个8bit的输出格式,像hdr10,这些在输出的时候,格式就是不一样,相应的,游戏引擎也要做相应的变化。

传统HDR管线的问题
这里写图片描述
这个是frostbite(也是大部分游戏引擎)使用的管线。
frostbite一般使用filmic tonemapping,自己有做一些修改,美术可以自己选择。
color grading使用的是32x32x32分辨率的。
它有一些问题:
- tonemapping都是针对亮度做tonemap,是一个1d的operator作用在rgb的三个颜色上,这样对于比较亮的颜色就有一个色相偏移(hue shift)
- 大家使用不同的tonemapping operator,然后导致color grading lut不能重用

HDR pipeline
这个是frostbite的hdr pipeline
这里写图片描述

HDR grading
上面图里面我们可以看到color grading部分已经是在HDR上面做了;
frostbite使用的格式是33x33x33 10bit的LUT;
这里写图片描述
这个colorgrading调色使用的是davinci resolve,一款专门为好莱坞电影调色使用的。

这里因为已经不是HDRtoLDR的tonemapping了,所以就叫display mapping,这个是在ICtCp空间里面工作(有dolby开发的格式)的

hue shift处理
之前说了tonemapping是一个1d curve,然后会在比较亮的地方把颜色弄偏移,比如一个
这里写图片描述
这个红色部分亮了之后会变黄。
如何保持hue不要偏移呢?
本身display mapping就是一个能够保持hue的,所以问题就不大;
但是原先在做特效这种东西的时候,就是按照亮了之后会有hue shift来做的,所以现在又不对了。
这里写图片描述
这时候又引入了一个black body simulation的技术,其实也是我们熟知的不同温度不通颜色(蓝火比红火热的这种)
特效在做的时候使用温度来做,然后再映射到对应颜色,在不同情况下在做精调;
然而。。。
最后美术表示还是有hue shift比较好,所以最后的方案是美术可以选择有hue shift和没有。
嗯。。。不管怎么说,这也是一个一般大家不太管的点,dice也做了相应的探索了。。

猜你喜欢

转载自blog.csdn.net/ccanan/article/details/78148891
GDC
HDR