UE4 光照技巧

发布时间 2023-10-27 20:43:56作者: 爱莉希雅

前言

从UE5转到UE4,发现没有了Lumen,对于光照的把控方面我就是个FW。Google关于场景光照设置的技巧,总结了一些常用的

Light Type

  • Directional Light
  • Sky Light(模拟天空的环境光照)
  • Point Light
  • Spot Light
  • Rect Light

Light mobility & Baked Lighting

Static

  • 静态光的位置、光强等都不可改变,只对mobility为static的对象生成阴影
  • 虽然静态光不能为动态对象生成阴影,但依然可以为动态对象提供光照
  • Baked:静态光烘培的光照和阴影都存储于light map

Stationary

  • 固定光的运行时位置不可改变,但亮度和颜色可变(仅影响直接光)
  • Baked:固定光的间接光、间接阴影都存储于light map;直接阴影存储于shadow map
  • 可以使用距离场阴影贴图生成直接阴影(需要启用"Generate Mesh Distance Fields")
  • 因为固定光的直接阴影存储于shadow map,且每个固定光仅仅使用shadow map的一个通道,所以一个物体最多受到四个固定光的照射,否则多出的会以动态形式实现
  • 可以使用Cascaded Shadow Map和distance field shadow降低消耗

Movable

  • 移动光有最强的灵活性,但也有最高的性能消耗(不烘培,主要取决于光源影响的网格体数量及其三角形数量)
  • 不能产生间接光,因此一般使用全局照明生成间接光
  • 视觉效果差,阴影边缘锐利
  • 可以使用Cascaded Shadow Map和distance field shadow降低消耗

Baked 优缺点

  • 优点
    • 优秀的运行期性能
    • 高质量的间接照明
  • 缺点
    • 占用运行期内存
    • 需要提供Lightmass的UV
    • 阴影精度以Lightmass的分辨率决定
    • 不能用于动态对象

动态照明优缺点

  • 优点
    • 阴影精度不受贴图分辨率决定
  • 缺点
    • 性能开销大:主要取决于光源影响的网格体数量及其三角形数量
    • 阴影距离受限
    • 间接光照不够优秀,需要依靠烘培间接照明弥补

Indirect light

Post Process Global illumination

  • 作用:控制Indirect light效果
    image-20231027140611371

Indirect Lighting Intensity(Static)

  • 作用:控制光源对间接照明的贡献程度

Directional Light

Source Angle

  • 作用:控制光源大小距离场阴影的边缘软度

Source Soft Angle

  • 作用:控制光源的柔和程度

Atmosphere Sun Light

  • 作用:sky atmosphere默认该Directional Light为太阳光,会根据Directional Light的角度调整天空颜色和太阳位置,且会给太阳增添日轮效果
    image-20231027145155600

Light Shafts Occlusion(遮挡法)

  • 作用:根据物体的深度创建mask,模糊光线,并将其作用于雾气和大气的遮罩(光束由雾气阴影生成)

    未启用:
    image-20231027155904475
    启用后:
    image-20231027155928181

  • 光束的强度只能和雾气/大气相同

Light Shafts Bloom(光晕法)

  • 作用:控制丁达尔效应的光散射现象——在world space的光源范围捕捉场景颜色(包括半透明和雾气散射),且从光源进行放射性模糊
    image-20231027143929705
    image-20231027144001066

  • 不受雾气密度限制

Sky Light

Source Type

  • SLS Caputured Scene:捕获场景的光照信息作为照明贴图
  • SLS Specified Cubemap:以指定的照明贴图作为光照计算

Num Sky Lighting Bounces

  • 作用:控制Sky Light的反弹次数
    image-20231027163010561
  • 一般控制在3-5次,多了变化也不大

Shadow

Cascade Shadow Map(Dynamic)

  • 作用:控制物体与摄像机的距离对阴影分辨率的影响,越远分辨率越低。当超出设定的最大距离时,会将其重新混合到静态烘培阴影
    image-20231027153936454

Far Shadow(Dynamic)

  • 作用:Far Shadow可以突破CSM的阴影显示限制范围,用于显示远处的阴影
  • 启用
    1. 在定向光面板增大"Far Shadow Cascade Count"
    2. 在需要启用Far Shadow的对象上启用"Far Shadow"

Distance Field Shadow(Static)

  • 作用:相对于SCM性能更优,且Distance Field Shadow可以实现更便宜的软阴影。但因为距离场的数据是预计算的,所以不支持动态效果
  • 阴影的软硬程度通过"Source Angle"控制

Shadow Amount

  • 作用:控制光源投射阴影的强度

Shadow Resolution Scale(Dynamic)

  • 作用:改变动态阴影贴图的分辨率

Shadow Filter Sharpen

  • 作用:控制动态阴影边缘的锐化程度

Cast Static Shadow

  • 作用:控制是否从静态对象投射阴影

Cast Dynamic Shadow

  • 作用:控制是否从动态对象投射阴影

Cast Deep Shadow(Dynamic)

  • 作用:是否投射高质量的毛发阴影

Fog

Exponential Height Fog

  • 作用:为场景增添高度感指数感

  • Volumetric Fog:擅长实现中近距离的体积光

    • 启用

      先启用"volumetric fog"
      image-20231027190124783

      在需要添加体积雾的光源上开启"Cast Volumetric Shadow"
      image-20231027190246678

Volumetric Scattering Intensity(Dynamic)

  • 作用:控制光源在体积雾中的体积光散射程度

Cast Volumetric Shadow(Dynamic)

  • 作用:控制是否在体积雾中投射动态体积阴影

Scattering Distribution

  • 作用:控制光线在各个方向的散射量

Albedo

  • 作用:控制参与媒介的总体反光度
  • 云、雾及基于水粒子的水雾的反射率(Albedo)都接近1

Emissive

  • 作用:控制指数高度雾散射的光线密度

View Distance

  • 作用:设定一定距离,大于此距离开始计算体积雾

Extinction Scale

  • 作用:高度雾粒子消光量

Static Lighting Scattering

  • 作用:控制体积雾中静态光照的散射强度

DFAO

  • 作用:使用距离场得到可移动的天空光照的阴影,该有向距离场体积在各刚性网格体周围预计算,以产生环境光遮蔽
    image-20231027163442818

  • DFAO是实时动态的

  • 与SSAO不同,因为遮蔽在场景空间遮挡物中进行计算,所以出屏丢失数据不会导致瑕疵

Foliage

  • 在使用Foliage绘制Actor时,必须启用Affect Distance Field Lighting
    image-20231027164358251
  • 为了更好的效果,可以在Static Mesh Editor中启用Two-Sided Distance Field Generation
    image-20231027164812331

reference

https://www.bilibili.com/video/BV1sJ411B7oX/?vd_source=9421d881d6e2b0ef91b5e1db463db73f

https://www.youtube.com/watch?v=nLFTStnuPaI

https://zhuanlan.zhihu.com/p/377618016

https://zhuanlan.zhihu.com/p/365645774

https://zhuanlan.zhihu.com/p/377618016

https://zhuanlan.zhihu.com/p/447812762