GI(全局光照)技术分类体系

一、预烘焙 GI(Pre-baked GI)

计算时机为编辑阶段,运行时不更新数据,仅适用于静态场景 / 物体,核心优势是性能开销极低。

1. 光照贴图(Lightmap)

  • 核心逻辑:将静态物体表面的直接光 + 间接光信息烘焙到 2D 纹理(如 RGBA32 或 BC6H 压缩格式),运行时直接采样纹理获取光照值。
  • 关键特性:
    • 支持 “光照组(Lightmap Group)” 拆分大场景,避免单张纹理精度不足;
    • 可结合 “光照贴图 UV 展开” 优化纹理利用率,减少拉伸失真;
    • 适合细节丰富的静态场景(如建筑、地形)。

2. 静态光照探针(Light Probes - Static)

  • 核心逻辑:在场景中布置采样点,烘焙每个点的空间光照信息(用球谐函数(SH) 或立方体贴图编码),为动态物体提供间接光近似。
  • 关键特性:
    • 不依赖物体表面,仅描述 “空间位置的光照状态”;
    • 动态物体通过插值周围 3-4 个探针数据,获得间接光颜色,解决动态物体与静态场景的光照融合问题;
    • 探针密度决定精度,密集区域(如室内角落)需多布置。

3. Enlighten(预计算实时 GI)

  • 核心逻辑:预计算阶段生成 “辐照度传输(Irradiance Transport)数据”,运行时可修改光源参数(颜色、强度、位置),间接光会实时更新。
  • 关键特性:
    • 介于 “纯预烘焙” 与 “纯实时” 之间,支持有限动态光源;
    • 曾是 Unity 5.x 时代的核心 GI 方案,后因 “预计算时间长、动态物体支持弱” 逐渐被替代;
    • 仅支持静态物体参与间接光交互,动态物体仍需依赖光照探针。

4. Shadowmask(阴影遮罩)

  • 核心逻辑:烘焙静态物体的阴影信息到纹理,运行时叠加到实时光照中,避免动态光源计算静态物体阴影的开销。
  • 子类与特性:
    • 硬阴影遮罩(Hard Shadowmask):仅存储 “阴影有无”(二值化),适合低精度场景;
    • 软阴影遮罩(Soft Shadowmask):存储阴影强度(灰度值),支持柔和阴影过渡;
    • Distance Shadowmask:按距离切换模式(近距离用实时阴影,远距离用烘焙阴影),平衡精度与性能。

 

二、实时 GI(Realtime GI)

计算时机为运行阶段,支持动态场景 / 光源(如光源移动、物体形变),核心优势是灵活性高,物理精度强。

(一)光线追踪类 GI(物理级精度)

通过模拟真实光线传播计算光照,物理正确性最高,依赖硬件加速或优化算法实现实时性。

1. 基础光线追踪算法(按复杂度递进)

(1)光线投射(Ray Casting)
  • 核心逻辑:从相机向每个像素发射一条光线,仅计算光线与场景的 “最近交点”,不考虑反射 / 折射等间接光。
  • 应用场景:
    • 早期伪 3D 游戏(如《Wolfenstein 3D》);
    • 现代游戏的辅助计算(如鼠标拾取、视线检测)。
(2)递归光线追踪(Recursive Ray Tracing / Whitted-Style Ray Tracing)
  • 核心逻辑:在光线投射基础上,对反射 / 透明材质发射次级光线(反射光线、折射光线),递归计算交点颜色,按材质比例叠加贡献。
  • 关键特性:
    • 支持有限次数的直接反射 / 折射(通常 1-3 次);
    • 对漫反射间接光处理简化(如忽略漫反射反弹),无法自然模拟全局光照;
    • 应用于早期影视渲染,现代游戏中极少单独使用。
