Unity3D:光照贴图-技术信息

推荐:将NSDT产经编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

光照贴图:技术信息

Unity 可存储采用不同压缩和编码方案的光照贴图,具体取决于目标平台以及 Lighting 窗口中的压缩设置。

编码方案

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

  • RGBM 编码。RGBM 编码将颜色存储在 RGB 通道中,将乘数 (M) 存储在 Alpha 通道中。在线性空间中,RGBM 光照贴图的范围是 0 到 34.49(52.2),而在伽马空间中,范围是 0 到 5。
  • 双低动态范围 (dLDR) 编码。只需直接将 [0, 2] 范围映射到 [0, 1],即可在移动平台上使用 dLDR 编码。值高于 2 的烘焙光源强度将被钳制。编码值的计算方法是:光照贴图纹理的值乘以 2(如果使用伽马空间),或乘以 4.59482(22.2)(如果使用线性空间)。某些平台将光照贴图存储为 dLDR,这是因为在使用 RGBM 时,这些平台的硬件压缩会产生外观不佳的瑕疵。

使用线性颜色空间时,光照贴图纹理将标记为 sRGB,着色器使用的最终值(采样和解码后)将位于线性颜色空间中。使用伽马颜色空间时,最终值将在伽马颜色空间中。

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

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

HDR lightmap support

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

选择“高质量”将启用 HDR 光照贴图支持,而“正常质量”将切换到使用 RGBM 编码。低质量将在移动平台上切换到 dLDR 编码,在其他平台上它相当于正常质量

在桌面平台和游戏主机平台上,Lighting 窗口中启用了光照贴图 Compression 时,将使用 BC6H 压缩格式来压缩光照贴图。对于移动平台,Unity 根据下表选择 HDR 格式。

Advantages of High Quality (BC6H) lightmaps

  • HDR 光照贴图不使用任何编码方案来编码光照贴图值,因此支持的范围仅受到 16 位浮点纹理格式的限制(范围从 0 到 65504)。
  • BC6H 格式质量优于 DXT5 + RGBM 格式编码,并且不会产生 RGBM 编码所具有的任何色带瑕疵。
  • 需要对 HDR 光照贴图进行采样的着色器是一些较短的 ALU 指令,因为不需要对采样值进行解码。
  • BC6H 格式与 DXT5 具有相同的 GPU 内存要求。

以下列表列出了每个目标平台的编码方案及其纹理压缩格式:

目标平台编码压缩 - 大小(每像素位数)
独立平台(PC、Mac 和 Linux)RGBM / HDRDXT5 / BC6H - 8 bpp
WebGL 1.0 / 2.0RGBMDXT5 - 8 bpp
iOS ASTC (1)dLDR / RGBM / HDRASTC - 3.56 bpp / ASTC - 3.56 bpp / RGB9E5 - 32 bpp
iOS PVRTCdLDR / RGBM / HDRPVRTC RGB - 4 bpp / ETC2 RGBA - 8 bpp / RGB9E5 - 32 bpp
tvOSdLDR / RGBM / HDRASTC - 3.56 bpp / ASTC - 3.56 bpp / RGB9E5 - 32 bpp
Android ASTC (2)dLDR / RGBM / HDRASTC - 3.56 bpp / ASTC - 3.56 bpp / ASTC HDR - 3.56 bpp
Android ETC2dLDR / RGBM / HDRETC2 RGB - 4 bpp / ETC2 RGBA - 8 bpp / ASTC HDR - 3.56 bpp
Android ETCdLDR / RGBM / HDRETC1 RGB - 4 bpp / ETC2 RGBA - 8 bpp / ASTC HDR - 3.56 bpp

[1] iOS 上用于光照贴图的纹理压缩格式取决于播放器设置中的纹理压缩格式设置。

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

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

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

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

另请参阅:

  • 纹理导入器覆盖
  • 纹理类型
  • 全局光照
  • 纹理类型

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:环境光遮挡 (mvrlink.com)

下一篇:Unity3D:光照贴图和着色器 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号