跳转至

Chunky光源估计优化

Chunky面对太阳光和发光方块时,不一定完全靠“随机碰运气”去采样。为了更快收敛,它提供了一组光源估计优化选项。理解这些选项,能帮助你判断为什么有些场景几十SPP就已经很稳,而有些场景几百SPP仍然满是噪点。

太阳采样

开启太阳光时,Chunky默认会使用下一事件估计(Next Event Estimation,NEE来采样太阳,也就是在每次光线与场景相交时,额外估计太阳对该点的贡献,而不必真的等一条随机路径恰好撞上太阳。

这也是为什么普通白天场景通常比室内火把场景更快变干净。

太阳采样的代价

太阳采样虽然能明显加速收敛,但会牺牲一部分特殊效果。文档特别提到,水面上下的焦散等效果在启用太阳采样时可能出不来。

如果你就是想保留这类效果,就要准备接受更高的噪点和更长的渲染时间。

太阳光采样策略

Chunky把这组选项放在光照相关设置中,常见名称是太阳光采样策略(Sunlight Sampling Strategy,SSS。文档提到至少有下面几种思路:

模式 含义 适合场景
默认快速模式 保留太阳采样,加快白天场景收敛。 普通室外宣传图。
HIGH_QUALITY 只部分关闭快速太阳采样。 既想保留部分效果,又不想完全回到纯随机采样。
OFF 完全关闭太阳采样。 焦散、水体特殊光效优先。

如果你只是要常规白天展示图,不建议轻易关闭。

发射器采样策略

对于火把、岩浆、发光石、灯这类发光体,Chunky另外提供发射器采样策略(Emitter Sampling Strategy,ESS。它的目标和太阳采样类似,也是用更主动的方式估计发光体的贡献,从而降低噪点。

默认情况下,发光体并不会像太阳那样天然“很好采”。原因很简单:场景里可能有很多发光体,而且很多离当前像素很远,没必要每次都全部检查。

Emitter Grid在做什么

为了解决“发光体很多”这个问题,Chunky会把世界划分成许多立方体单元,并记录每个单元及其相邻单元里的发光体位置。这套结构由发射器网格(Emitter Grid)支持。

光线命中某个位置后,Chunky只会优先考虑该位置所在单元及附近单元的发光体,而不是把全场景发光体全都算一遍。

这就是为什么Emitter grid size既会影响速度,也会影响ESS效果范围。

ESS各模式怎么选

文档给出的常见模式有:

模式 特点 一般倾向
NONE 不做发射器估计。每样本最快,但噪点最多。 白天场景、发光体不重要时。
ONE 每次相交只采一个随机发射器。 常见折中方案。
ONE_BLOCK ONE更激进,会采一个随机发射器的全部面。 需要更快压低发光噪点时。
ALL 每次都采当前单元和相邻单元中的所有发射器。 每样本最慢,但可能最快收敛。

要注意,“每样本更慢”和“整体更慢”不是一回事。ALL虽然单次计算最贵,但在某些火把、灯带、室内场景里,可能反而更快达到可用结果。

这两个高级选项有什么影响

Emitter grid size

这个值决定发射器网格单元的大小。值越大,被纳入采样考虑的发光体范围可能越广,但每次采样成本也可能上升。它更像是调ESS工作范围的旋钮。

Prevent normal emitter when using emitter sampling

文档提到,在新版ESS里,这个选项能让ESS差异更明显。开启后,更容易看到ESS本身带来的去噪效果;关闭后,结果可能更接近正常发光逻辑,但为了把噪点压下去,往往要渲染更久。

怎么选比较稳

室外白天

  • 先保持太阳采样开启。
  • ESS通常可以维持较保守设置,甚至关闭。

夜景、室内、火把光

  • 重点观察ESS
  • 一般从ONE开始试。
  • 如果噪点主要来自大量发光体,可以继续试ONE_BLOCKALL

水下焦散、特殊水面效果

  • 先评估是否真的需要关闭太阳采样。
  • 关闭前要准备接受明显更长的渲染时间。

一个实际的测试顺序

如果你不确定场景该用哪种设置,可以按这个顺序试:

  1. 先保留默认太阳采样。
  2. ESSNONE切到ONE
  3. 如果发光噪点仍然很重,再试ONE_BLOCKALL
  4. 只有在你明确需要焦散或相关效果时,才考虑关闭太阳采样。

这样通常比一上来乱改所有高级选项更容易看出差别。