(3)路径追踪(Path Tracing)
  • 核心逻辑:从相机发射 “光线路径”,与物体相交后随机决定下一次反弹方向(基于材质属性),持续反弹直到光线逃逸或达到最大次数,最终颜色为多条路径的平均值。
  • 关键特性:
    • 物理精度最高,可自然模拟全局光照(如颜色渗透、复杂焦散、间接漫反射);
    • 因随机性需大量采样(路径),画面易产生噪点,依赖AI 降噪技术(如 DLSS、XeSS);
    • 应用场景:
      • 影视级离线渲染(如《阿凡达》特效);
      • 现代游戏实时路径追踪(如《赛博朋克 2077》“光线追踪:超速模式”)。

2. 游戏中常见的光线追踪效果(应用层面)

(1)光线追踪阴影(Ray-Traced Shadows)
  • 核心逻辑:从物体表面点向光源发射阴影光线,判断是否被遮挡,生成 “像素级精确阴影”,支持软阴影(基于光源大小采样)。
  • 优势:替代传统阴影贴图(避免阴影锯齿、漏光问题),应用于《Control》《使命召唤》等游戏。
(2)光线追踪反射(Ray-Traced Reflections)
  • 核心逻辑:从物体表面发射反射光线,计算反射方向的场景交点颜色,生成镜面反射效果(如金属、水面、玻璃幕墙)。
  • 优势:替代屏幕空间反射(SSR),解决 “屏幕外区域无反射” 的问题,应用于《Cyberpunk 2077》《Forza Horizon 5》。
(3)光线追踪折射(Ray-Traced Refractions)
  • 核心逻辑:对透明 / 半透明材质(如玻璃、钻石、水),计算光线折射方向并追踪交点,模拟折射率带来的视觉偏移。
  • 关键细节:支持 “色散效果”(不同波长光线折射角差异),提升真实感,应用于《UE5 Demo:Lumen in the Land of Nanite》。
(4)光线追踪全局光照(Ray-Traced Global Illumination - RTGI)
  • 核心定义:广义术语,指用光线追踪计算间接光照,具体实现分两种:
    • 简化版 RTGI:仅计算 1-2 次间接光反弹(如《古墓丽影:暗影》),平衡性能与效果;
    • 完整路径追踪:支持多次反弹(如《赛博朋克 2077》超速模式),接近影视级光照质量。
  • 依赖条件:必须配合硬件光线追踪(RTX/DXR)和降噪技术,否则无法实时运行。
(5)光线追踪环境光遮蔽(Ray-Traced Ambient Occlusion - RTAO)
  • 核心逻辑:从物体表面点向周围发射多条 “环境光光线”,统计被遮挡的比例,模拟 “凹陷区域暗化” 效果(如墙角、物体缝隙)。
  • 优势:替代传统 SSAO,避免边缘失真,支持动态物体,应用于《Battlefield 2042》。

 

三、混合实时方案(性能优先)

以 “软件计算为主、硬件加速为辅”,平衡实时性与效果,适配中高端硬件(如 PC、主机),核心是 “分层优化 + 技术融合”。

(一)距离场类 GI(SDF-based)

基于带符号距离场(SDF) 计算间接光,SDF 定义 “空间中任意点到最近物体表面的距离”,适合大场景 / 程序化关卡。

1. SDFGI(Godot 4.0+ 专属)

  • 核心逻辑:
    • 预计算或实时生成场景 SDF;
    • 用 “圆锥追踪(Cone Tracing)” 从交点发射圆锥,采样 SDF 获取周围物体信息,计算间接光强度。
  • 关键特性:
    • 半实时更新(光源可动态调整,遮挡物需静态);
    • 支持无限大场景(无光照贴图尺寸限制);
    • 局限:动态遮挡物支持弱,近距离细节精度低于光线追踪。

2. Lumen 中的 SDF 模块(UE5 辅助)

  • 定位:非独立 GI 方案,仅作为 Lumen 的 “中远距离间接光工具”。
  • 核心逻辑:
    • 近距离(<10 米)用 “表面缓存” 存储物体表面光照;
    • 中远距离(10-100 米)用 SDF 圆锥追踪,覆盖大空间;
    • 优势:解决 “表面缓存无法覆盖远距离” 的问题,降低显存占用。

