随机分块光照(Stochastic Tile-Based Lighting)—— HypeHype 的移动端光照方案

SIGGRAPH 2025 Advances: STOCHASTIC TILE-BASED LIGHTING IN HYPEHYPE


项目背景与动机

HypeHype 平台简介

  • HypeHype 是一个 用户生成内容(UGC)平台 ,目标设备覆盖从 $99 低端手机到高端 PC
  • 平台已有约 50 万款用户创建的游戏 ,任何人可以游玩或二次创作。
  • 核心理念:让 无技术背景的普通用户 也能轻松、有趣地创作游戏。
  • 演讲者 Jarkko Lempiäinen 加入时,引擎仅支持 带阴影的太阳光(Shadowed Sunlight) ,他开始开发 局部光照(Local Lighting) 方案以提升画面质量。

移动端的硬件约束

  • 内存带宽 是移动端最关键的瓶颈:
    • 低端手机峰值带宽约 15 GB/s ,ALU 算力约 250 GFLOP/s (与 20 年前的 Xbox 360 / PS3 相当)
    • 高端手机峰值带宽约 85 GB/s
    • 对比:Xbox Series X / PS5 Pro 带宽超过 500 GB/s ,算力 12~17 TFLOP/s
  • 移动设备采用 被动散热 ,带宽密集操作会迅速导致 发热和降频(Thermal Throttling)
  • 关键数据:GPU 与 DRAM 之间搬运 1 字节数据 的能耗是一次简单 ALU 运算的 100 倍

移动 GPU 的 Tile-Based Rendering(TBR)架构

  • 移动 GPU 大量依赖 基于分块的渲染(Tile-Based Rendering) 来节省带宽:
    • 画面被切分成小块(Tile),逐块渲染到 片上高速内存(On-chip Memory)
    • 所有三角形光栅化完成后,才将 Tile 数据写回主存(DRAM)
    • 通常使用 无损帧缓冲压缩(Lossless Framebuffer Compression) 进一步减少传输量
  • 算法设计启示
    • 尽量用 Pixel Shader 而非 Compute Shader(充分利用 TBR 架构)
    • 最小化 Render Pass 数量 ,减少 DRAM 来回读写
    • 从头为 fp16 设计算法——移动设备普遍支持 双倍速率 fp16 管线(Double-rate fp16)
    • 减少 分支发散(Branch Divergence) ,优化 VGPR 使用

用户侧的特殊挑战

  • 创作者无法理解性能权衡 ,也不会为不同硬件调节光照参数
  • 光照控制必须 直观、鲁棒 ,让创作简单有趣
  • 必须保证 跨设备一致性 ——在高端 PC 上创建的游戏,在低端安卓设备上也要正常运行
  • 必须应对 不可预测的光源行为
    • 例如:每个敌人死亡时生成一个光源(粉色球),导致 光源聚集(Light Clumping)
    • 创作者可能在房间里直接放 50 个带阴影的灯光
    • 创作者通过 资产库预制件(Prefabs) 拼装场景,预制件自带灯光,场景中灯光数量会快速增长
  • 不能出现 大幅帧率下降或视觉干扰伪影

现有方案分析与不足

Tiled Deferred Lighting(分块延迟光照)

  • 优点 :本地内存访问、Wave 内一致的光照计算路径,GPU 性能好
  • 缺点
    • 光照开销与 每个 Tile 的灯光数量线性增长
    • 依赖美术人员精心控制灯光影响范围——不适合 UGC 平台
    • 在物体 轮廓边缘(Silhouettes) ,单个 Tile 的灯光数量可能非常高
    • 动态光源使光照开销 极度不可预测
    • 一些引擎限制每 Tile 灯光上限,超出后出现 闪烁的 Tile 伪影
    • 灯光裁剪(Light Culling) 本身开销也不小(精确的 Tile Frustum 检测)

