Version: 6000.3
语言: 中文
全局照明(GI)缓存
光探头数据格式

光照贴图数据格式

Unity 商店光照贴图一种预渲染的纹理,包含光源对场景中静态对象的效果。光照贴图覆盖在场景几何体之上以创建光照效果。更多信息
请参阅术语表
具有不同的压缩和编码方案,具体取决于目标平台和光照窗口中的压缩设置。

编码方案

当需要时,Unity 项目可以使用两种技术将烘焙的光强度范围编码为低动态范围纹理:

  • RGBM 编码。RGBM 编码在 RGB 通道中存储颜色,在 alpha 通道中存储乘数 (M)。RGBM光照贴图的范围从0到34.49(52.2)在线性空间中,在伽马空间中从 0 到 5。

  • 双低动态范围 (dLDR) 编码。dLDR 编码在移动平台上使用,只需将 [0, 2] 的范围映射到 [0, 1] 即可。将限制高于值 2 的烘焙光源强度。解码值的计算方法是在使用伽马空间时将光照贴图纹理中的值乘以 2,即 4.59482(22.2) 使用线性空间时。一些平台将光照贴图存储为 dLDR,因为它们的硬件压缩在使用 RGBM 时会产生外观不佳的伪影。

使用线性色彩空间时,光照贴图纹理被标记为 sRGB,而最终值由着色器在 GPU 上运行的程序。更多信息
请参阅术语表
(采样和解码后)将处于线性色彩空间中。使用 Gamma 色彩空间时,最终值将位于 Gamma 色彩空间中。

注意:使用编码时,存储在光照贴图(GPU纹理内存)中的值始终位于Gamma色彩空间中。

UnityCG.cginc 着色器包含文件中的 Decode Lightmap 着色器函数在从着色器中的光照贴图纹理读取值后处理光照贴图值的解码。

HDR光照贴图支持

您可以在 Windows、Mac、Linux、iOS、Apple tvOS 和 Android 上使用 HDR 光照贴图。要控制这些平台光照贴图的编码/压缩,请转到 编辑>项目设置(Project Settings) > 播放器(Player) > 其他设置(Other Settings) > 光照贴图编码(Lightmap Encoding) 。

选择“高质量”将启用HDR高动态范围
请参阅术语表
光照贴图支持,而 Normal Quality 将切换到使用 RGBM 编码。低质量将在移动平台上切换到 dLDR 编码,在其他平台上相当于正常质量

当光照贴图压缩一种存储数据的方法,可减少所需的存储空间量。请参阅纹理压缩动画压缩音频压缩构建压缩
请参阅术语表
启用,则光照贴图将在桌面和控制台平台上使用 BC6H 压缩格式进行压缩。对于移动平台,Unity 会根据下表选择 HDR 格式。

高质量(BC6H)光照贴图的优势

  • HDR光照贴图不使用任何编码方案来编码光照贴图值,因此支持的范围仅受16位浮点的限制纹理格式一种文件格式,用于在 3D 图形硬件(例如显卡或移动设备)实时渲染期间处理纹理。更多信息
    请参阅术语表
    从 0 到 65504。

  • BC6H 格式质量优于 DXT5 + RGBM 格式编码,并且不会产生 RGBM 编码所具有的任何色带伪影。

  • 需要对HDR光照贴图进行采样的着色器会缩短一些ALU指令,因为不需要解码采样值。

  • BC6H 格式具有与 DXT5 相同的 GPU 内存要求。

这是编码方案及其纹理压缩3D图形硬件要求将纹理压缩为专用格式,这些格式针对快速纹理采样进行了优化。更多信息
请参阅术语表
每个目标平台的格式:

目标平台 编码 压缩 - 大小(每像素位数)
独立(PC、Mac、Linux) RGBM / HDR DXT5 / BC6H - 8 桶/分
WebGL一种在 Web 浏览器中呈现 2D 和 3D 图形的 JavaScript API。Unity Web 构建选项允许 Unity 将内容发布为 JavaScript 程序,这些程序使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。更多信息
请参阅术语表
2.0
RGBM / RGBM / HDR DXT5 - 8 个基点
iOS ASTC (1) dLDR / RGBM / HDR ASTC - 3.56 bpp / ASTC - 3.56 bpp / RGB9E5 - 32 bpp
iOS PVRTC dLDR / RGBM / HDR PVRTC RGB - 4 bpp / ETC2 RGBA - 8 bpp / RGB9E5 - 32 bpp
tv作系统 dLDR / RGBM / HDR ASTC - 3.56 bpp / ASTC - 3.56 bpp / RGB9E5 - 32 bpp
安卓 ASTC (2) dLDR / RGBM / HDR ASTC - 3.56 bpp / ASTC - 3.56 bpp / ASTC HDR - 3.56 bpp
安卓 ETC2 dLDR / RGBM / HDR ETC2 RGB - 4 bpp / ETC2 RGBA - 8 bpp / ASTC HDR - 3.56 bpp
安卓等 dLDR / RGBM / HDR ETC1 RGB - 4 bpp / ETC2 RGBA - 8 bpp / ASTC HDR - 3.56 bpp

[1] iOS上用于光照贴图的纹理压缩格式取决于 播放器设置(Player Settings) 中的 纹理压缩格式(Texture compression format) 设置。PVRTC 格式已弃用。请改用 ASTC 或 ETC 格式。

[2] Android上用于光照贴图的纹理压缩格式取决于播放器设置构建设置。有关这些设置如何交互的更多详细信息,请参阅纹理压缩设置

预计算的实时全局光照(GI)

GI 系统的输入与输出具有不同的范围和编码。表面反照率是伽马空间中的 8 位无符号整数 RGB,发射是线性空间中的 16 位浮点 RGB。有关使用元通道提供自定义输入的建议,请参阅有关光照贴图和着色器的文档。

辐照度输出纹理使用 RGB9E5 共享指数浮点格式(如果图形硬件支持)或范围为 5 的 RGBM 作为回退存储。RGB9E5光照贴图的范围为[0,65408]。有关 RGB9E5 格式的详细信息,请参阅 Khronos.org:EXT_texture_shared_exponent

其他资源


  • 2019–04–26 页面已修订

  • Unity 2017.2 中新增的烘焙光照贴图NewIn20172

  • Unity 2017.3 中添加了 HDR 光照贴图支持 NewIn20173

  • Unity 2019.1 中添加了移动平台的光照贴图编码设置NewIn20191

  • 更新Android和iOS的光照贴图纹理压缩格式

全局照明(GI)缓存
光探头数据格式