(二)体素类 GI(Voxel-based)

将场景体素化(拆分为 3D 网格单元),在体素中存储光照信息,适合中小型静态 / 半动态场景。

VoxelGI(Godot 专属)

  • 核心逻辑:
    • 将场景转换为 3D 体素网格,烘焙或实时更新每个体素的间接光强度;
    • 物体表面通过采样周围体素获取间接光。
  • 关键特性:
    • 支持静态物体 “接收 + 贡献” 间接光;
    • 仅兼容 Godot 正向渲染后端;
    • 局限:
      • 体素精度决定光照细腻度(高分辨率占用显存高);
      • 动态物体需依赖光照探针补充,大场景效率低于 SDFGI;
    • 现状:未完全被取代,仍适用于独立游戏中小型场景。

(三)屏幕空间类 GI(Screen-space based)

基于屏幕图像数据(深度图、法线图)模拟间接光,轻量化但依赖 “屏幕可见区域”,适合作为高端 GI 的兜底方案。

1. 独立 SSGI(通用技术)

  • 核心逻辑:从当前像素的深度 / 法线信息出发,向周围采样相邻像素的颜色,估算间接光反弹贡献。
  • 关键特性:
    • 无场景预处理,实时性强(仅依赖 GPU 像素 Shader);
    • 局限:
      • 仅覆盖屏幕可见区域(遮挡外区域无光照,易出现 “边缘突变”);
      • 需配合双边滤波等降噪算法,避免采样噪点。

2. 屏幕空间间接照明 SSIL(Godot 专属)

  • 定位:辅助 GI 技术,不可单独使用,需配合 VoxelGI/SDFGI/LightmapGI。
  • 核心逻辑:针对 “小规模细节”(如物体缝隙、凹凸表面)补充间接光,解决主 GI 方案细节不足的问题。

3. Lumen 中的 SSGI 模块(UE5 兜底)

  • 定位:硬件光线追踪不可用时(如移动端、老显卡)的 “近距离间接光替代方案”。
  • 核心逻辑:与硬件 RTX 动态切换 —— 支持 RTX 时用光线追踪,不支持时用 SSGI,保证跨平台兼容性。

(四)引擎专属混合方案

各引擎针对自身渲染管线定制的 “多技术整合框架”,非单一 GI 技术,而是分层协作系统。

1. Lumen(UE5 核心)

  • 本质:分层协作的混合 GI 框架,整合 “表面缓存 + SDF + 辐照度体积 + RTX+SSGI”。
  • 核心逻辑:
    距离范围技术方案目的
    近距离(<10 米) 表面缓存(Surface Cache) 保证细节精度
    中远距离(10-100 米) SDF 圆锥追踪 覆盖大空间,降显存
    动态小物体 辐照度体积(Irradiance Volume) 提供间接光插值
    硬件支持 RTX 硬件光线追踪 加速反射 / 阴影 / 间接光
    硬件不支持 SSGI 兜底 保证跨平台兼容性
  • 优势:跨平台(PC / 主机 / 移动端)、动态场景适配强(光源 / 物体可实时动)。

2. TuanjieGI(团结引擎 实验性):团结引擎 - 手册: TuanjieGI 实时全局光照系统

  • 核心逻辑:整合 “屏幕空间光线追踪 + SDF + 软件降噪”,摆脱对 RTX 硬件依赖。
  • 关键特性:
    • 全实时动态响应(光源 / 物体 / 材质变化);
    • 无需预烘焙,Windows 平台优先;
    • 现状:实验阶段,计划移植到 URP 适配移动端,精度 / 性能仍需优化。

3. HDDAGI(Godot 规划中)

  • 定位:Godot 下一代 GI 方案,目标替代现有 VoxelGI/SDFGI 的局限性。
  • 已知方向:
    • 强化动态遮挡物支持;
    • 降低显存占用;
    • 提升大场景计算效率;
  • 现状:具体细节待 Godot 官方披露,尚未落地。

(五)实时探针技术

