曝光 (Exposure)
要使用基于物理的光照和材质,需要正确设置场景曝光。高清渲染管线 (High Definition Render Pipeline, HDRP) 包括几种适合大多数用例的曝光计算方法。HDRP 以 EV100 表示其使用的所有曝光值。
使用曝光
曝光使用体积 (Volume) 框架,因此若要启用和修改曝光属性,必须将曝光覆盖添加到场景中的体积。要向体积添加曝光,请执行以下操作:
- 在 Scene 视图或 Hierarchy 视图中,选择一个包含 Volume 组件的游戏对象以在 Inspector 中查看该游戏对象。
- 在 Inspector 中,找到 Add Override,然后单击 Exposure。HDRP 现在会将曝光校正应用于此体积所影响的任何摄像机。
API
要在运行时访问和控制此覆盖,请使用体积脚本 API。由于体积系统的工作原理,可以使用与标准 Unity 组件不同的方式来编辑属性。也需要注意其他细微差别,例如每个属性都有一个 overrideState。这个参数向体积系统指示是使用你设置的属性值,还是使用存储在体积配置文件中的默认值。有关如何正确使用 API 的信息,请参阅体积脚本 API。
属性
要编辑任何 Volume 组件覆盖中的属性,请启用属性左侧的复选框。这也告诉 HDRP 使用您为 Volume 组件指定的属性值而不是使用默认值。如果禁用该复选框,HDRP 将忽略您设置的属性,并改用该属性在 Volume 组件中的默认值。
属性 | 描述 |
---|---|
Mode | 使用下拉选单选择 HDRP 用于处理曝光的方法: • Fixed:允许手动设置场景曝光。 • Automatic:根据屏幕上的内容自动设置曝光。 • Automatic Histogram:使用直方图控制来扩展自动曝光。 • Curve Mapping:将当前场景曝光映射到自定义曲线。 • Use Physical Camera:使用当前物理摄像机设置来设置场景曝光。 |
Fixed
这是用于计算曝光的最简单且最不灵活的方法,但是如果场景具有相对均匀的曝光或想要拍摄静态区域的图像时,它非常有用。还可以使用局部体积在场景中的各种固定曝光值之间进行混合。
属性
属性 | 描述 |
---|---|
Fixed Exposure | 设置此体积影响的摄像机的曝光值。 |
Automatic
人眼在非常黑暗和非常明亮的区域中都能感知光线。然而,在任何单一时刻,眼睛只能感觉到总体范围的大约百万分之一的对比度。通过调整和重新定义黑色,眼睛可以良好感知多个亮度级别。
Automatic 模式根据屏幕上的亮度级别范围来动态调整曝光。这种调整会逐渐进行,也就是说,当从黑暗的区域中出来时,用户可能会因明亮的室外光线而短暂感到目眩。同样,当从明亮的区域移动到黑暗的区域时,摄像机需要一些时间适应。
属性
属性 | 描述 |
---|---|
Metering Mode | 使用下拉选单选择 HDRP 用于过滤亮度源的计量方法。如需了解有哪些可用的 Metering Mode,请参阅“使用 Automatic 模式”部分。 |
Luminance Source | 使用下拉选单设置 HDRP 用于计算当前场景曝光的亮度源。HDRP 目前不支持 Lighting Buffer 选项。 |
Compensation | 设置摄像机用于补偿自动计算的曝光值的值。如果要使场景过度曝光或曝光不足,这很有用。 |
Limit Min | 设置场景曝光可以设置的最小值。 |
Limit Max | 设置场景曝光可以设置的最大值。 |
Mode | 使用下拉选单选择在摄像机从暗到亮或从亮到暗时由 HDRP 用于更改曝光的方法: • Progressive:曝光在 Speed Dark to Light 和 Speed Light to Dark 属性字段定义的时间段内发生变化。 • Fixed:曝光会立即改变。注意:Scene 视图使用 Fixed 选项。 |
Speed Dark to Light | 设置摄像机从暗区移动到亮区时曝光变化的速度。 仅当 Mode 设置为 Progressive 时,才显示此属性。 |
Speed Light to Dark | 设置摄像机从亮区移动到暗区时曝光变化的速度。 仅当 Mode 设置为 Progressive 时,才显示此属性。 |
Target Mid Gray | 设置自动曝光使用的所需中间灰度级(即,自动曝光系统将平均场景亮度映射到的灰度值)。 请注意,HDRP 中使用的镜头模型不是完美镜头,因此它无法精确地映射到选定值。 |
自动直方图
自动直方图 (Automatic Histogram) 是自动模式的扩展。为了获得更稳定的曝光结果,此模式将计算图像的直方图,从而可以从曝光计算中排除图像的某些部分。这可用于丢弃屏幕上极亮或极暗的区域。
为了控制此过程,除了自动模式的属性外,该模式还包括以下属性:
属性
属性 | 描述 |
---|---|
Histogram Percentages | 使用此字段可选择要用于自动曝光计算的直方图范围。此字段的值为百分数。这意味着,例如,如果将低百分位数设置为 X,在一个像素的强度低于屏幕上所有像素中的 (100-X)% 的情况下,HDRP 将从曝光计算中丢弃该像素。同样,如果将高百分位数设置为 Y,则意味着在一个像素的强度高于 Y% 的情况下,HDRP 会从曝光计算中丢弃该像素。 这使得曝光计算可以丢弃阴影和高亮区域中不必要的边缘值。 |
Use Curve Remapping | 指定是否在此曝光模式之上应用曲线映射。有关曲线映射属性的信息,请参阅[曲线映射](#Curve Mapping)部分。 |
使用 Automatic 模式
要配置 Automatic 模式,请选择 Metering Mode。这会告知摄像机如何测量当前的场景曝光。可以将 Metering Mode 设置为:
- Average:摄像机使用整个亮度缓冲区来测量曝光。
- Spot:摄像机仅使用缓冲区的中心来测量曝光。如果只想根据屏幕中央的内容进行曝光,这很有用。
- Center Weighted:摄像机将一个权重应用于缓冲区中的每个像素,然后使用它们来测量曝光。中心的像素具有最大权重,屏幕边界处的像素具有最小权重,而其间的像素越接近屏幕边界,权重将逐渐降低。
Mask Weighted:摄像机将一个权重应用于缓冲区中的每个像素,然后使用权重来测量曝光。为了指定权重,此方法使用在 Weight Texture Mask 字段中设置的纹理。请注意,如果未提供纹理,此计量模式等效于 Average。
Procedural Mask:摄像机将一个权重应用于缓冲区中的每个像素,然后使用权重来测量曝光。权重是使用遮罩生成的,而遮罩是采用以下参数由程序生成的:
属性 描述 Center Around Exposure target 程序化遮罩是否将围绕在摄像机中设置为曝光目标 (Exposure Target) 的游戏对象的中心。 Center 设置程序化计量遮罩的中心([0,0] 表示屏幕的左下角,[1,1] 表示屏幕的右上角)。仅当禁用 Center Around Exposure target 时可用。 Offset 设置遮罩居中位置的偏移。仅当启用 Center Around Exposure target 时可用。 Radii 以一半屏幕的分数形式(如 0.5 表示在两个方向上拉伸一半屏幕的遮罩)设置程序化遮罩的半径(水平和垂直)。 Softness 设置遮罩的柔和度。该值越高,对遮罩边缘像素的影响越小。 Mask Min Intensity 低于此阈值的所有像素(以 EV100 为单位)将在计量遮罩中被分配权重 0。 Mask Max Intensity 高于此阈值的所有像素(以 EV100 为单位)将在计量遮罩中被分配权重 0。
接下来,分别设置 Limit Min 和 Limit Max 来定义最小和最大曝光值。在场景的亮区和暗区之间移动并更改每个属性,直到找到场景的完美值。
现在使用 Compensation 属性使场景过度曝光或曝光不足。这与大多数摄像机上的曝光补偿方式非常类似。
最后,可以调整适应速度。这可以控制曝光适应曝光变化的速度。人眼对黑暗的适应速度要慢于对明亮的适应速度,因此 Speed Light to Dark 的值应小于 Speed Dark to Light 的值。
Curve Mapping
Curve Mapping 模式是 Automatic 模式的变体。您可以操纵曲线,而不是设置限制,其中的 X 轴表示当前场景曝光,Y 轴表示所需的曝光。这可让您以更精确和受控的方式一次性为所有光照条件设置曝光。
属性
属性 | 描述 |
---|---|
Curve Map | 使用此曲线可以将场景曝光(X 轴)重新映射到所需的曝光(Y 轴)。 |
Use Physical Camera
此模式主要依赖于摄像机的物理设置 (Physical Settings)。此模式显示的唯一属性用于使场景过度曝光或曝光不足。
属性
属性 | 描述 |
---|---|
Compensation | 设置摄像机用于补偿自动计算的曝光值的值。如果要使场景过度曝光或曝光不足,这很有用。这与大多数摄像机上的曝光补偿方式很类似。 |
曝光调试模式
HDRP 提供了几种调试模式来帮助为场景设置正确的曝光。可以在 Debug 窗口中激活这些模式。
场景 EV100 值
此调试模式在整个屏幕上显示场景亮度(转换为 EV100 单位)的热图。此模式可用来确定屏幕上的强度分布,有助于确定是否设置了正确的曝光限值。这也是一个有关场景中亮度分布情况的信息性视图。
此外,此调试视图还会显示位于屏幕中心的像素的数值。它还在屏幕底部的热图指示标记中显示该值,以便显示其相对于整个范围的位置。
直方图视图
在 Automatic Histogram 模式中,如果没有参考,可能很难设置亮度百分比上限和下限。为帮助解决此问题,HDRP 包含直方图调试视图。该视图可以显示场景亮度分布概况。
此调试模式在两个位置显示信息:屏幕上以及屏幕底部的直方图上。这两种方法都会显示曝光算法接受还是排除特定的亮度值。为了在屏幕上执行此操作,调试模式会用特定颜色来覆盖已排除的像素。直方图绘制的条形会使用相同颜色来显示亮度值的范围及其有效性。这些颜色对应于:
- 蓝色:亮度值低于百分位数下限,被排除。
- 红色:亮度值高于百分位数上限,被排除。
- 白色:亮度值在百分位数上限与百分位数下限之间,被接受。
在直方图的底部,黄色箭头指向目标曝光,而灰色箭头指向当前曝光。
如果启用 Show Tonemap Curve 选项,调试视图会将色调映射曲线覆盖到直方图视图。
默认情况下,x 轴上的值是固定的。但是,也可以使直方图固定在当前曝光附近。为此,请启用 Center Around Exposure 选项。这可用于固定色调映射曲线覆盖层以及便于更清晰地查看该曲线下的场景分布情况。
计量加权
计量加权 (Metering Weighted) 调试视图可以在 HDRP 使用计量遮罩进行加权后的场景外观图片旁边显示场景。这对于设置程序化计量遮罩或确定正确的纹理遮罩特别有用。
最终图像直方图
在应用了所有后期处理(包括色调映射和伽马校正)之后,最终图像直方图调试视图在代表图像直方图的覆盖层旁边显示场景。该直方图具有 256 个区间 (bin) 以映射到 8 位图像值。 该视图可显示亮度直方图或分别表示的 RGB 通道。