HDR 与 HDRI:高动态范围图像与环境贴图详解
什么是 HDR 和 HDRI
HDR(High Dynamic Range,高动态范围)指能够表示比标准图像更广泛亮度范围的技术。传统 LDR(低动态范围)图像每个通道通常为 8 位,最大亮度为 1(或 255)。HDR 图像使用浮点或更高位深存储,可以记录从最暗阴影到最亮高光的细节。HDRI(High Dynamic Range Image)即高动态范围图像,常用于环境贴图、光照探针等。
HDR 的优势
- **保留细节**:同时保留亮部和暗部细节,避免过曝和欠曝。
- **物理正确光照**:在渲染中,HDR 光照值可以超过 1,模拟真实光源强度。
- **后处理灵活性**:色调映射、曝光调整等可以在 HDR 缓冲上操作,避免颜色损失。
HDRI 环境贴图
HDRI 最常见的应用是作为环境贴图(Environment Map),用于基于图像的照明(IBL)。环境贴图是一张 360 度全景图像,记录场景周围的光照信息。在 PBR 渲染中,HDRI 为物体提供环境光照和反射,使其自然融入环境。
生成 HDRI
- **拍摄**:使用相机在不同曝光下拍摄同一场景,通过软件合成 HDR 全景图。
- **程序生成**:使用软件(如 Blender、Terragen)渲染天空和光照。
- **下载**:从 Poly Haven、HDRI Haven 等网站获取免费 HDRI。
使用 HDRI
在 Unity 中,将 HDRI 导入为 Cubemap 或 2D 纹理,设置天空盒材质。在 Unreal 中,使用 Sky Light 加载 HDRI。引擎会自动处理 IBL,为场景提供漫反射和镜面反射光照。
渲染管线中的 HDR
实时渲染通常使用 HDR 帧缓冲,流程包括:
- 渲染场景到 HDR 缓冲(浮点纹理)。
- 应用后处理(如色调映射、泛光)在 HDR 空间。
- 色调映射将 HDR 转换为 LDR。
- 伽马校正后输出到屏幕。
支持 HDR 的显示设备(如 HDR 电视、手机屏幕)可以直接显示 HDR 内容,但需要相应的色彩管理和元数据。
常见问题
HDR 和 HDRI 有什么区别?
HDR 是技术概念,表示高动态范围;HDRI 是具体的高动态范围图像文件,常用于环境贴图。
为什么渲染需要 HDR?
HDR 允许光照值超过 1,使光照计算物理正确,且后处理(如色调映射)不会丢失细节。
如何查看 HDRI 文件?
使用支持 HDR 的查看器,如 Photoshop、HDRView、或在线预览工具。注意普通显示器无法显示全部动态范围,需要色调映射。
移动端支持 HDR 渲染吗?
现代移动 GPU 支持浮点纹理,可以渲染 HDR,但需考虑带宽和性能,通常使用 R11G11B10 等压缩格式。
HDRI 可以用在非 PBR 渲染中吗?
可以,HDRI 作为环境贴图提供光照,即使非 PBR 着色器也可以采样环境贴图获得反射和漫反射。
常见问题
HDR 和 HDRI 有什么区别?
HDR 是技术概念,表示高动态范围;HDRI 是具体的高动态范围图像文件,常用于环境贴图。
为什么渲染需要 HDR?
HDR 允许光照值超过 1,使光照计算物理正确,且后处理不会丢失细节。
如何查看 HDRI 文件?
使用 Photoshop、HDRView 等支持 HDR 的查看器,需色调映射适应普通显示器。
移动端支持 HDR 渲染吗?
现代移动 GPU 支持浮点纹理,可以渲染 HDR,但需考虑带宽和性能,常用 R11G11B10 压缩格式。
HDRI 可以用在非 PBR 渲染中吗?
可以,HDRI 作为环境贴图提供光照,任何着色器都可以采样获得反射和漫反射。