HDR全称Hight Dynamic Range
使用场景
一般是与线性色彩空间结合使用,保持色彩鲜艳同时保证准确性
也会和后处理Bloom(泛光)一同使用,保证泛光后颜色色值高于原本光域
LDR(低动态范围)
在标准渲染中,像素的红色、绿色和蓝色值均使用一个 0 到 1 范围内的 8 位值进行存储,其中 0 表示零强度,1 表示显示设备的最大强度。这一有限的数值范围无法准确反映我们在现实生活中对光的感知方式,并且当存在非常亮或非常暗的元素时,会导致图像不真实。
HDR(高动态范围)
在 Unity 中,可以将 HDR 图像用于内部渲染计算。此功能称为 HDR 渲染。启用 HDR 渲染后,Unity 会将场景渲染到 HDR 图像缓冲区,并使用该 HDR 图像执行渲染操作,例如后期处理效果。这意味着使用实际值执行计算,因此可能会产生更逼真的效果。
在某些兼容平台上,Unity 支持将该 HDR 图像发送到显示设备。此功能称为 HDR 输出。
Unity中HDR模式
- FP16模式是ARGBHalf,每个通道16bit,带Alpha通道。
- R11G11B10模式一个像素32bit,R11bit,G11bit,B10bit,不带Alpha通道。
使用 HDR 的优点
- 在高强度区域不会丢失颜色
- 更好地支持泛光和发光效果
- 减少低频光照区域的条带
使用 HDR 的缺点
- VRAM 使用量增加
- 色调映射(如果使用)产生额外的计算开销
- 硬件抗锯齿不兼容 HDR 渲染
注意事项
- 前向渲染:在前向渲染模式下,仅当您具有后期处理效果时才支持 HDR。这是出于性能考虑的原因。如果您没有后期处理效果,则不存在色调映射,并且将发生强度截断。在这种情况下,场景将直接渲染到不支持 HDR 的后备缓冲区。
- 延迟渲染:在 HDR 模式下,光照缓冲区也被分配为浮点缓冲区。这样可减少光照缓冲区中的条带。即使没有后期处理效果,延迟渲染也支持 HDR。
- 脚本:可向后期处理效果脚本中添加 ImageEffectTransformsToLDR 属性以表明目标缓冲区应在 LDR 中,而非在 HDR 中。从本质上讲,这意味着脚本可以在应用其 HDR 后期处理效果后自动转换为 LDR。有关更多详细信息,请参阅编写后期处理效果。
如何开启HDR
PC平台自动开启,在Android和iOS平台需要在Graphics Setting的TierSettings里手动开启Use HDR
当保证设置界面开启Use HDR后,在相机参数里设置Use Graphics Settings
在内置渲染管线中使用 HDR 渲染
在前向渲染路径中,仅当摄像机上设置了后期处理效果时摄像机才支持 HDR。这是出于性能考虑的原因。如果摄像机没有后期处理效果,则场景将直接渲染到不支持 HDR 的后缓冲区。
在延迟着色渲染路径中,为摄像机启用 HDR 时,光照缓冲区也被指定为浮点缓冲区。这样可减少光照缓冲区中的条带。
渲染管线兼容性
渲染管线 | HDR 渲染 | HDR 输出 |
---|---|---|
内置渲染管线 | 是 在 Inspector 中或使用 Camera.allowHDR API 来启用每个摄像机的 HDR 渲染。 在 Graphics 设置窗口中为每个层启用 HDR 渲染并配置 HDR 缓冲区的格式。 | 是 使用 HDROutputSettings API 可配置 HDR 输出选项。 有关更多详细信息,请参阅特定于平台的文档。 |
通用渲染管线 (URP) | 是 在 Inspector 中或使用 Camera.allowHDR API 来启用每个摄像机的 HDR 渲染。 使用通用渲染管线资源 (Universal Render Pipeline Asset) 为所有摄像机启用 HDR 渲染。 | 正在研究中 开发团队正在研究如何实现此功能。尚无计划的发布日期。 |
高清渲染管线 (HDRP) | 是 默认情况下,所有摄像机都启用 HDR 渲染。无法禁用。 | 正在研究中 开发团队正在研究如何实现此功能。尚无计划的发布日期。 |
注:HDR与硬件级抗锯齿(MSAA)不兼容。若要使用HDR,一般要用后处理级AA了~
HDR中的坑
https://blog.uwa4d.com/archives/2154.html
https://zhuanlan.zhihu.com/p/70407560
https://answer.uwa4d.com/question/5e68b6374149350dbc5aec54
- 本文固定链接: http://www.u3d8.com/?p=2560
- 转载请注明: 网虫虫 在 u3d8.com 发表过