ReSTIR(Reservoir-based Spatiotemporal Importance Resampling)

  • 优点 :随机光照的固定开销,不受场景光照复杂度影响
  • 缺点(对移动端而言)
    • 采样在 逐像素 级别进行
    • 均匀采样(Uniform Sampling) 随机访问场景灯光,缓存极不友好 ,增加带宽消耗
    • 均匀采样结果噪声大,需要额外的 时空重采样(Spatiotemporal Resampling) ——又是高带宽操作
    • 逐像素采样导致同一 Wave 内灯光数据和类型随机不同,造成 不一致的数据加载和分支发散
    • 综合来看,在移动端 开销过高

结论

没有现成方案同时满足低端移动端的带宽、算力、散热约束以及 UGC 平台的灯光不可预测性需求,因此开发了 随机分块光照算法(Stochastic Tile-Based Lighting)


随机分块光照算法总览

核心思想:逐 Tile 采样而非逐像素采样

  • 对每个 Tile 存储 一组共享的灯光样本 ,Tile 内所有像素共用
  • 显著降低 内存使用、带宽消耗和 Wave 发散
  • 同一 Tile 内线程走 相同执行路径 ,享受 一致的数据加载(Coherent Data Loads)——与传统 Tiled Deferred 类似

全 Pixel Shader 实现

  • 所有 Pass 都可以用 Pixel Shader 高效实现 ,充分利用 TBR 架构和帧缓冲压缩
  • 在支持的硬件上,Compute Shader 实现可以进一步提升性能

两阶段采样:分层蓄水池采样(Stratified Reservoir Sampling, SRS)

为了以低成本获得高质量的重要性采样,算法采用 两阶段采样

阶段名称Tile 大小PDF 质量目的
第一阶段大块采样(Big-Tile Sampling)128×128 px低成本粗略 PDF从全场景灯光中为每个大块选出候选子集
第二阶段小块重采样(Small-Tile Resampling)更小高质量 PDF(含可见性、BRDF)从大块蓄水池中为小块精选少量灯光

完整流水线

  1. CPU 端 :对场景灯光做 视锥裁剪(Camera FoV Culling)
  2. GPU 第一阶段 :大块采样(Big-Tile Sampling)—— SRS 选出 16 个灯光/大块
  3. GPU 第二阶段 :小块重采样(Small-Tile Resampling)—— 从大块蓄水池中用更精确 PDF 重采样
  4. 延迟阴影 Pass(Deferred Shadow Pass) :对小块灯光样本计算阴影项(与光照着色器 解耦 ,优化性能)
  5. 光照 Pass(Lighting Pass) :读取灯光样本和阴影项,计算 BRDF,应用正确的灯光权重,输出最终光照

设计要点 :重要性函数要尽可能准确地近似每个灯光对 Tile 的影响。例如,若某 Tile 完全处于某灯光的阴影中,理想情况下该灯光不应被选中。但为每个 Tile-灯光对计算精确 PDF 太昂贵,因此用两阶段逐步细化。


大块采样阶段(Big-Tile Sampling)详解

基本参数

  • 大块尺寸:128×128 像素
  • 每个大块的蓄水池容量:16 个不重复灯光
  • 采样算法:分层蓄水池采样(Stratified Reservoir Sampling, SRS)

为什么用 SRS?

  • SRS 是一种 无放回(Without Replacement) 采样算法
  • 确保蓄水池中 无重复灯光 ,高效利用蓄水池空间
  • 维持灯光集合的 多样性和代表性
  • 适合 Pixel Shader 实现——每个蓄水池槽位 独立采样