针对动态物体的间接光解决方案,通过 “空间采样 + 插值” 提供间接光近似。

1. 动态光照探针(Light Probes - Dynamic)

  • 核心逻辑:实时更新探针数据(如动态光源移动时),响应场景光照变化。
  • 局限:仅适用于小场景 / 少量动态光源,否则性能开销大;大型物体易出现光照不均。

2. Light Probe Proxy Volumes (LPPV)

  • 核心逻辑:为大型动态物体(如角色、车辆)创建 “体积包围盒”,在盒内分布多个虚拟探针,通过插值虚拟探针数据获取间接光。
  • 优势:解决 “单一探针无法覆盖大物体” 的光照不均问题,需与动态光照探针配合使用。

 

四、混合 GI(Mixed GI)

结合 “预烘焙” 与 “实时” 的优势,平衡性能与动态效果,是手游、主机游戏的主流方案。

1. Baked Indirect + 实时直接光

  • 核心逻辑:
    • 预烘焙静态物体的间接光(存储到光照贴图 / 探针);
    • 运行时实时计算直接光(光源照射到物体表面的光线)。
  • 优势:
    • 间接光无实时开销,直接光支持动态调整(颜色、强度);
    • 兼顾性能与动态效果,是 Unity/UE 的默认混合方案。

2. Subtractive 模式

  • 核心逻辑:
    • 预烘焙静态物体的直接光 + 间接光(全静态);
    • 动态物体仅接收实时直接光,不接收间接光。
  • 优势:性能开销极低,适合低端移动端(如早期手游);
  • 局限:动态物体与静态场景光照融合差(无间接光)。

3. Shadowmask + 实时直接光

  • 核心逻辑:
    • 预烘焙静态物体的阴影(存储到 Shadowmask);
    • 运行时实时计算直接光(静态物体直接光用烘焙值,动态物体直接光实时计算);
    • 动态物体阴影实时生成。
  • 优势:平衡阴影质量与性能,适合 “静态场景 + 动态角色” 的游戏(如 MMORPG)。

 

 

 

 

Unity中的全局光照:

Unity 2022! 光照环境4 种技术!_哔哩哔哩_bilibili

image

image

image

image

1.光照贴图+反射探针+Volume自动曝光

2.光照探针

  跟光照贴图比,实时性提升,效果略会下降,例如少了接触阴影(AO),性能会下降,比较是实时计算的。

  光照探针 = 记录辐照度的 “采样点网络”,辐照度则是光照探针传递的 “核心信息”—— 没有辐照度,光照探针就失去了存在的意义;而没有光照探针,动态物体就无法获取环境的辐照度信息。表面颜色 = 材质反照率 × 辐照度

  2.1 Legacy Light Probes(旧版):不支持实时,不支持反射,支持所有管线。需手动放置探针。每个探针会采样周围的光照信息,并将这些信息压缩存储为 3 阶球谐函数(SH)—— 这是一种用数学函数近似表示 “全方向光照” 的方式,

  2.2 Probe Volumes(新版):支持实时,支持反射,仅支持HDRP(未来会支持URP)。自动生成体积内密度探针网格。摒弃了低阶 SH,改用 “光照贴图切片(Light Map Tiles)” 和 “预过滤环境贴图(Prefiltered Environment Maps)” 存储光照信息

3.光线追踪(反射+阴影) + 屏幕空间GI(Ray Tracing)

4.路径追踪:非实时,帧数非常低,噪点多,需要搭配AI降噪

5.Enlighten:Enlighten 是 Unity 中用于实现 ​​实时全局光照(Realtime GI)​​ 的中间件技术,其核心实现 ​​基于软件算法(辐射度算法),现在逐渐被抛弃

 

Unity光追2019版本开始在HDPR(DX12)里支持(需要英伟达20系以上GPU)

参考:设置光线追踪 |高清渲染管线 |17.3.0 --- Set up ray tracing | High Definition Render Pipeline | 17.3.0

image

posted @ 2025-08-20 03:08  JeasonBoy  阅读(49)  评论(0)    收藏  举报