UE4自动曝光控制是默认开启的,但会对一些用户的工作造成困扰。所以在虚幻引擎4.25中,官方对自动曝光做了很大的改变。现在一起来看看具体有哪些改变吧!
直方图算法和基本算法
直方图算法和基本算法以前的工作方式:
● 基本算法使用场景亮度对数平均值来确定测量的曝光度。
● 直方图算法不使用整个场景,而是会丢弃高于或低于直方图目标范围的像素。这种方法采用剩余像素的亮度对数平均值来确定目标曝光。
这些算法会根据后期处理体积的曝光设置提供不同的结果。为了让这两种算法以符合预期且直观的方式达到最佳表现,虚幻引擎4.25制定了两条规则:
● 灰色应该是灰色:如果用均匀的光照(或一个0.18cd/m^2的自发光表面)照亮一张18%的灰色卡,那么屏幕上的目标颜色就应该是0.18。
● 全直方图应该与基本算法匹配:如果将直方图的范围下限和上限设置为0–100%,那么它看起来应该和基本曝光算法的结果一样。
不太清楚?可以看一下下面的这个示例:
在4.24版中,如果先设置一个场景,其中有一个测量值为0.18cd/m^2的表面,并将直方图范围设置为1–99%,那么我们会在关卡视口中得到下列结果:
(左)直方图模式(RGB 254),UE4.24;(右)基本模式(RGB111),UE4.24
直方图曝光算法收敛为接近白色(测量值是RGB254),而基本曝光算法收敛为灰色(测量值是RGB111),即伽马2.2空间中的16%灰。
在虚幻引擎4.25中,直方图和基本曝光模式都会收敛到灰色点。也就是说对于直方图模式,现在将直方图的平均值解译为灰色点。对于基本曝光模式,去除了校准常量。
下面就是这些自动曝光更改在4.25版中产生的结果:
(左)直方图模式(RGB116);(右)基本模式(RGB117),UE4.25
测量RGB值可发现,直方图模式和基本模式都收敛到了同样的中间灰色(忽略凑整误差造成的微小差异)。使用下列公式时,两者都在一个18%灰色值的范围内:
(0.18^(1.0/2.2))*255=116.95
如果你想让直方图趋向白色点,可以更改曝光补偿参数。
比例从1.2变为1.0
曝光值在虚幻引擎中解译为EV100。那么,什么是EV100?
给定一个以cd/m^2为单位的亮度值,该亮度值的EV100值通常按此公式计算:
EV100=log2(luminance/1.2)
对许多用户来说,这只会更加困惑,因为许多人喜欢在“无单位”环境中工作,其中0.18的自发光数值在屏幕上应该显示为0.18(考虑伽马校正)。在先前版本中,为了做到这一点,就必须使用不直观的曝光补偿值log2(1/1.2)=-0.263。
这个额外的偏差造成的困惑比它解决的还多,今后会默认去除它。但是如果需要,你也可以选择将它重新加进来。
1.2的物理基础
为什么在以前的虚幻引擎版本中,会在用于自动曝光的EV100公式中使用1.2这个数值呢?
这个公式是ISO标准:12232:2019定义的,使用这个标准作为摄像机的物理基础。在真实世界中,镜头不是完美无瑕的,并不是所有射进镜头的光线都会照到传感器上。大多数应用程序假设镜头的透射率为0.65,也就是说,进入镜头的光线有65%会照到传感器上,其余35%由于吸收、相互反射和渐晕而损失了。
按照这一ISO标准,在ISO100的感光度下,镜头会在数值达到0.78/q时饱和(其中q是镜头的透射率)。既然大多数应用程序使用q=0.65。那么我们就得到了以下结果:
0.78/0.65 =1.2
但是,虚幻引擎的虚拟镜头实际上不会有那样的表现,因为它不会由于相互反射或吸收而损失光线。所以官方决定使q成为用户定义的变量,可以通过r.EyeAdaptation.LensAttenutation来控制。
默认情况下,虚幻引擎的镜头衰减设置为0.78,使UE4的光照成为无单位的。如果你想保持以前的1.2比例,可以将镜头衰减变量设置为以前的隐含值0.65。
虚幻引擎4.25自动曝光还有一些新的改变哦,这些改变将会改进美术师和设计师的工作流程并提高直观性。