一、UE4光照图介绍
UE4的光照图分为低质量(LQ)和高质量(HQ)两种类型,引擎默认的,把HQ的光照图适用于PC/主机平台的静态光照,而LQ的光照图则用于移动平台。相比LQ形式,HQ光照图提供了更好的光照质量、更平滑的明暗交界过渡,但同时也会耗费更多的内存和Shader指令数。
UE4的高低两种质量的光照图均存储了以下三种信息:照明颜色、照明亮度、入射光线的簇的最大贡献方向,其在存储格式、编码方式上的不同决定了其质量上的差别。
1.低质量光照图(LQ)
. 使用24位的RGB8格式的文件存储光照信息,默认的,采用平台相关的压缩方式对光照图进行压缩(如ETC2,ASTC)以降低光照图的存储空间、内存占用和渲染时占用的GPU带宽。
. 光照信息分为上下两部分,上半部分存储的是线性空间的光照颜色和亮度的预乘信息,下半部分存储是入射光照的最大贡献方向
LQ光照图如下图所示,红框部分存储的就是入射光线的最大贡献方向
![4e9d6de4a31e71e3c28a6fe34df656bf.png](https://i-blog.csdnimg.cn/blog_migrate/92f58f98c49ac31c383de8a166b70623.jpeg)
2.高质量光照图(HQ)
. 使用32位的RGBA8格式的文件存储HQ质量的光照图,同样的,采用平台相关的压缩方式对光照图进行压缩(如ETC2,ASTC),但即使同样ETC2方式进行压缩,HQ的的光照图由于多一个Alpha通道信息,同样尺寸的光照图,其大小会是LQ贴图大小的2倍。
光照图的RGB通道上下两个分区包含的信息和低质量光照图类似,上半部分存储的是光照的颜色信息(和LQ不同,它不包含亮度信息且是在gamma空间),下半部分存储的是入射光线的最大贡献方向。
光照图的A通道存储的是光照图的亮度信息,同样它分为上下两个部分,上半部分表示的是光照亮度的整数部分,下半部分表示的是亮度信息的小数部分。
HQ光照图示例的RGB和Alpha部分如下图所示:
![5822de0b0f8bd1ccdc183a0bc97ad81d.png](https://i-blog.csdnimg.cn/blog_migrate/fa82bca53bdc2dbc525d93be5745f1a2.jpeg)
![61f625518ff7aa6c2fd5b57925566671.png](https://i-blog.csdnimg.cn/blog_migrate/6a834a4c7aa0eca45d92519fe3b0ea8d.jpeg)
可以看到HQ和LQ的光照图中,RGB通道的下半部分存储的方向信息部分基本一致(实际上略有不同,下面会有具体的分析),但上半部分因为颜色空间的不同,同时LQ的颜色又预乘了亮度信息,从而明显的比HQ图要暗很多。
二.光照图的编码方式
由于光照亮度的生成时其亮度范围远大于1的浮点数区间,故其最好的存储方式应当是浮点纹理,比如通用的exr格式。exr的缺点是更大的存储、内存和渲染时的带宽占用,同时有多平台兼容性问题,故目前主流的商业引擎或各大厂的自研引擎,其在移动端的光照图也大都使用RGB8或RGBA8图进行存储。
把亮度数据从浮