灯光样本的存储格式

  • 每个样本仅占 32 bit ,包含:
    • 灯光索引(Light Index) :指向视锥裁剪后的灯光缓冲
    • 灯光权重(Light Weight) :PDF 的倒数(
  • 蓄水池以 4×4 像素区域 存储在 Render Target 中,提升缓存一致性
  • 1080p 画面只需一个 60×36 像素 的微小 Render Target

PDF 的计算方法

  1. 层次化 MinMax 深度缓冲(Hierarchical MinMax Depth Buffer) 获取大块的深度范围
    • 128px 大块使用 MinMax 深度缓冲的 LOD 6 (与大块像素足迹一致)
  2. 在深度范围之间构造 Tile 中心线段(Central Line Segment)
  3. 对所有灯光类型使用统一 PDF:计算 全向光(Omni-light)标量照度(Scalar Illuminance) 在线段最近点处的值

PDF 特性

  • 处处为正 ,不引入采样偏差(Bias-free)
  • 计算 快速且低成本
  • 假设 Tile 内像素在深度范围内 大致均匀分布 ——对某些场景可能不准确,但实践中足够
  • 更精确的 PDF 可以提升蓄水池质量,但目前这个简单 PDF 已经够用

SRS 的具体执行流程

分流策略 :将场景灯光分成 16 条独立的流(Streams) ,每条流对应一个蓄水池槽位。

每条流运行 单样本 A-Chao 加权蓄水池采样(1-sample A-Chao Weighted Reservoir Sampling)

迭代过程

  1. 初始化 :每条流从与其槽位索引匹配的场景灯光开始
    • 这种初始排序确保前几盏灯被放入特定槽位,优化性能减少少灯场景的噪声
  2. 后续迭代 :向前跳跃到下一组 16 盏灯,生成 随机偏移(Random Offset) ,用 模 16 运算 偏移流索引
    • 随机化目的 :避免高权重灯光在不同大块和帧之间 竞争同一蓄水池槽位
  3. 重复直到遍历完所有灯光

PRNG 初始化 :为了在 Pixel Shader 实现中确保每个槽位使用相同的随机偏移序列,PRNG 种子设为 大块索引(Big-Tile Index)

采样结果

  • 每个大块蓄水池包含 16 个唯一、无偏(Unbiased)的灯光候选
  • 候选基于其对大块区域的 近似影响力 被概率性地选中

代码流程简述

对大块蓄水池的每个槽位:
  使用描述的随机偏移序列遍历场景灯光
  对每次迭代:
    计算灯光的 PDF
    基于 PDF 概率性地选择/替换当前蓄水池灯光(A-Chao WRS)
  存储最终灯光索引和权重到蓄水池

效果对比

  • 均匀采样(Uniform Sampling) 从 16 个随机灯光中选择 → 噪声严重
  • 大块 SRS 采样 从 16 个重要性采样的灯光中重采样 → 噪声显著降低

关键算法与术语总结

分层蓄水池采样(Stratified Reservoir Sampling, SRS)

  • 基于 A-Chao 加权蓄水池采样(A-Chao Weighted Reservoir Sampling) 的变体
  • 无放回 采样,避免重复
  • 将候选灯光分成多条 分层流(Stratified Streams) ,每个蓄水池槽位从独立流中采样
  • 流间通过随机偏移 交叉打乱 ,提升多样性

重要性采样 PDF 的层次化设计

  • 两阶段从粗到细,在成本与质量之间取得平衡

核心设计哲学

设计选择目的
逐 Tile 采样而非逐像素减少带宽、内存、Wave 发散
两阶段 SRS低成本高质量重要性采样
Pixel Shader 实现适配移动 TBR 架构
fp16利用双倍速率管线
阴影计算与光照着色器解耦独立优化各阶段
固定成本随机采样应对 UGC 不可预测的灯光分布

小分块重采样阶段(Small-Tile Resampling Stage)


基本流程与目标

  • 在大分块(Big-Tile)光源采样完成后,对每个 小分块(Small-Tile) 从大分块储层中 重采样 1~4 个光源 ,用于最终光照计算
  • 重采样同样使用 分层储层采样(Stratified Reservoir Sampling, SRS) ,确保小分块储层中 无重复光源
  • 关键特性 :重采样步骤的开销 与场景光照复杂度无关 ,因为它仅从 固定大小的大分块储层 中进行采样
  • 每个小分块覆盖 256 个像素 ,重采样时根据 小分块中心点位置 选取对应的大分块储层

消除分块伪影(Tiling Artifacts)

问题:规则网格导致的采样相关性

  • 若将小分块像素排列为规则的 16×16px 网格 ,会因 采样相关性(Sampling Correlation) 产生明显的 分块伪影

解决方案:交错采样(Interleaved Sampling)

  • 将小分块像素与 4 个相邻 Tile 交错分布 ,覆盖更大的 32×32px 区域
  • 具体做法:将 64 个 2×2px Quad 分配给 4 个 Tile(分别以红、绿、蓝、黄标识)
  • 采样分布使用 高斯-泊松分布(Gaussian-Poisson Distribution)
    • 让更多采样集中在 Tile 中心
    • 同时避免同一 Tile 的采样点 彼此紧邻
  • 该采样模式在整个渲染图像上 重复铺设

消除大分块边界伪影:随机双线性滤波

  • 交错采样解决了小分块伪影,但仍可看到 方形的大分块光照伪影 ——因为大分块储层在小分块中心处做了 点采样(Point Sampling)
  • 修复方法:将点采样替换为 随机双线性滤波(Stochastic Bilinear Filtering)
    • 在选择大分块储层时,对小分块中心施加 随机偏移(Random Offset)
    • 效果:大分块之间的光照过渡 更平滑 ,消除分块边界伪影
    • 残留的交错小分块纹理非常适合后续 时空降噪(Spatiotemporal Denoising)

更精细的 PDF 评估

PDF 计算方法

  • 小分块重采样使用 更精细的 PDF ,以更好估计光源对该 Tile 的重要性
  • 随机 PDF 评估 :从 64 个 Quad 采样点中随机挑选 4 个 ,计算这些点的平均反射亮度:

  • 当前假设材质和光源为 单色(Monochromatic) ——即分别计算光照亮度权重和 BRDF,再相乘
    • 理想做法 :先计算 RGB 光照 × BRDF 乘积,再做权重——例如 红光照蓝表面 应得到更低的 PDF
    • 当前为 性能妥协 ,代价是增加少量噪声

阴影项对噪声的影响

  • 若 Tile 完全处于阴影中 或所有 表面法线背向光源 ,则该光源 不被选入 光照评估,从而 降低噪声

BRDF 近似选择

  • 初始使用 Lambert BRDF 作为 PDF,后替换为 高光 BRDF(Specular BRDF) 以减少高光噪声
  • 最终发现 Lambert + Blinn-Phong 是一个 足够好且更廉价 的近似,可有效降低最终 Lambert + GGX BRDF 的噪声
  • 目前仅支持 一种光照 BRDF ,未来考虑为 多种 BRDF 分别实现不同的 PDF 近似以优化噪声

性能优化:减少 ALU 和 VGPR 压力

  • 先在 Tile 采样点上对 亮度效率加权的材质参数取平均 ,再统一用于反射亮度计算
  • 减少了 ALU 使用量和 VGPR 寄存器压力

偏差(Bias)问题与缓解

  • 理想条件 :PDF 在 Tile 反射亮度非零的任何位置都应 非零 ,以保持 无偏(Unbiased)
  • 实际问题 :4 个 PDF 采样点可能全部落在阴影中,而 Tile 内其他像素实际被照亮
    • 导致 有偏的光照边缘噪声 ,在 TAA 后表现为轻微的 暗化
    • 在简单光照区域最为明显
  • 缓解方法 :在阴影余弦项乘入 PDF 之前,添加一个 小偏移量(Small Offset)
    • 降噪后偏差基本 不可察觉

SRS 流分割策略(与大分块一致)

  • 对于含 个光源样本的小分块储层,将大分块的 16 个候选样本 拆分为 独立流(Independent Streams)
  • 重采样开销 无关 ——仅受 大分块储层大小小分块 PDF 计算成本 影响
  • 具体流程(以 为例):
    1. 从大分块储层取前 4 个样本分配到各流
    2. 下一批 4 个样本通过 随机偏移洗牌(Shuffle with Random Offset) 分配到各流——减少高重要性光源在相邻小分块间 竞争同一储层槽位 的概率
    3. 重复直到 16 个大分块样本全部处理完毕
    4. 最终得到 4 个唯一的高质量光源样本

储层导出

  • 小分块储层通过像素着色器输出到 1~4 通道 Render Target ,使用与大分块相同的 32bit 格式
  • 理论上可存更多样本,但出于 性能单 Render Target 容量 限制,上限为 4
  • 1080p 分辨率下需要 120×68px 的 Render Target,占用 32KB~128KB 内存

代码逻辑概要

for each slot in small-tile reservoir:
    iterate through big-tile reservoir samples for this slot
    for each sample:
        evaluate light PDF
        calculate resampling PDF (unbias big-tile sampling bias)
        probabilistically pick the light
    store winning light and its weight to reservoir

延迟阴影评估阶段(Deferred Shadow Pass)


核心设计理念

  • 阴影评估在 独立的像素着色器 Pass 中完成,与最终光照评估 解耦
  • 这样可以在 更低分辨率 下评估阴影以提升性能

每 Quad 一次阴影评估

  • 每个 2×2px 小分块 Quad 仅评估 一次 阴影,而非逐像素评估
  • 好处
    • 阴影评估量降低到 1/4
    • 简化光照着色器
    • 减少 Wave 发散(Wave Divergence) 、数据访问和 VGPR 压力
    • 光源类型特定的阴影采样被 隔离在单独着色器中

内存布局

  • 阴影项以 8×8 像素块 存储,对应一个小分块的 64 个 Quad 采样
  • 该组织方式利用了 GPU 像素着色打包到 Wave 的方式,减少发散
  • 使用 8bit 阴影项 + 1bit 时序噪声(Temporal Noise) 消除 TAA 下的色带(Banding)
  • 1080p 下内存占用 0.5MB~2MB

技术解耦的优势

  • 阴影评估可替换为不同技术(如 Shadow Map光线追踪 ),而 不影响最终光照着色器性能

阴影贴图(Shadow Map)实现

阴影图集(Shadow Atlas)

  • 当前使用 持久化、动态管理的 16bpp 阴影图集
  • 图集同时包含 聚光灯(Spot)全向灯(Omni) 的阴影贴图,均为 方形、2 的幂次大小
  • 根据 光源到摄像机的距离 动态调整阴影贴图分辨率,平衡质量与图集空间

渲染流程

光源类型渲染方式拷贝时的额外处理
聚光灯从光源视角渲染常规深度缓冲深度线性化 + 偏移(Bias)
全向灯渲染立方体贴图到深度缓冲立方体面映射到 八面体空间(Octahedral Space) + 深度线性化 + 偏移
  • 两种类型拷贝时都添加 2px 边框 以支持 PCF 滤波

静态与动态阴影贴图

类型更新频率包含几何用途
静态(Static)仅在光源变换或阴影分辨率变化时更新仅静态几何装饰性光照
动态(Dynamic)每帧持续更新(更昂贵)静态 + 动态几何通用光照

负载均衡

  • 使用 优先级队列系统(Priority Queue) 将阴影贴图更新 分摊到多帧 ,避免多张阴影贴图同时更新导致的 帧率尖峰

阴影滤波

  • 使用 4-tap "硬件" PCF 配合 随机 PCF(Stochastic PCF) ,产生更柔和、自然的阴影
  • 每次阴影项评估仅需 1 次 Gather 操作
  • 同时在此阶段应用 IES 光源配置文件(IES Light Profile)聚光灯角度衰减(Angular Spot Falloff)
    • IES 配置文件也在小分块 PDF 评估中使用,以 降低噪声

未来改进计划

  • PCSS(Percentage Closer Soft Shadows) ——接触硬化阴影
  • 屏幕空间光线步进细节阴影(Screen-Space Ray-Marched Detail Shadows)
  • 光线追踪阴影(Ray-Traced Shadows) ——可在高端设备上启用

每 Quad 共享阴影的局限性

  • 物体轮廓(Silhouettes) 处,同一 Quad 内的像素可能需要 截然不同的阴影值 ,共享会引入伪影
  • 缓解 :随机化 Tile 采样 + TAA 在大多数情况下能消除此问题
  • 仍可能引入 轻微的光照边缘偏差 ,但伪影很小
  • 如有必要,可 回退到全分辨率阴影评估 ,以质量换性能

光照评估阶段(Lighting Evaluation Stage)


像素到小分块的映射

  • 首先获取当前像素对应的 小分块光源样本阴影项
  • 由于整个算法在 像素着色器 中运行,需要从屏幕像素 反向映射 到小分块和采样索引
  • 使用 16×16px 反查表(Inverse LUT) :将屏幕空间 Quad 坐标映射到 交错 Tile 索引和样本索引
  • 注:若使用 Compute Shader 则无需反向映射,可直接评估 Tile 像素的光源样本,通过 散射写入(Scattered Writes) 写入光照缓冲

光照累积

  • 对每个光源样本,累积 Lambert + GGX BRDF 贡献:

其中:

  • = 样本权重(Sample Weight)

  • = 阴影项(Shadow Term)

  • = Lambert + GGX BRDF

  • 结果写入 光照缓冲(Lighting Buffer)

核心性能特性

特性说明
固定开销每 Tile 存储固定 1~4 个光源样本,开销与场景光照复杂度 无关
低发散因阴影评估已解耦,光照评估在所有光源类型间 高度统一 ,减少像素着色器发散
进一步优化使用 Compute Shader 可将 Tile 像素连贯打包到 Wave 中,进一步降低发散

降噪策略与 TAA 挑战

目标:用 TAA 代替独立降噪

  • 降低带宽开销 ,计划改进 时间抗锯齿(TAA) 使其兼任降噪器,避免额外的降噪 Pass

核心难点:邻域颜色钳制(Neighborhood Color Clamping)

  • 标准 TAA 使用 3×3 像素邻域 的历史颜色钳制来抑制 鬼影(Ghosting)
  • 在随机光照输入下,某帧的像素邻域可能 没有渲染到关键光源 ,导致颜色范围受限
  • 表现为 闪烁的光照斑块(Flashing Lighting Splotches)

可能的解决方向

  1. 使颜色钳制 更兼容噪声输入
  2. 寻找 替代的鬼影抑制技术
  3. 提供 更适合 TAA 的输入数据
  4. 以上方法的 组合

这仍是 HypeHype 团队 活跃的研发方向

视觉结果与性能分析


采样率对视觉质量的影响

每像素采样数(SPP)对比

  • 1 SPP :噪声更多(符合预期),但经过 TAA 后仍可收敛到可接受的结果
  • 4 SPP :能够还原更多 精细光照细节 ,如复杂几何体上的 锐利高光反射
  • 两者经 TAA 后视觉差异 不大 ,均可达到可接受质量

大分块储层大小对光照的影响

  • 减小大分块样本数 → 场景变暗,尤其是 远处区域
    • 变暗原因:为抑制 萤火虫噪点(Fireflies) 而对光源权重做了 截断(Capping) ,引入了 光照偏差(Lighting Bias)
  • 增大大分块储层 → 噪声降低,光照细节改善
    • 原因:小分块重采样可从 更丰富的候选集 中抽取更相关的光源样本

性能测试平台

硬件定位性能对标功耗
Adreno 610$99 低端安卓手机≈ Xbox 360 / PS3(ALU + 带宽)3W
Adreno 830$1000 高端安卓手机≈ 10 年前的主机/桌面 GPU5W
RTX 4070 Laptop高端笔记本
  • 弱设备使用 更低的渲染分辨率

性能分析结果

无局部光源场景(Sun-Only vs STB 对比)

  • 视觉上 STB 光照与纯太阳光照 几乎一致
    • 唯一区别:STB 以 2×2px Quad 为单位评估阴影,阴影略微 柔和
  • 测量范围仅包含 直接光照 (不含 IBL、SSAO 等)
平台STB 1 SPP 额外开销
Adreno 610+0.66 ms
Adreno 830~+0.35 ms
RTX 4070 Laptop~+0.35 ms
  • Adreno 610 上仅多 0.66ms 即可支持 任意局部光源 ,非常经济
  • 高端平台相对开销比例较高,可通过 Compute Shader 实现和 Pass 合并 进一步缩小差距

50 个局部光源场景(SPP 缩放测试)

  • 纯太阳光照(此场景实际为微弱月光)本身也有一定开销
平台1 SPP 额外开销4 SPP 开销
Adreno 610+1.5 ms较昂贵
Adreno 830~+0.5 ms合理
RTX 4070~+0.5 ms合理
  • 关键观察Small-Tile SRS Pass 在有局部光源时比无光源场景 贵 3 倍 (低端手机上),因为需从 完整大分块储层 中重采样
    • 简易优化:缩小大分块储层 ,以少量噪声换取性能
  • Big-Tile SRS Pass 开销始终极小:即使 500 个光源 ,在所有平台上仅需 0.02 ms
    • 若光源数量进一步增大,可切换为 均匀采样(Uniform Sampling) 以固定开销

结论

  • 提出了一种新的 随机光照算法 ,将光源采样从 逐像素 提升到 逐分块(Per-Tile) 级别
  • 核心收益
    • 大幅降低带宽消耗和分支发散
    • 使 完全动态的复杂光照 成为 低端移动设备 上的可行方案
  • 算法仍在 持续开发中 ,但质量和性能的初步结果 令人鼓舞

未来工作

Compute Shader 优化

  • 为当前的 Pixel Shader Pass 实现 Compute Shader 变体 ,并在不同设备上做 profile
  • Compute Shader 有更多 ALU 和带宽优化空间 ,可能同样惠及移动设备
  • 可将最后三个 Pass( 小分块重采样 + 阴影 + 光照 )合并为 单个 Pass
    • 在 PC / 主机上应有 显著性能提升 ,部分移动设备也可能受益

TAA 降噪改进

  • 光照开销保持固定,但 照亮区域的光源越多,噪声越大
  • 最大挑战 :让 TAA 能很好处理光照算法输出的 噪声图像
  • 目标:通过 改良 TAA 完成降噪,避免引入额外的 时空降噪 Pass
  • 另一可能方向:类似 ReSTIR前帧小分块储层重采样 ,利用时域信息降噪(需进一步研发)

大分块 PDF 质量改进

  • 当前问题 :大分块 PDF 使用 Tile 深度范围的 中心线段 估算光源影响
    • 若深度范围大且像素集中在远近端,中间深度的光源被 过度采样 ,增加噪声
  • 改进方向 :根据 各深度处的像素密度 加权 PDF,使大分块储层样本更高质量
  • 另一改进:若 聚光灯锥体不与大分块视锥相交 ,直接将 PDF 设为 0
  • 大分块采样目前非常高效,有余量花更多 计算周期 提升样本质量以应对更广泛场景

小分块 PDF 质量与性能改进

  • 当前随机 PDF 评估需要 4 次带阴影的辐照度 + BRDF 评估 ——开销较大且在 光照边界 处引入偏差
  • 可能的优化:
    • 使用 Tile 包围盒 + 层级阴影贴图(Hierarchical Shadow Map)单次保守阴影评估
    • 生成 低分辨率 G-Buffer单次保守 BRDF 评估
  • 当前 PDF 未使用 色调映射(Tone Mapping) ,加入后应可进一步 降低噪声

参数调优

  • 现有算法参数(大分块储层大小、大分块像素尺寸、采样模式等)均有 进一步调优空间 ,可能带来质量和性能的 低成本提升

半透明与体积光照支持

  • 当前仅支持 G-Buffer 中的完全不透明表面
  • 半透明光栅化表面 :需将光源采样和储层扩展到 体积(Volumes) ,在光栅化期间高效采样
  • 体积光照(Volumetric Lighting) :可在 体积光线步进(Volumetric Ray Marching) 过程中执行小分块重采样来实现