两个比较火的方向高动态和广色域。
1 高动态HDR
图片的HDR
两个阵营的动态:
IOS的WWDC放出的叫EDR。手机拍出来的格式为HEIF(HEIC)。IOS是良心,全部10bit的HDR图片了。截图、录制、投影、拍照全生态都支持HDR了。
android 谷歌是Ultra HDR。gainmap+SDR主图 兼容老设备只用SDR主图,新的设备比如旗舰手机采用二者叠加后的结果。
NB点的还能在色域和黑白彩色之间组合出更多的规格出来。
HEIF规格NB之处在压缩比,jpg的一半~尤其现在云空间全部收费,2K屏的手机拍出效果基本上4K的了,一张图片jpg存储都16M了。
视频的HDR
规格两种:杜比是老美推的,HDR-vivid是国产的规格。
腾讯充个会员,片源很多。1080P,4K。目前8K没见过。
2 色域
基于RGB三基色空间,sRGB、Display P3、BT2020
京东搜素显示器,常见参数:99%的RGB,102%的RGB,98% DCI-P3
3 光&电信号|线性&非线性空间
但是人眼对亮度感知不是线性的,人眼看到的是光,Nit为单位,一般显示器多少多少Nit,越亮肯定越好的。华为设备这方面做得厉害,我的mate 70 pro真的是清晰透亮。
计算机要处理信号,只能存储电信号(离散化)。划分成不同delta的:
- 8bit是0-255,
- 10bit是0-1023,
- 16bit类似。
光信号和电信号相互转化就是EOTF和OETF,TF,transfer function。最简单的是gamma矫正。
4 浮点存储
Vulkan中支持FP16,FP32的纹理、Image、RenderTarget等。他们是真正的浮点,支持负数,支持大于1的存储。
搞大模型训练也一样的道理,
- 训练要求精度高,可以用浮点,FP32,FP64,
- 推理要求速度高,可以用定点,
5 定点存储
定点效率高,GPU要存储,DDR格式越小越好。内部计算执行vertex shader和fragment shader的时候,内部计算一般用浮点。但是渲染会话结束,退出的时候GPU会转化成开发者设定的帧缓冲区格式:
- 565,
- 8888, P3和sRGB可以用RGBA8888存储,
- 1010102,
如果到HDR了一般得10bit,也就是1010102格式,缺点是丢失了alpha通道。
BT2020 可以10bit,或者12bit深度
这里说的渲染会话,可以理解成Vulkan中的RenderPass概念。