Unity HDR (高动态范围 )
什么是高动态范围 Hight Dynamic Range
除了色彩空间,相机的“动态范围(dynamic range)”需要配置。本质上,这定义了场景摄像机可捕捉到的最亮度或最深色。可以从Camera的Inspector中的启用HDR。
HDR适合与线性色彩空间(Linear Color Space)结合使用,以便在处理非常鲜艳的色彩时保持准确性。
默认情况下,Unity中的摄像机使用低动态范围(Low Dynamic Rangle - LDR)。每个颜色数据使用8bit存储颜色 - 红色,绿色和蓝色。8位是指“精度”,意味着彩色数据存储8个1或0的的值,为每个颜色数据提供256种可能的组合。这样我们能够引用超过1600万种颜色,从黑色到白色的颜色范围。在现实世界中,现实世界的颜色远远超出了1600万这个范围。Unity能够处理非常明亮的灯光,产生的颜色超出LDR设备(如电脑屏幕)的颜色。尽管在输出设备中存在这种潜在的限制,但是在许多应用中,这些极值的光仍然对我们有用。通过在场景相机上启用HDR,将会以更高的精度去存储颜色(使用浮点表示)。HDR使我们能够在我们的场景和阴影区域之间保持亮度的巨大差异,例如户外照明。我们还可以通过在场景中对这些鲜艳的颜色进行应用应用,创造出“绽放”或发光效果。这样的特殊效果,可以增加场景的现实感。
HDR优点
- 在高强度区域不会丢失颜色
- 更好地支持泛光和发光效果
- 减少低频光照区域的条带
HDR缺点
- 使用浮点渲染纹理(渲染速度较慢,需要更多 VRAM)
- 不支持硬件抗锯齿(但您可以使用抗锯齿后期处理效果来平滑边缘)
- 并非所有硬件都支持
注意事项
- 前向渲染:在前向渲染模式下,仅当您具有后期处理效果时才支持 HDR。这是出于性能考虑的原因。如果您没有后期处理效果,则不存在色调映射,并且将发生强度截断。在这种情况下,场景将直接渲染到不支持 HDR 的后备缓冲区。
- 延迟渲染:在 HDR 模式下,光照缓冲区也被分配为浮点缓冲区。这样可减少光照缓冲区中的条带。即使没有后期处理效果,延迟渲染也支持 HDR。
- 脚本:可向后期处理效果脚本中添加 ImageEffectTransformsToLDR 属性以表明目标缓冲区应在 LDR 中,而非在 HDR 中。从本质上讲,这意味着脚本可以在应用其 HDR 后期处理效果后自动转换为 LDR。有关更多详细信息,请参阅编写后期处理效果。
坑
https://zhuanlan.zhihu.com/p/70407560
https://blog.uwa4d.com/archives/2154.html
参考: